commit 3bf74c11e02b7d622d01ae09cb364130713346f5 Author: liangzai <2440983361@qq.com> Date: Mon Feb 9 15:18:46 2026 +0800 first commit diff --git a/.env b/.env new file mode 100644 index 0000000..a732844 --- /dev/null +++ b/.env @@ -0,0 +1,21 @@ +VITE_API_URL= +VITE_API_PREFIX=/api/v1 + +VITE_COMPANY_NAME=北京正信环宇科技有限公司 +VITE_APP_NAME=愉悦查 + +VITE_INQUIRE_AES_KEY=ff83609b2b24fc73196aac3d3dfb874f + +VITE_WECHAT_APP_ID=wxb786749edb73eb04 + +VITE_ICP_RECORD=京ICP备2025158088号-1 +VITE_PUBLIC_SECURITY_RECORD=xxxxxxxxxxxxxx +VITE_SHOW_PUBLIC_SECURITY_RECORD=false +VITE_SERVICE_URL=https://work.weixin.qq.com/kfid/kfc93b53b25551b611d +VITE_CHAT_AES_KEY=qw5w6SFE2D1jmxyd +VITE_CHAT_AES_IV=345GDFED433223DF + +VITE_SHARE_TITLE=愉悦查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用 +VITE_SHARE_DESC=提供个人信用评估、入职背调、信贷风控、企业风险监测等服务 +VITE_SHARE_IMG=https://www.yuyuecha.com/logo.png +VITE_TOKEN_VERSION=1.0 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8ee54e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +*.tsbuildinfo diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..17922de --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# bdqr-webview-v2 + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Customize configuration + +See [Vite Configuration Reference](https://vite.dev/config/). + +## Project Setup + +```sh +pnpm install +``` + +### Compile and Hot-Reload for Development + +```sh +pnpm dev +``` + +### Compile and Minify for Production + +```sh +pnpm build +``` diff --git a/env.example b/env.example new file mode 100644 index 0000000..08d4f68 --- /dev/null +++ b/env.example @@ -0,0 +1,23 @@ +VITE_API_URL= +VITE_API_PREFIX=/api/v1 + +VITE_COMPANY_NAME=北京正信环宇科技有限公司 +VITE_APP_NAME=愉悦查 + +VITE_ICP_RECORD=京ICP备2025158088号-1 +VITE_PUBLIC_SECURITY_RECORD= +VITE_SHOW_PUBLIC_SECURITY_RECORD=false + +VITE_SERVICE_URL=https://work.weixin.qq.com/kfid/kfc93b53b25551b611d +VITE_INQUIRE_AES_KEY=ff83609b2b24fc73196aac3d3dfb874f + +VITE_WECHAT_APP_ID=wx442ee1ac1ee75917 + + +VITE_CHAT_AES_KEY=qw5w6SFE2D1jmxyd +VITE_CHAT_AES_IV=345GDFED433223DF + +VITE_SHARE_TITLE=愉悦查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用 +VITE_SHARE_DESC=提供个人信用评估、入职背调、信贷风控、企业风险监测等服务 +VITE_SHARE_IMG=https://www.yuyuecha.com/logo.png +VITE_TOKEN_VERSION=1.0 \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..e0eb7d0 --- /dev/null +++ b/index.html @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + 愉悦查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
加载中
+
+
+ + + + diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..5a1f2d2 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "paths": { + "@/*": ["./src/*"] + } + }, + "exclude": ["node_modules", "dist"] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4cd7997 --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "bdqr-webview-v2", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@vant/area-data": "^2.0.0", + "@vueuse/core": "^11.3.0", + "axios": "^1.7.7", + "crypto-js": "^4.2.0", + "echarts": "^5.5.1", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "pinia": "^2.2.6", + "qrcode": "^1.5.4", + "vant": "^4.9.9", + "vue": "^3.5.12", + "vue-echarts": "^7.0.3", + "vue-router": "^4.4.5" + }, + "devDependencies": { + "@vant/auto-import-resolver": "^1.2.1", + "@vitejs/plugin-vue": "^5.1.4", + "@vitejs/plugin-vue-jsx": "^4.0.1", + "autoprefixer": "^10.4.20", + "pinyin-pro": "^3.27.0", + "postcss": "^8.4.49", + "sass-embedded": "^1.81.0", + "tailwindcss": "^3.4.15", + "terser": "^5.43.1", + "unplugin-auto-import": "^0.18.5", + "unplugin-vue-components": "^0.27.5", + "vite": "^5.4.10", + "vite-plugin-vue-devtools": "^7.5.4" + }, + "packageManager": "pnpm@10.9.0+sha512.0486e394640d3c1fb3c9d43d49cf92879ff74f8516959c235308f5a8f62e2e19528a65cdc2a3058f587cde71eba3d5b56327c8c33a97e4c4051ca48a10ca2d5f" +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..6c2fab3 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3402 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@vant/area-data': + specifier: ^2.0.0 + version: 2.0.0 + '@vueuse/core': + specifier: ^11.3.0 + version: 11.3.0(vue@3.5.13) + axios: + specifier: ^1.7.7 + version: 1.7.7 + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 + echarts: + specifier: ^5.5.1 + version: 5.5.1 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + pinia: + specifier: ^2.2.6 + version: 2.2.6(vue@3.5.13) + qrcode: + specifier: ^1.5.4 + version: 1.5.4 + vant: + specifier: ^4.9.9 + version: 4.9.9(vue@3.5.13) + vue: + specifier: ^3.5.12 + version: 3.5.13 + vue-echarts: + specifier: ^7.0.3 + version: 7.0.3(@vue/runtime-core@3.5.13)(echarts@5.5.1)(vue@3.5.13) + vue-router: + specifier: ^4.4.5 + version: 4.4.5(vue@3.5.13) + devDependencies: + '@vant/auto-import-resolver': + specifier: ^1.2.1 + version: 1.2.1 + '@vitejs/plugin-vue': + specifier: ^5.1.4 + version: 5.2.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13) + '@vitejs/plugin-vue-jsx': + specifier: ^4.0.1 + version: 4.1.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.49) + pinyin-pro: + specifier: ^3.27.0 + version: 3.27.0 + postcss: + specifier: ^8.4.49 + version: 8.4.49 + sass-embedded: + specifier: ^1.81.0 + version: 1.81.0 + tailwindcss: + specifier: ^3.4.15 + version: 3.4.15 + terser: + specifier: ^5.43.1 + version: 5.43.1 + unplugin-auto-import: + specifier: ^0.18.5 + version: 0.18.5(@vueuse/core@11.3.0(vue@3.5.13))(rollup@4.27.3) + unplugin-vue-components: + specifier: ^0.27.5 + version: 0.27.5(@babel/parser@7.26.2)(rollup@4.27.3)(vue@3.5.13) + vite: + specifier: ^5.4.10 + version: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1) + vite-plugin-vue-devtools: + specifier: ^7.5.4 + version: 7.6.4(rollup@4.27.3)(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13) + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-proposal-decorators@7.25.9': + resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.25.9': + resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.25.9': + resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + engines: {node: '>=6.9.0'} + + '@bufbuild/protobuf@2.2.2': + resolution: {integrity: sha512-UNtPCbrwrenpmrXuRwn9jYpPoweNXj8X5sMvYgsqYyaH8jQ6LfUJSk3dJLnBK+6sfYPrF4iAIo5sd5HQ+tg75A==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.27.3': + resolution: {integrity: sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.27.3': + resolution: {integrity: sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.27.3': + resolution: {integrity: sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.27.3': + resolution: {integrity: sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.27.3': + resolution: {integrity: sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.27.3': + resolution: {integrity: sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.27.3': + 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==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.27.3': + resolution: {integrity: sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.27.3': + resolution: {integrity: sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==} + cpu: [x64] + os: [win32] + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + + '@vant/area-data@2.0.0': + resolution: {integrity: sha512-zgP4AA8z09S9QTNgVCCHo9cHjcybrv22RJDYPjuCkecn4SB98T5EoPQh2TwqbQXmUhbaOGgiZGy3OUaUxnY7qg==} + + '@vant/auto-import-resolver@1.2.1': + resolution: {integrity: sha512-czGWW4UolNITkF3qQSQlpHDHAsI3/GHVKbRMmEEpry7NWdnU4p5a5jBi0VApbaLa5g80Hy10XVs3IB+UozoSUw==} + + '@vant/popperjs@1.3.0': + resolution: {integrity: sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==} + + '@vant/use@1.6.0': + resolution: {integrity: sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==} + peerDependencies: + vue: ^3.0.0 + + '@vitejs/plugin-vue-jsx@4.1.0': + resolution: {integrity: sha512-KuRejz7KAFvhXDzOudlaS2IyygAwoAEEMtHAdcRSy/8cA5iKH043Qudcz48zsC0M0vvN5iKwIwNMuWbBYn6/Yg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@5.2.0': + resolution: {integrity: sha512-7n7KdUEtx/7Yl7I/WVAMZ1bEb0eVvXF3ummWTeLcs/9gvo9pJhuLdouSXGjdZ/MKD1acf1I272+X0RMua4/R3g==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + + '@vue/babel-helper-vue-transform-on@1.2.5': + resolution: {integrity: sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==} + + '@vue/babel-plugin-jsx@1.2.5': + resolution: {integrity: sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.2.5': + resolution: {integrity: sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/devtools-core@7.6.4': + resolution: {integrity: sha512-blSwGVYpb7b5TALMjjoBiAl5imuBF7WEOAtaJaBMNikR8SQkm6mkUt4YlIKh9874/qoimwmpDOm+GHBZ4Y5m+g==} + peerDependencies: + vue: ^3.0.0 + + '@vue/devtools-kit@7.6.4': + resolution: {integrity: sha512-Zs86qIXXM9icU0PiGY09PQCle4TI750IPLmAJzW5Kf9n9t5HzSYf6Rz6fyzSwmfMPiR51SUKJh9sXVZu78h2QA==} + + '@vue/devtools-shared@7.6.4': + resolution: {integrity: sha512-nD6CUvBEel+y7zpyorjiUocy0nh77DThZJ0k1GRnJeOmY3ATq2fWijEp7wk37gb023Cb0R396uYh5qMSBQ5WFg==} + + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + + '@vue/runtime-dom@3.5.13': + resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + + '@vue/server-renderer@3.5.13': + resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + peerDependencies: + vue: 3.5.13 + + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + + '@vueuse/core@11.3.0': + resolution: {integrity: sha512-7OC4Rl1f9G8IT6rUfi9JrKiXy4bfmHhZ5x2Ceojy0jnd3mHNEvV4JaRygH362ror6/NZ+Nl+n13LPzGiPN8cKA==} + + '@vueuse/metadata@11.3.0': + resolution: {integrity: sha512-pwDnDspTqtTo2HwfLw4Rp6yywuuBdYnPYDq+mO38ZYKGebCUQC/nVj/PXSiK9HX5otxLz8Fn7ECPbjiRz2CC3g==} + + '@vueuse/shared@11.3.0': + resolution: {integrity: sha512-P8gSSWQeucH5821ek2mn/ciCk+MS/zoRKqdQIM3bHq6p7GXDAJLmnRRKmF5F65sAVJIfzQlwR3aDzwCn10s8hA==} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + birpc@0.2.19: + resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-builder@0.2.0: + resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001680: + resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorjs.io@0.5.2: + resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + echarts@5.5.1: + resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==} + + electron-to-chromium@1.5.63: + resolution: {integrity: sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-stack-parser-es@0.1.5: + resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + immutable@5.0.3: + resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.13: + resolution: {integrity: sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==} + + magic-string@0.30.14: + resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mlly@1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@10.1.0: + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} + engines: {node: '>=18'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinia@2.2.6: + resolution: {integrity: sha512-vIsR8JkDN5Ga2vAxqOE2cJj4VtsHnzpR1Fz30kClxlh0yCHfec6uoMeM3e/ddqmwFUejK3NlrcQa/shnpyT4hA==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.5.11 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + + pinyin-pro@3.27.0: + resolution: {integrity: sha512-Osdgjwe7Rm17N2paDMM47yW+jUIUH3+0RGo8QP39ZTLpTaJVDK0T58hOLaMQJbcMmAebVuK2ePunTEVEx1clNQ==} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + qrcode@1.5.4: + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} + engines: {node: '>=10.13.0'} + hasBin: true + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup@4.27.3: + resolution: {integrity: sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + sass-embedded-android-arm64@1.81.0: + resolution: {integrity: sha512-I36P77/PKAHx6sqOmexO2iEY5kpsmQ1VxcgITZSOxPMQhdB6m4t3bTabfDuWQQmCrqqiNFtLQHeytB65bUqwiw==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [android] + + sass-embedded-android-arm@1.81.0: + resolution: {integrity: sha512-NWEmIuaIEsGFNsIRa+5JpIpPJyZ32H15E85CNZqEIhhwWlk9UNw7vlOCmTH8MtabtnACwC/2NG8VyNa3nxKzUQ==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [android] + + sass-embedded-android-ia32@1.81.0: + resolution: {integrity: sha512-k8V1usXw30w1GVxvrteG1RzgYJzYQ9PfL2aeOqGdroBN7zYTD9VGJXTGcxA4IeeRxmRd7szVW2mKXXS472fh8g==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [android] + + sass-embedded-android-riscv64@1.81.0: + resolution: {integrity: sha512-RXlanyLXEpN/DEehXgLuKPsqT//GYlsGFxKXgRiCc8hIPAueFLQXKJmLWlL3BEtHgmFdbsStIu4aZCcb1hOFlQ==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [android] + + sass-embedded-android-x64@1.81.0: + resolution: {integrity: sha512-RQG0FxGQ1DERNyUDED8+BDVaLIjI+BNg8lVcyqlLZUrWY6NhzjwYEeiN/DNZmMmHtqDucAPNDcsdVUNQqsBy2A==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [android] + + sass-embedded-darwin-arm64@1.81.0: + resolution: {integrity: sha512-gLKbsfII9Ppua76N41ODFnKGutla9qv0OGAas8gxe0jYBeAQFi/1iKQYdNtQtKi4mA9n5TQTqz+HHCKszZCoyA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [darwin] + + sass-embedded-darwin-x64@1.81.0: + resolution: {integrity: sha512-7uMOlT9hD2KUJCbTN2XcfghDxt/rc50ujjfSjSHjX1SYj7mGplkINUXvVbbvvaV2wt6t9vkGkCo5qNbeBhfwBg==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [darwin] + + sass-embedded-linux-arm64@1.81.0: + resolution: {integrity: sha512-jy4bvhdUmqbyw1jv1f3Uxl+MF8EU/Y/GDx4w6XPJm4Ds+mwH/TwnyAwsxxoBhWfnBnW8q2ADy039DlS5p+9csQ==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + + sass-embedded-linux-arm@1.81.0: + resolution: {integrity: sha512-REqR9qM4RchCE3cKqzRy9Q4zigIV82SbSpCi/O4O3oK3pg2I1z7vkb3TiJsivusG/li7aqKZGmYOtAXjruGQDA==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + + sass-embedded-linux-ia32@1.81.0: + resolution: {integrity: sha512-ga/Jk4q5Bn1aC+iHJteDZuLSKnmBUiS3dEg1fnl/Z7GaHIChceKDJOw0zNaILRXI0qT2E1at9MwzoRaRA5Nn/g==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [linux] + + sass-embedded-linux-musl-arm64@1.81.0: + resolution: {integrity: sha512-hpntWf5kjkoxncA1Vh8vhsUOquZ8AROZKx0rQh7ZjSRs4JrYZASz1cfevPKaEM3wIim/nYa6TJqm0VqWsrERlA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + + sass-embedded-linux-musl-arm@1.81.0: + resolution: {integrity: sha512-oWVUvQ4d5Kx1Md75YXZl5z1WBjc+uOhfRRqzkJ3nWc8tjszxJN+y/5EOJavhsNI3/2yoTt6eMXRTqDD9b0tWSQ==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + + sass-embedded-linux-musl-ia32@1.81.0: + resolution: {integrity: sha512-UEXUYkBuqTSwg5JNWiNlfMZ1Jx6SJkaEdx+fsL3Tk099L8cKSoJWH2EPz4ZJjNbyIMymrSdVfymheTeZ8u24xA==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [linux] + + sass-embedded-linux-musl-riscv64@1.81.0: + resolution: {integrity: sha512-1D7OznytbIhx2XDHWi1nuQ8d/uCVR7FGGzELgaU//T8A9DapVTUgPKvB70AF1k4GzChR9IXU/WvFZs2hDTbaJg==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + + sass-embedded-linux-musl-x64@1.81.0: + resolution: {integrity: sha512-ia6VCTeVDQtBSMktXRFza1AZCt8/6aUoujot6Ugf4KmdytQqPJIHxkHaGftm5xwi9WdrMGYS7zgolToPijR11A==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + + sass-embedded-linux-riscv64@1.81.0: + resolution: {integrity: sha512-KbxSsqu4tT1XbhZfJV/5NfW0VtJIGlD58RjqJqJBi8Rnjrx29/upBsuwoDWtsPV/LhoGwwU1XkSa9Q1ifCz4fQ==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + + sass-embedded-linux-x64@1.81.0: + resolution: {integrity: sha512-AMDeVY2T9WAnSFkuQcsOn5c29GRs/TuqnCiblKeXfxCSKym5uKdBl/N7GnTV6OjzoxiJBbkYKdVIaS5By7Gj4g==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + + sass-embedded-win32-arm64@1.81.0: + resolution: {integrity: sha512-YOmBRYnygwWUmCoH14QbMRHjcvCJufeJBAp0m61tOJXIQh64ziwV4mjdqjS/Rx3zhTT4T+nulDUw4d3kLiMncA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [win32] + + sass-embedded-win32-ia32@1.81.0: + resolution: {integrity: sha512-HFfr/C+uLJGGTENdnssuNTmXI/xnIasUuEHEKqI+2J0FHCWT5cpz3PGAOHymPyJcZVYGUG/7gIxIx/d7t0LFYw==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [win32] + + sass-embedded-win32-x64@1.81.0: + resolution: {integrity: sha512-wxj52jDcIAwWcXb7ShZ7vQYKcVUkJ+04YM9l46jDY+qwHzliGuorAUyujLyKTE9heGD3gShJ3wPPC1lXzq6v9A==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [win32] + + sass-embedded@1.81.0: + resolution: {integrity: sha512-uZQ2Faxb1oWBHpeSSzjxnhClbMb3QadN0ql0ZFNuqWOLUxwaVhrMlMhPq6TDPbbfDUjihuwrMCuy695Bgna5RA==} + engines: {node: '>=16.0.0'} + hasBin: true + + scule@1.3.0: + resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + superjson@2.2.1: + resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} + engines: {node: '>=16'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + sync-child-process@1.0.2: + resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==} + engines: {node: '>=16.0.0'} + + sync-message-port@1.1.3: + resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} + engines: {node: '>=16.0.0'} + + tailwindcss@3.4.15: + resolution: {integrity: sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==} + engines: {node: '>=14.0.0'} + hasBin: true + + terser@5.43.1: + resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} + engines: {node: '>=10'} + hasBin: true + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + unimport@3.13.2: + resolution: {integrity: sha512-VKAepeIb6BWLtBl4tmyHY1/7rJgz3ynmZrWf8cU1a+v5Uv/k1gyyAEeGBnYcrwy8bxG5sflxEx4a9VQUqOVHUA==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unplugin-auto-import@0.18.5: + resolution: {integrity: sha512-ZUnayBRlOwNuN9hrM1PymSZK5qDEI8heDD0E3U8Tq4FS6bUxd9VMfJ8tCwWTG5ir6g1yThe/4SVHbFUZQwplOw==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': ^3.2.2 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + + unplugin-vue-components@0.27.5: + resolution: {integrity: sha512-m9j4goBeNwXyNN8oZHHxvIIYiG8FQ9UfmKWeNllpDvhU7btKNNELGPt+o3mckQKuPwrE7e0PvCsx+IWuDSD9Vg==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + '@nuxt/kit': ^3.2.2 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + '@nuxt/kit': + optional: true + + unplugin@1.16.0: + resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} + engines: {node: '>=14.0.0'} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + vant@4.9.9: + resolution: {integrity: sha512-sEw3ljwCza5dazpJqh04b38vCjNr2Id8vb7LOkYQQR/94iERDIm5jcQinhmwlRnwoGCa+JkNwm0jrCafzZJiwA==} + peerDependencies: + vue: ^3.0.0 + + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + + vite-hot-client@0.2.3: + resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 + + vite-plugin-inspect@0.8.8: + resolution: {integrity: sha512-aZlBuXsWUPJFmMK92GIv6lH7LrwG2POu4KJ+aEdcqnu92OAf+rhBnfMDQvxIJPEB7hE2t5EyY/PMgf5aDLT8EA==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + vite-plugin-vue-devtools@7.6.4: + resolution: {integrity: sha512-jxSsLyuETfmZ1OSrmnDp28BG6rmURrP7lkeyHW2gBFDyo+4dUcqVeQNMhbV7uKZn80mDdv06Mysw/5AdGxDvJQ==} + engines: {node: '>=v14.21.3'} + peerDependencies: + vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0 + + vite-plugin-vue-inspector@5.2.0: + resolution: {integrity: sha512-wWxyb9XAtaIvV/Lr7cqB1HIzmHZFVUJsTNm3yAxkS87dgh/Ky4qr2wDEWNxF23fdhVa3jQ8MZREpr4XyiuaRqA==} + peerDependencies: + vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 + + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vue-demi@0.13.11: + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-echarts@7.0.3: + resolution: {integrity: sha512-/jSxNwOsw5+dYAUcwSfkLwKPuzTQ0Cepz1LxCOpj2QcHrrmUa/Ql0eQqMmc1rTPQVrh2JQ29n2dhq75ZcHvRDw==} + peerDependencies: + '@vue/runtime-core': ^3.0.0 + echarts: ^5.5.1 + vue: ^2.7.0 || ^3.1.1 + peerDependenciesMeta: + '@vue/runtime-core': + optional: true + + vue-router@4.4.5: + resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==} + peerDependencies: + vue: ^3.2.0 + + vue@3.5.13: + resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + zrender@5.6.0: + resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@antfu/utils@0.7.10': {} + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.2': {} + + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.26.2': + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.0 + + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.26.0 + + '@babel/helper-plugin-utils@7.25.9': {} + + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + + '@babel/parser@7.26.2': + dependencies: + '@babel/types': 7.26.0 + + '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + + '@babel/traverse@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@bufbuild/protobuf@2.2.2': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@polka/url@1.0.0-next.28': {} + + '@rollup/pluginutils@5.1.3(rollup@4.27.3)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.27.3 + + '@rollup/rollup-android-arm-eabi@4.27.3': + optional: true + + '@rollup/rollup-android-arm64@4.27.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.27.3': + optional: true + + '@rollup/rollup-darwin-x64@4.27.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.27.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.27.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.27.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.27.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.27.3': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.27.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.27.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.27.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.27.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.27.3': + optional: true + + '@types/estree@1.0.6': {} + + '@types/web-bluetooth@0.0.20': {} + + '@vant/area-data@2.0.0': {} + + '@vant/auto-import-resolver@1.2.1': {} + + '@vant/popperjs@1.3.0': {} + + '@vant/use@1.6.0(vue@3.5.13)': + dependencies: + vue: 3.5.13 + + '@vitejs/plugin-vue-jsx@4.1.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13)': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) + vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1) + vue: 3.5.13 + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@5.2.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13)': + dependencies: + vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1) + vue: 3.5.13 + + '@vue/babel-helper-vue-transform-on@1.2.5': {} + + '@vue/babel-plugin-jsx@1.2.5(@babel/core@7.26.0)': + dependencies: + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + '@vue/babel-helper-vue-transform-on': 1.2.5 + '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.26.0) + html-tags: 3.3.1 + svg-tags: 1.0.0 + optionalDependencies: + '@babel/core': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.2.5(@babel/core@7.26.0)': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/parser': 7.26.2 + '@vue/compiler-sfc': 3.5.13 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.13': + dependencies: + '@babel/parser': 7.26.2 + '@vue/shared': 3.5.13 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.13': + dependencies: + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/compiler-sfc@3.5.13': + dependencies: + '@babel/parser': 7.26.2 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + estree-walker: 2.0.2 + magic-string: 0.30.13 + postcss: 8.4.49 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.13': + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/devtools-api@6.6.4': {} + + '@vue/devtools-core@7.6.4(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13)': + dependencies: + '@vue/devtools-kit': 7.6.4 + '@vue/devtools-shared': 7.6.4 + mitt: 3.0.1 + nanoid: 3.3.7 + pathe: 1.1.2 + vite-hot-client: 0.2.3(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1)) + vue: 3.5.13 + transitivePeerDependencies: + - vite + + '@vue/devtools-kit@7.6.4': + dependencies: + '@vue/devtools-shared': 7.6.4 + birpc: 0.2.19 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.1 + + '@vue/devtools-shared@7.6.4': + dependencies: + rfdc: 1.4.1 + + '@vue/reactivity@3.5.13': + dependencies: + '@vue/shared': 3.5.13 + + '@vue/runtime-core@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/runtime-dom@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/runtime-core': 3.5.13 + '@vue/shared': 3.5.13 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.13(vue@3.5.13)': + dependencies: + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13 + + '@vue/shared@3.5.13': {} + + '@vueuse/core@11.3.0(vue@3.5.13)': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 11.3.0 + '@vueuse/shared': 11.3.0(vue@3.5.13) + vue-demi: 0.14.10(vue@3.5.13) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@11.3.0': {} + + '@vueuse/shared@11.3.0(vue@3.5.13)': + dependencies: + vue-demi: 0.14.10(vue@3.5.13) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + acorn@8.14.0: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + asynckit@0.4.0: {} + + autoprefixer@10.4.20(postcss@8.4.49): + dependencies: + browserslist: 4.24.2 + caniuse-lite: 1.0.30001680 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + binary-extensions@2.3.0: {} + + birpc@0.2.19: {} + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.2: + dependencies: + caniuse-lite: 1.0.30001680 + electron-to-chromium: 1.5.63 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + + buffer-builder@0.2.0: {} + + buffer-from@1.1.2: {} + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + + camelcase-css@2.0.1: {} + + camelcase@5.3.1: {} + + caniuse-lite@1.0.30001680: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorjs.io@0.5.2: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@2.20.3: {} + + commander@4.1.1: {} + + confbox@0.1.8: {} + + convert-source-map@2.0.0: {} + + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-js@4.2.0: {} + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + default-browser-id@5.0.0: {} + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + + define-lazy-prop@3.0.0: {} + + delayed-stream@1.0.0: {} + + didyoumean@1.2.2: {} + + dijkstrajs@1.0.3: {} + + dlv@1.1.3: {} + + eastasianwidth@0.2.0: {} + + echarts@5.5.1: + dependencies: + tslib: 2.3.0 + zrender: 5.6.0 + + electron-to-chromium@1.5.63: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + entities@4.5.0: {} + + error-stack-parser-es@0.1.5: {} + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.2.0: {} + + escape-string-regexp@5.0.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + execa@8.0.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + follow-redirects@1.15.9: {} + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fraction.js@4.3.7: {} + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-stream@8.0.1: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + globals@11.12.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hookable@5.5.3: {} + + html-tags@3.3.1: {} + + human-signals@5.0.0: {} + + immutable@5.0.3: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-number@7.0.0: {} + + is-stream@3.0.0: {} + + is-what@4.1.16: {} + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.6: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.0: {} + + jsesc@3.0.2: {} + + json5@2.2.3: {} + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + kolorist@1.8.0: {} + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + local-pkg@0.5.1: + dependencies: + mlly: 1.7.3 + pkg-types: 1.2.1 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash@4.17.21: {} + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.13: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magic-string@0.30.14: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@4.0.0: {} + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minipass@7.1.2: {} + + mitt@3.0.1: {} + + mlly@1.7.3: + dependencies: + acorn: 8.14.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + + mrmime@2.0.0: {} + + ms@2.1.3: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.7: {} + + node-releases@2.0.18: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + nprogress@0.2.0: {} + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + open@10.1.0: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + pathe@1.1.2: {} + + perfect-debounce@1.0.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pify@2.3.0: {} + + pinia@2.2.6(vue@3.5.13): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.13 + vue-demi: 0.14.10(vue@3.5.13) + + pinyin-pro@3.27.0: {} + + pirates@4.0.6: {} + + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.3 + pathe: 1.1.2 + + pngjs@5.0.0: {} + + postcss-import@15.1.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.49): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.49 + + postcss-load-config@4.0.2(postcss@8.4.49): + dependencies: + lilconfig: 3.1.2 + yaml: 2.6.1 + optionalDependencies: + postcss: 8.4.49 + + postcss-nested@6.2.0(postcss@8.4.49): + dependencies: + postcss: 8.4.49 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.49: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + proxy-from-env@1.1.0: {} + + qrcode@1.5.4: + dependencies: + dijkstrajs: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + queue-microtask@1.2.3: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + require-directory@2.1.1: {} + + require-main-filename@2.0.0: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.0.4: {} + + rfdc@1.4.1: {} + + rollup@4.27.3: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.27.3 + '@rollup/rollup-android-arm64': 4.27.3 + '@rollup/rollup-darwin-arm64': 4.27.3 + '@rollup/rollup-darwin-x64': 4.27.3 + '@rollup/rollup-freebsd-arm64': 4.27.3 + '@rollup/rollup-freebsd-x64': 4.27.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.27.3 + '@rollup/rollup-linux-arm-musleabihf': 4.27.3 + '@rollup/rollup-linux-arm64-gnu': 4.27.3 + '@rollup/rollup-linux-arm64-musl': 4.27.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.27.3 + '@rollup/rollup-linux-riscv64-gnu': 4.27.3 + '@rollup/rollup-linux-s390x-gnu': 4.27.3 + '@rollup/rollup-linux-x64-gnu': 4.27.3 + '@rollup/rollup-linux-x64-musl': 4.27.3 + '@rollup/rollup-win32-arm64-msvc': 4.27.3 + '@rollup/rollup-win32-ia32-msvc': 4.27.3 + '@rollup/rollup-win32-x64-msvc': 4.27.3 + fsevents: 2.3.3 + + run-applescript@7.0.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.1: + dependencies: + tslib: 2.8.1 + + sass-embedded-android-arm64@1.81.0: + optional: true + + sass-embedded-android-arm@1.81.0: + optional: true + + sass-embedded-android-ia32@1.81.0: + optional: true + + sass-embedded-android-riscv64@1.81.0: + optional: true + + sass-embedded-android-x64@1.81.0: + optional: true + + sass-embedded-darwin-arm64@1.81.0: + optional: true + + sass-embedded-darwin-x64@1.81.0: + optional: true + + sass-embedded-linux-arm64@1.81.0: + optional: true + + sass-embedded-linux-arm@1.81.0: + optional: true + + sass-embedded-linux-ia32@1.81.0: + optional: true + + sass-embedded-linux-musl-arm64@1.81.0: + optional: true + + sass-embedded-linux-musl-arm@1.81.0: + optional: true + + sass-embedded-linux-musl-ia32@1.81.0: + optional: true + + sass-embedded-linux-musl-riscv64@1.81.0: + optional: true + + sass-embedded-linux-musl-x64@1.81.0: + optional: true + + sass-embedded-linux-riscv64@1.81.0: + optional: true + + sass-embedded-linux-x64@1.81.0: + optional: true + + sass-embedded-win32-arm64@1.81.0: + optional: true + + sass-embedded-win32-ia32@1.81.0: + optional: true + + sass-embedded-win32-x64@1.81.0: + optional: true + + sass-embedded@1.81.0: + dependencies: + '@bufbuild/protobuf': 2.2.2 + buffer-builder: 0.2.0 + colorjs.io: 0.5.2 + immutable: 5.0.3 + rxjs: 7.8.1 + supports-color: 8.1.1 + sync-child-process: 1.0.2 + varint: 6.0.0 + optionalDependencies: + sass-embedded-android-arm: 1.81.0 + sass-embedded-android-arm64: 1.81.0 + sass-embedded-android-ia32: 1.81.0 + sass-embedded-android-riscv64: 1.81.0 + sass-embedded-android-x64: 1.81.0 + sass-embedded-darwin-arm64: 1.81.0 + sass-embedded-darwin-x64: 1.81.0 + sass-embedded-linux-arm: 1.81.0 + sass-embedded-linux-arm64: 1.81.0 + sass-embedded-linux-ia32: 1.81.0 + sass-embedded-linux-musl-arm: 1.81.0 + sass-embedded-linux-musl-arm64: 1.81.0 + sass-embedded-linux-musl-ia32: 1.81.0 + sass-embedded-linux-musl-riscv64: 1.81.0 + sass-embedded-linux-musl-x64: 1.81.0 + sass-embedded-linux-riscv64: 1.81.0 + sass-embedded-linux-x64: 1.81.0 + sass-embedded-win32-arm64: 1.81.0 + sass-embedded-win32-ia32: 1.81.0 + sass-embedded-win32-x64: 1.81.0 + + scule@1.3.0: {} + + semver@6.3.1: {} + + set-blocking@2.0.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@4.1.0: {} + + sirv@3.0.0: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + speakingurl@14.0.1: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-final-newline@3.0.0: {} + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + superjson@2.2.1: + dependencies: + copy-anything: 3.0.5 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-tags@1.0.0: {} + + sync-child-process@1.0.2: + dependencies: + sync-message-port: 1.1.3 + + sync-message-port@1.1.3: {} + + tailwindcss@3.4.15: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.49 + postcss-import: 15.1.0(postcss@8.4.49) + postcss-js: 4.0.1(postcss@8.4.49) + postcss-load-config: 4.0.2(postcss@8.4.49) + postcss-nested: 6.2.0(postcss@8.4.49) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + terser@5.43.1: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.14.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + totalist@3.0.1: {} + + ts-interface-checker@0.1.13: {} + + tslib@2.3.0: {} + + tslib@2.8.1: {} + + ufo@1.5.4: {} + + unimport@3.13.2(rollup@4.27.3): + dependencies: + '@rollup/pluginutils': 5.1.3(rollup@4.27.3) + acorn: 8.14.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + fast-glob: 3.3.2 + local-pkg: 0.5.1 + magic-string: 0.30.13 + mlly: 1.7.3 + pathe: 1.1.2 + pkg-types: 1.2.1 + scule: 1.3.0 + strip-literal: 2.1.0 + unplugin: 1.16.0 + transitivePeerDependencies: + - rollup + + universalify@2.0.1: {} + + unplugin-auto-import@0.18.5(@vueuse/core@11.3.0(vue@3.5.13))(rollup@4.27.3): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.3(rollup@4.27.3) + fast-glob: 3.3.2 + local-pkg: 0.5.1 + magic-string: 0.30.13 + minimatch: 9.0.5 + unimport: 3.13.2(rollup@4.27.3) + unplugin: 1.16.0 + optionalDependencies: + '@vueuse/core': 11.3.0(vue@3.5.13) + transitivePeerDependencies: + - rollup + + unplugin-vue-components@0.27.5(@babel/parser@7.26.2)(rollup@4.27.3)(vue@3.5.13): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.3(rollup@4.27.3) + chokidar: 3.6.0 + debug: 4.3.7 + fast-glob: 3.3.2 + local-pkg: 0.5.1 + magic-string: 0.30.14 + minimatch: 9.0.5 + mlly: 1.7.3 + unplugin: 1.16.0 + vue: 3.5.13 + optionalDependencies: + '@babel/parser': 7.26.2 + transitivePeerDependencies: + - rollup + - supports-color + + unplugin@1.16.0: + dependencies: + acorn: 8.14.0 + webpack-virtual-modules: 0.6.2 + + update-browserslist-db@1.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + util-deprecate@1.0.2: {} + + vant@4.9.9(vue@3.5.13): + dependencies: + '@vant/popperjs': 1.3.0 + '@vant/use': 1.6.0(vue@3.5.13) + '@vue/shared': 3.5.13 + vue: 3.5.13 + + varint@6.0.0: {} + + vite-hot-client@0.2.3(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1)): + dependencies: + vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1) + + vite-plugin-inspect@0.8.8(rollup@4.27.3)(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.3(rollup@4.27.3) + debug: 4.3.7 + error-stack-parser-es: 0.1.5 + fs-extra: 11.2.0 + open: 10.1.0 + perfect-debounce: 1.0.0 + picocolors: 1.1.1 + sirv: 3.0.0 + vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1) + transitivePeerDependencies: + - rollup + - supports-color + + vite-plugin-vue-devtools@7.6.4(rollup@4.27.3)(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13): + dependencies: + '@vue/devtools-core': 7.6.4(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13) + '@vue/devtools-kit': 7.6.4 + '@vue/devtools-shared': 7.6.4 + execa: 8.0.1 + sirv: 3.0.0 + vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1) + vite-plugin-inspect: 0.8.8(rollup@4.27.3)(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1)) + vite-plugin-vue-inspector: 5.2.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1)) + transitivePeerDependencies: + - '@nuxt/kit' + - rollup + - supports-color + - vue + + vite-plugin-vue-inspector@5.2.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1)): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) + '@vue/compiler-dom': 3.5.13 + kolorist: 1.8.0 + magic-string: 0.30.13 + vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1) + transitivePeerDependencies: + - supports-color + + vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.49 + rollup: 4.27.3 + optionalDependencies: + fsevents: 2.3.3 + sass-embedded: 1.81.0 + terser: 5.43.1 + + vue-demi@0.13.11(vue@3.5.13): + dependencies: + vue: 3.5.13 + + vue-demi@0.14.10(vue@3.5.13): + dependencies: + vue: 3.5.13 + + vue-echarts@7.0.3(@vue/runtime-core@3.5.13)(echarts@5.5.1)(vue@3.5.13): + dependencies: + echarts: 5.5.1 + vue: 3.5.13 + vue-demi: 0.13.11(vue@3.5.13) + optionalDependencies: + '@vue/runtime-core': 3.5.13 + transitivePeerDependencies: + - '@vue/composition-api' + + vue-router@4.4.5(vue@3.5.13): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.13 + + vue@3.5.13: + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13) + '@vue/shared': 3.5.13 + + webpack-virtual-modules@0.6.2: {} + + which-module@2.0.1: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + y18n@4.0.3: {} + + yallist@3.1.1: {} + + yaml@2.6.1: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + zrender@5.6.0: + dependencies: + tslib: 2.3.0 diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..49c0612 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..47eaaa5 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/image/clickCaptcha.jpg b/public/image/clickCaptcha.jpg new file mode 100644 index 0000000..8846f9a Binary files /dev/null and b/public/image/clickCaptcha.jpg differ diff --git a/public/image/help/13.jpg b/public/image/help/13.jpg new file mode 100644 index 0000000..6241387 Binary files /dev/null and b/public/image/help/13.jpg differ diff --git a/public/image/help/14.jpg b/public/image/help/14.jpg new file mode 100644 index 0000000..7f26b0c Binary files /dev/null and b/public/image/help/14.jpg differ diff --git a/public/image/help/15.jpg b/public/image/help/15.jpg new file mode 100644 index 0000000..1bae74d Binary files /dev/null and b/public/image/help/15.jpg differ diff --git a/public/image/help/18.jpg b/public/image/help/18.jpg new file mode 100644 index 0000000..7e6b530 Binary files /dev/null and b/public/image/help/18.jpg differ diff --git a/public/image/help/19.jpg b/public/image/help/19.jpg new file mode 100644 index 0000000..070d849 Binary files /dev/null and b/public/image/help/19.jpg differ diff --git a/public/image/help/20.jpg b/public/image/help/20.jpg new file mode 100644 index 0000000..2c296cb Binary files /dev/null and b/public/image/help/20.jpg differ diff --git a/public/image/help/21.jpg b/public/image/help/21.jpg new file mode 100644 index 0000000..9615b9d Binary files /dev/null and b/public/image/help/21.jpg differ diff --git a/public/image/help/22.jpg b/public/image/help/22.jpg new file mode 100644 index 0000000..753a147 Binary files /dev/null and b/public/image/help/22.jpg differ diff --git a/public/image/help/23.jpg b/public/image/help/23.jpg new file mode 100644 index 0000000..e093d19 Binary files /dev/null and b/public/image/help/23.jpg differ diff --git a/public/image/help/24.jpg b/public/image/help/24.jpg new file mode 100644 index 0000000..0a53d17 Binary files /dev/null and b/public/image/help/24.jpg differ diff --git a/public/image/help/25.jpg b/public/image/help/25.jpg new file mode 100644 index 0000000..142d87a Binary files /dev/null and b/public/image/help/25.jpg differ diff --git a/public/image/help/direct-earnings.jpg b/public/image/help/direct-earnings.jpg new file mode 100644 index 0000000..853b971 Binary files /dev/null and b/public/image/help/direct-earnings.jpg differ diff --git a/public/image/help/invite-earnings.jpg b/public/image/help/invite-earnings.jpg new file mode 100644 index 0000000..280ef09 Binary files /dev/null and b/public/image/help/invite-earnings.jpg differ diff --git a/public/image/help/invite-step1.jpg b/public/image/help/invite-step1.jpg new file mode 100644 index 0000000..8c5d608 Binary files /dev/null and b/public/image/help/invite-step1.jpg differ diff --git a/public/image/help/invite-step2.jpg b/public/image/help/invite-step2.jpg new file mode 100644 index 0000000..43eaa78 Binary files /dev/null and b/public/image/help/invite-step2.jpg differ diff --git a/public/image/help/invite-step3.jpg b/public/image/help/invite-step3.jpg new file mode 100644 index 0000000..4d965f3 Binary files /dev/null and b/public/image/help/invite-step3.jpg differ diff --git a/public/image/help/report-calculation.jpg b/public/image/help/report-calculation.jpg new file mode 100644 index 0000000..5ddb0e4 Binary files /dev/null and b/public/image/help/report-calculation.jpg differ diff --git a/public/image/help/report-cost.jpg b/public/image/help/report-cost.jpg new file mode 100644 index 0000000..03e3438 Binary files /dev/null and b/public/image/help/report-cost.jpg differ diff --git a/public/image/help/report-efficiency.jpg b/public/image/help/report-efficiency.jpg new file mode 100644 index 0000000..67ac4d5 Binary files /dev/null and b/public/image/help/report-efficiency.jpg differ diff --git a/public/image/help/report-push.jpg b/public/image/help/report-push.jpg new file mode 100644 index 0000000..67b17dd Binary files /dev/null and b/public/image/help/report-push.jpg differ diff --git a/public/image/help/report-secret-1.jpg b/public/image/help/report-secret-1.jpg new file mode 100644 index 0000000..571889f Binary files /dev/null and b/public/image/help/report-secret-1.jpg differ diff --git a/public/image/help/report-secret-2.jpg b/public/image/help/report-secret-2.jpg new file mode 100644 index 0000000..c147691 Binary files /dev/null and b/public/image/help/report-secret-2.jpg differ diff --git a/public/image/help/report-step1.jpg b/public/image/help/report-step1.jpg new file mode 100644 index 0000000..7ae6521 Binary files /dev/null and b/public/image/help/report-step1.jpg differ diff --git a/public/image/help/report-step2.jpg b/public/image/help/report-step2.jpg new file mode 100644 index 0000000..4895c10 Binary files /dev/null and b/public/image/help/report-step2.jpg differ diff --git a/public/image/help/report-step3.jpg b/public/image/help/report-step3.jpg new file mode 100644 index 0000000..32595f7 Binary files /dev/null and b/public/image/help/report-step3.jpg differ diff --git a/public/image/help/report-step4.jpg b/public/image/help/report-step4.jpg new file mode 100644 index 0000000..7200a29 Binary files /dev/null and b/public/image/help/report-step4.jpg differ diff --git a/public/image/help/report-step5.jpg b/public/image/help/report-step5.jpg new file mode 100644 index 0000000..163c528 Binary files /dev/null and b/public/image/help/report-step5.jpg differ diff --git a/public/image/help/report-types.jpg b/public/image/help/report-types.jpg new file mode 100644 index 0000000..e715acc Binary files /dev/null and b/public/image/help/report-types.jpg differ diff --git a/public/image/help/vip-guide.jpg b/public/image/help/vip-guide.jpg new file mode 100644 index 0000000..aac5868 Binary files /dev/null and b/public/image/help/vip-guide.jpg differ diff --git a/public/image/poster/backgroundcheck/backgroundcheck_01.png b/public/image/poster/backgroundcheck/backgroundcheck_01.png new file mode 100644 index 0000000..be3b178 Binary files /dev/null and b/public/image/poster/backgroundcheck/backgroundcheck_01.png differ diff --git a/public/image/poster/backgroundcheck/backgroundcheck_02.png b/public/image/poster/backgroundcheck/backgroundcheck_02.png new file mode 100644 index 0000000..24f21eb Binary files /dev/null and b/public/image/poster/backgroundcheck/backgroundcheck_02.png differ diff --git a/public/image/poster/backgroundcheck/backgroundcheck_03.png b/public/image/poster/backgroundcheck/backgroundcheck_03.png new file mode 100644 index 0000000..861bbcb Binary files /dev/null and b/public/image/poster/backgroundcheck/backgroundcheck_03.png differ diff --git a/public/image/poster/backgroundcheck/backgroundcheck_04.png b/public/image/poster/backgroundcheck/backgroundcheck_04.png new file mode 100644 index 0000000..bbe229e Binary files /dev/null and b/public/image/poster/backgroundcheck/backgroundcheck_04.png differ diff --git a/public/image/poster/companyinfo/companyinfo_01.png b/public/image/poster/companyinfo/companyinfo_01.png new file mode 100644 index 0000000..7108a95 Binary files /dev/null and b/public/image/poster/companyinfo/companyinfo_01.png differ diff --git a/public/image/poster/companyinfo/companyinfo_02.png b/public/image/poster/companyinfo/companyinfo_02.png new file mode 100644 index 0000000..2aa1aab Binary files /dev/null and b/public/image/poster/companyinfo/companyinfo_02.png differ diff --git a/public/image/poster/companyinfo/companyinfo_03.png b/public/image/poster/companyinfo/companyinfo_03.png new file mode 100644 index 0000000..9491a1b Binary files /dev/null and b/public/image/poster/companyinfo/companyinfo_03.png differ diff --git a/public/image/poster/companyinfo/companyinfo_04.png b/public/image/poster/companyinfo/companyinfo_04.png new file mode 100644 index 0000000..f19dbd9 Binary files /dev/null and b/public/image/poster/companyinfo/companyinfo_04.png differ diff --git a/public/image/poster/consumerFinanceReport/consumerFinanceReport_01.png b/public/image/poster/consumerFinanceReport/consumerFinanceReport_01.png new file mode 100644 index 0000000..afc337d Binary files /dev/null and b/public/image/poster/consumerFinanceReport/consumerFinanceReport_01.png differ diff --git a/public/image/poster/consumerFinanceReport/consumerFinanceReport_02.png b/public/image/poster/consumerFinanceReport/consumerFinanceReport_02.png new file mode 100644 index 0000000..0669e65 Binary files /dev/null and b/public/image/poster/consumerFinanceReport/consumerFinanceReport_02.png differ diff --git a/public/image/poster/consumerFinanceReport/consumerFinanceReport_03.png b/public/image/poster/consumerFinanceReport/consumerFinanceReport_03.png new file mode 100644 index 0000000..3db7258 Binary files /dev/null and b/public/image/poster/consumerFinanceReport/consumerFinanceReport_03.png differ diff --git a/public/image/poster/consumerFinanceReport/consumerFinanceReport_04.png b/public/image/poster/consumerFinanceReport/consumerFinanceReport_04.png new file mode 100644 index 0000000..34c76e9 Binary files /dev/null and b/public/image/poster/consumerFinanceReport/consumerFinanceReport_04.png differ diff --git a/public/image/poster/homeservice/homeservice_01.png b/public/image/poster/homeservice/homeservice_01.png new file mode 100644 index 0000000..591807b Binary files /dev/null and b/public/image/poster/homeservice/homeservice_01.png differ diff --git a/public/image/poster/homeservice/homeservice_02.png b/public/image/poster/homeservice/homeservice_02.png new file mode 100644 index 0000000..3653516 Binary files /dev/null and b/public/image/poster/homeservice/homeservice_02.png differ diff --git a/public/image/poster/homeservice/homeservice_03.png b/public/image/poster/homeservice/homeservice_03.png new file mode 100644 index 0000000..444789f Binary files /dev/null and b/public/image/poster/homeservice/homeservice_03.png differ diff --git a/public/image/poster/homeservice/homeservice_04.png b/public/image/poster/homeservice/homeservice_04.png new file mode 100644 index 0000000..9d51695 Binary files /dev/null and b/public/image/poster/homeservice/homeservice_04.png differ diff --git a/public/image/poster/invitation/invitation_01.png b/public/image/poster/invitation/invitation_01.png new file mode 100644 index 0000000..53576f6 Binary files /dev/null and b/public/image/poster/invitation/invitation_01.png differ diff --git a/public/image/poster/invitation/invitation_02.png b/public/image/poster/invitation/invitation_02.png new file mode 100644 index 0000000..61891b3 Binary files /dev/null and b/public/image/poster/invitation/invitation_02.png differ diff --git a/public/image/poster/invitation/invitation_03.png b/public/image/poster/invitation/invitation_03.png new file mode 100644 index 0000000..9e1ca2b Binary files /dev/null and b/public/image/poster/invitation/invitation_03.png differ diff --git a/public/image/poster/invitation/invitation_04.png b/public/image/poster/invitation/invitation_04.png new file mode 100644 index 0000000..4cc71f0 Binary files /dev/null and b/public/image/poster/invitation/invitation_04.png differ diff --git a/public/image/poster/marriage/marriage_01.png b/public/image/poster/marriage/marriage_01.png new file mode 100644 index 0000000..51d5ad2 Binary files /dev/null and b/public/image/poster/marriage/marriage_01.png differ diff --git a/public/image/poster/marriage/marriage_02.png b/public/image/poster/marriage/marriage_02.png new file mode 100644 index 0000000..0f11f65 Binary files /dev/null and b/public/image/poster/marriage/marriage_02.png differ diff --git a/public/image/poster/marriage/marriage_03.png b/public/image/poster/marriage/marriage_03.png new file mode 100644 index 0000000..21e55f6 Binary files /dev/null and b/public/image/poster/marriage/marriage_03.png differ diff --git a/public/image/poster/marriage/marriage_04.png b/public/image/poster/marriage/marriage_04.png new file mode 100644 index 0000000..0f8205f Binary files /dev/null and b/public/image/poster/marriage/marriage_04.png differ diff --git a/public/image/poster/riskassessment/riskassessment_01.png b/public/image/poster/riskassessment/riskassessment_01.png new file mode 100644 index 0000000..8191c3f Binary files /dev/null and b/public/image/poster/riskassessment/riskassessment_01.png differ diff --git a/public/image/poster/riskassessment/riskassessment_02.png b/public/image/poster/riskassessment/riskassessment_02.png new file mode 100644 index 0000000..c165cdf Binary files /dev/null and b/public/image/poster/riskassessment/riskassessment_02.png differ diff --git a/public/image/poster/riskassessment/riskassessment_03.png b/public/image/poster/riskassessment/riskassessment_03.png new file mode 100644 index 0000000..a18d3a3 Binary files /dev/null and b/public/image/poster/riskassessment/riskassessment_03.png differ diff --git a/public/image/poster/riskassessment/riskassessment_04.png b/public/image/poster/riskassessment/riskassessment_04.png new file mode 100644 index 0000000..50ba5f1 Binary files /dev/null and b/public/image/poster/riskassessment/riskassessment_04.png differ diff --git a/public/inquire_icons/benrenbuliang.png b/public/inquire_icons/benrenbuliang.png new file mode 100644 index 0000000..f05c56e Binary files /dev/null and b/public/inquire_icons/benrenbuliang.png differ diff --git a/public/inquire_icons/dashuju.png b/public/inquire_icons/dashuju.png new file mode 100644 index 0000000..ac30190 Binary files /dev/null and b/public/inquire_icons/dashuju.png differ diff --git a/public/inquire_icons/default.png b/public/inquire_icons/default.png new file mode 100644 index 0000000..964615e Binary files /dev/null and b/public/inquire_icons/default.png differ diff --git a/public/inquire_icons/duiwaitouzi.png b/public/inquire_icons/duiwaitouzi.png new file mode 100644 index 0000000..d36fc28 Binary files /dev/null and b/public/inquire_icons/duiwaitouzi.png differ diff --git a/public/inquire_icons/hunlianzhuangkuang.png b/public/inquire_icons/hunlianzhuangkuang.png new file mode 100644 index 0000000..a69d793 Binary files /dev/null and b/public/inquire_icons/hunlianzhuangkuang.png differ diff --git a/public/inquire_icons/jiedaishenqing.png b/public/inquire_icons/jiedaishenqing.png new file mode 100644 index 0000000..52bf991 Binary files /dev/null and b/public/inquire_icons/jiedaishenqing.png differ diff --git a/public/inquire_icons/jingyingyichang.png b/public/inquire_icons/jingyingyichang.png new file mode 100644 index 0000000..7fa09b3 Binary files /dev/null and b/public/inquire_icons/jingyingyichang.png differ diff --git a/public/inquire_icons/renzhijilu.png b/public/inquire_icons/renzhijilu.png new file mode 100644 index 0000000..befcf55 Binary files /dev/null and b/public/inquire_icons/renzhijilu.png differ diff --git a/public/inquire_icons/rongzilishi.png b/public/inquire_icons/rongzilishi.png new file mode 100644 index 0000000..c7967b5 Binary files /dev/null and b/public/inquire_icons/rongzilishi.png differ diff --git a/public/inquire_icons/shenqingxingwei.png b/public/inquire_icons/shenqingxingwei.png new file mode 100644 index 0000000..d817830 Binary files /dev/null and b/public/inquire_icons/shenqingxingwei.png differ diff --git a/public/inquire_icons/shesufengxian.png b/public/inquire_icons/shesufengxian.png new file mode 100644 index 0000000..7d0276a Binary files /dev/null and b/public/inquire_icons/shesufengxian.png differ diff --git a/public/inquire_icons/shourupinggu.png b/public/inquire_icons/shourupinggu.png new file mode 100644 index 0000000..964615e Binary files /dev/null and b/public/inquire_icons/shourupinggu.png differ diff --git a/public/inquire_icons/sifashesu.png b/public/inquire_icons/sifashesu.png new file mode 100644 index 0000000..77e191e Binary files /dev/null and b/public/inquire_icons/sifashesu.png differ diff --git a/public/inquire_icons/touzijilu.png b/public/inquire_icons/touzijilu.png new file mode 100644 index 0000000..55809be Binary files /dev/null and b/public/inquire_icons/touzijilu.png differ diff --git a/public/inquire_icons/weiyueshixin.png b/public/inquire_icons/weiyueshixin.png new file mode 100644 index 0000000..50e9cff Binary files /dev/null and b/public/inquire_icons/weiyueshixin.png differ diff --git a/public/inquire_icons/xiehaozhuanwang.png b/public/inquire_icons/xiehaozhuanwang.png new file mode 100644 index 0000000..81326cd Binary files /dev/null and b/public/inquire_icons/xiehaozhuanwang.png differ diff --git a/public/inquire_icons/xingzhengchufa.png b/public/inquire_icons/xingzhengchufa.png new file mode 100644 index 0000000..e139980 Binary files /dev/null and b/public/inquire_icons/xingzhengchufa.png differ diff --git a/public/inquire_icons/xuelixinxi.png b/public/inquire_icons/xuelixinxi.png new file mode 100644 index 0000000..42aa1af Binary files /dev/null and b/public/inquire_icons/xuelixinxi.png differ diff --git a/public/inquire_icons/zaiwangshichang.png b/public/inquire_icons/zaiwangshichang.png new file mode 100644 index 0000000..0c74f41 Binary files /dev/null and b/public/inquire_icons/zaiwangshichang.png differ diff --git a/public/inquire_icons/zhifubiaoxian.png b/public/inquire_icons/zhifubiaoxian.png new file mode 100644 index 0000000..34f6aaf Binary files /dev/null and b/public/inquire_icons/zhifubiaoxian.png differ diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000..b77b8ff Binary files /dev/null and b/public/logo.png differ diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..def87e1 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,50 @@ +User-agent: * +Allow: / + +# 允许访问主要页面 +Allow: /agent +Allow: /help +Allow: /help/guide +Allow: /example +Allow: /service +Allow: /privacyPolicy +Allow: /userAgreement +Allow: /agentManageAgreement +Allow: /agentSerivceAgreement +Allow: /authorization + +# 禁止访问私有页面 +Disallow: /login +Disallow: /me +Disallow: /historyQuery +Disallow: /promote +Disallow: /withdraw +Disallow: /report +Disallow: /inquire/ +Disallow: /payment/ +Disallow: /agent/promoteDetails +Disallow: /agent/rewardsDetails +Disallow: /agent/promote +Disallow: /agent/invitation +Disallow: /agent/agentVip +Disallow: /agent/vipApply +Disallow: /agent/vipConfig +Disallow: /agent/withdraw +Disallow: /agent/withdrawDetails +Disallow: /agent/invitationAgentApply/ +Disallow: /agent/subordinateList +Disallow: /agent/subordinateDetail/ + +# 禁止访问API接口 +Disallow: /api/ + +# 禁止访问静态资源目录(可选) +Disallow: /assets/ +Disallow: /js/ +Disallow: /css/ + +# 网站地图 +Sitemap: https://www.zhinengcha.cn/sitemap.xml + +# 爬取延迟(毫秒) +Crawl-delay: 1 diff --git a/public/site.webmanifest b/public/site.webmanifest new file mode 100644 index 0000000..b3eb1f3 --- /dev/null +++ b/public/site.webmanifest @@ -0,0 +1,44 @@ +{ + "name": "愉悦查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用", + "short_name": "愉悦查", + "description": "专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用", + "start_url": "/", + "display": "standalone", + "background_color": "#ffffff", + "theme_color": "#3498db", + "orientation": "portrait-primary", + "icons": [ + { + "src": "/favicon-16x16.png", + "sizes": "16x16", + "type": "image/png" + }, + { + "src": "/favicon-32x32.png", + "sizes": "32x32", + "type": "image/png" + }, + { + "src": "/apple-touch-icon.png", + "sizes": "180x180", + "type": "image/png" + }, + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "categories": [ + "business", + "finance", + "utilities" + ], + "lang": "zh-CN", + "dir": "ltr" +} \ No newline at end of file diff --git a/public/sitemap.xml b/public/sitemap.xml new file mode 100644 index 0000000..261c820 --- /dev/null +++ b/public/sitemap.xml @@ -0,0 +1,69 @@ + + + + https://www.zhinengcha.cn/ + 2025-08-01 + daily + 1.0 + + + https://www.zhinengcha.cn/agent + 2025-08-01 + weekly + 0.8 + + + https://www.zhinengcha.cn/help + 2025-08-01 + monthly + 0.7 + + + https://www.zhinengcha.cn/help/guide + 2025-08-01 + monthly + 0.6 + + + https://www.zhinengcha.cn/example + 2025-08-01 + monthly + 0.6 + + + https://www.zhinengcha.cn/service + 2025-08-01 + monthly + 0.5 + + + https://www.zhinengcha.cn/privacyPolicy + 2025-08-01 + yearly + 0.3 + + + https://www.zhinengcha.cn/userAgreement + 2025-08-01 + yearly + 0.3 + + + https://www.zhinengcha.cn/agentManageAgreement + 2025-08-01 + yearly + 0.3 + + + https://www.zhinengcha.cn/agentSerivceAgreement + 2025-08-01 + yearly + 0.3 + + + https://www.zhinengcha.cn/authorization + 2025-08-01 + yearly + 0.3 + + diff --git a/scripts/generate-dictionaries.js b/scripts/generate-dictionaries.js new file mode 100644 index 0000000..f38d5ff --- /dev/null +++ b/scripts/generate-dictionaries.js @@ -0,0 +1,152 @@ +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const projectRoot = path.resolve(__dirname, '..'); + +const FILE_CONFIGS = [ + { + input: path.join(projectRoot, 'IVYZ3P9M_学历信息查询(实时版)_返回字段说明.md'), + output: path.join(projectRoot, 'src', 'data', 'ivyz3p9m-dictionary.json'), + handler: parseIvyz3p9mDictionary, + }, + { + input: path.join(projectRoot, '多头借贷小时级_返回字段说明.md'), + output: path.join(projectRoot, 'src', 'data', 'multiLoanHourlyDictionary.json'), + handler: parseMultiLoanDictionary, + }, +]; + +function parseMarkdownTable(sectionContent, predicate = () => true) { + const rows = []; + + sectionContent.split('\n').forEach((line) => { + if (!line.trim().startsWith('|')) return; + + const cells = line + .split('|') + .slice(1, -1) + .map((cell) => cell.trim()); + + if (cells.length === 0) return; + if (cells.some((cell) => /^-+$/.test(cell))) return; + + if (predicate(cells)) { + rows.push(cells); + } + }); + + return rows; +} + +function parseIvyz3p9mDictionary(markdown) { + const result = { + educationLevel: {}, + learningForm: {}, + specialties: {}, + schools: {}, + }; + + const sections = markdown.split(/\n(?=## )/); + + sections.forEach((rawSection) => { + const headerMatch = rawSection.match(/^##\s*(.+)\n/); + if (!headerMatch) return; + + const title = headerMatch[1].trim(); + const body = rawSection.slice(headerMatch[0].length); + + const isEducation = /学历层次/.test(title); + const isLearning = /学习形式/.test(title); + const isSchool = /学校/.test(title); + const isSpecialty = /专业/.test(title); + + if (!(isEducation || isLearning || isSchool || isSpecialty)) { + return; + } + + const rows = parseMarkdownTable(body, (cells) => cells.length >= 2); + + rows.forEach((cells) => { + const code = cells[0]; + const name = cells[1]; + if (!code || !name) return; + + if (isEducation) { + result.educationLevel[code] = name; + } else if (isLearning) { + result.learningForm[code] = name; + } else if (isSchool) { + result.schools[code] = name; + } else if (isSpecialty) { + result.specialties[code] = name; + } + }); + }); + + return result; +} + +function parseMultiLoanDictionary(markdown) { + const dictionary = {}; + let headerCells = []; + + markdown.split('\n').forEach((line) => { + if (!line.trim().startsWith('|')) return; + + const cells = line + .split('|') + .slice(1, -1) + .map((cell) => cell.trim()); + + if (cells.some((cell) => /^-+$/.test(cell))) return; + if (cells.length < 2) return; + + if (cells.includes('标签代码')) { + headerCells = cells; + return; + } + + if (headerCells.length === 0) return; + + const data = Object.fromEntries(headerCells.map((header, index) => [header, cells[index] || ''])); + const code = data['标签代码']; + if (!code) return; + + dictionary[code] = { + productName: data['产品名称'] || '', + labelCategory: data['标签类别'] || '', + description: data['业务含义'] || '', + dataType: data['类型'] || '', + length: data['长度'] || '', + }; + }); + + return dictionary; +} + +function ensureDirectoryExists(filePath) { + const dir = path.dirname(filePath); + fs.mkdirSync(dir, { recursive: true }); +} + +function run() { + FILE_CONFIGS.forEach(({ input, output, handler }) => { + if (!fs.existsSync(input)) { + console.warn(`Input file not found: ${input}`); + return; + } + + const markdown = fs.readFileSync(input, 'utf-8'); + const data = handler(markdown); + + ensureDirectoryExists(output); + fs.writeFileSync(output, JSON.stringify(data, null, 2), 'utf-8'); + console.log(`Generated dictionary: ${path.relative(projectRoot, output)}`); + }); +} + +run(); + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..1b4ed20 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,321 @@ + + + + + diff --git a/src/api/agent.js b/src/api/agent.js new file mode 100644 index 0000000..14391a4 --- /dev/null +++ b/src/api/agent.js @@ -0,0 +1,280 @@ +import useApiFetch from "@/composables/useApiFetch"; + +/** + * 代理相关API调用统一管理 + */ + +/** + * 构建查询字符串的辅助函数 + * @param {object} params - 查询参数对象 + * @returns {string} 查询字符串 + */ +function buildQueryString(params) { + const queryParams = new URLSearchParams(); + Object.keys(params).forEach((key) => { + if ( + params[key] !== undefined && + params[key] !== null && + params[key] !== "" + ) { + queryParams.append(key, params[key]); + } + }); + const queryString = queryParams.toString(); + return queryString ? `?${queryString}` : ""; +} + +// ==================== 公开接口(无需登录) ==================== + +/** + * 获取推广链接数据 + * @param {string} linkIdentifier - 推广链接标识 + */ +export function getLinkData(linkIdentifier) { + return useApiFetch( + `/agent/link?link_identifier=${encodeURIComponent(linkIdentifier)}` + ) + .get() + .json(); +} + +/** + * 通过邀请码申请成为代理(已注册用户) + * @param {object} params - 申请参数 + * @param {string} params.mobile - 手机号 + * @param {string} params.code - 验证码 + * @param {string} params.invite_code - 邀请码(必填) + * @param {string} params.region - 区域(可选) + */ +export function applyForAgent(params) { + return useApiFetch("/agent/apply").post(params).json(); +} + +/** + * 通过邀请码注册(同时注册用户和代理) + * @param {object} params - 注册参数 + * @param {string} params.mobile - 手机号 + * @param {string} params.code - 验证码 + * @param {string} params.invite_code - 邀请码(必填) + * @param {string} params.region - 区域(可选) + * @param {string} params.wechat_id - 微信号(可选) + */ +export function registerByInviteCode(params) { + return useApiFetch("/agent/register/invite").post(params).json(); +} + +// ==================== 需要登录的接口 ==================== + +/** + * 获取代理信息 + */ +export function getAgentInfo() { + return useApiFetch("/agent/info").get().json(); +} + +/** + * 获取代理等级特权信息 + */ +export function getLevelPrivilege() { + return useApiFetch("/agent/level/privilege").get().json(); +} + +/** + * 生成推广链接 + * @param {object} params - 生成参数 + * @param {number} params.product_id - 产品ID + * @param {number} params.set_price - 设定价格 + */ +export function generateLink(params) { + return useApiFetch("/agent/generating_link").post(params).json(); +} + +/** + * 获取产品配置 + */ +export function getProductConfig() { + return useApiFetch("/agent/product_config").get().json(); +} + +/** + * 获取团队统计 + */ +export function getTeamStatistics() { + return useApiFetch("/agent/team/statistics").get().json(); +} + +/** + * 获取团队列表 + * @param {object} params - 查询参数 + * @param {number} params.page - 页码 + * @param {number} params.page_size - 每页数量 + */ +export function getTeamList(params) { + const queryString = buildQueryString(params || {}); + return useApiFetch(`/agent/team/list${queryString}`).get().json(); +} + +/** + * 获取下级列表 + * @param {object} params - 查询参数 + * @param {number} params.page - 页码 + * @param {number} params.page_size - 每页数量 + */ +export function getSubordinateList(params) { + const queryString = buildQueryString(params || {}); + return useApiFetch(`/agent/subordinate/list${queryString}`).get().json(); +} + +/** + * 获取收益信息 + */ +export function getRevenueInfo() { + return useApiFetch("/agent/revenue").get().json(); +} + +/** + * 获取转化率统计 + */ +export function getConversionRate() { + return useApiFetch("/agent/conversion/rate").get().json(); +} + +/** + * 获取佣金记录 + * @param {object} params - 查询参数 + * @param {number} params.page - 页码 + * @param {number} params.page_size - 每页数量 + */ +export function getCommissionList(params) { + const queryString = buildQueryString(params || {}); + return useApiFetch(`/agent/commission/list${queryString}`).get().json(); +} + +/** + * 获取返佣记录(推广返佣) + * @param {object} params - 查询参数 + * @param {number} params.page - 页码 + * @param {number} params.page_size - 每页数量 + * @param {number} params.rebate_type - 返佣类型(可选):1=直接上级返佣,2=钻石上级返佣,3=黄金上级返佣 + */ +export function getRebateList(params) { + const queryString = buildQueryString(params || {}); + return useApiFetch(`/agent/rebate/list${queryString}`).get().json(); +} + +/** + * 获取升级返佣记录 + * @param {object} params - 查询参数 + * @param {number} params.page - 页码 + * @param {number} params.page_size - 每页数量 + */ +export function getUpgradeRebateList(params) { + const queryString = buildQueryString(params || {}); + return useApiFetch(`/agent/rebate/upgrade/list${queryString}`).get().json(); +} + +/** + * 获取升级记录 + * @param {object} params - 查询参数 + * @param {number} params.page - 页码 + * @param {number} params.page_size - 每页数量 + */ +export function getUpgradeList(params) { + const queryString = buildQueryString(params || {}); + return useApiFetch(`/agent/upgrade/list${queryString}`).get().json(); +} + +/** + * 申请升级 + * @param {object} params - 升级参数 + * @param {number} params.to_level - 目标等级:2=黄金,3=钻石 + */ +export function applyUpgrade(params) { + return useApiFetch("/agent/upgrade/apply").post(params).json(); +} + +/** + * 钻石代理升级下级 + * @param {object} params - 升级参数 + * @param {number} params.subordinate_id - 下级代理ID + * @param {number} params.to_level - 目标等级(只能是2=黄金) + */ +export function upgradeSubordinate(params) { + return useApiFetch("/agent/upgrade/subordinate").post(params).json(); +} + +/** + * 获取提现列表 + * @param {object} params - 查询参数 + * @param {number} params.page - 页码 + * @param {number} params.page_size - 每页数量 + */ +export function getWithdrawalList(params) { + const queryString = buildQueryString(params || {}); + return useApiFetch(`/agent/withdrawal/list${queryString}`).get().json(); +} + +/** + * 申请提现 + * @param {object} params - 提现参数 + * @param {number} params.amount - 提现金额 + * @param {string} params.payee_account - 收款账户 + * @param {string} params.payee_name - 收款人姓名 + */ +export function applyWithdrawal(params) { + return useApiFetch("/agent/withdrawal/apply").post(params).json(); +} + +/** + * 实名认证 + * @param {object} params - 实名认证参数 + * @param {string} params.name - 姓名 + * @param {string} params.id_card - 身份证号 + * @param {string} params.mobile - 手机号 + * @param {string} params.code - 验证码 + */ +export function realNameAuth(params) { + return useApiFetch("/agent/real_name").post(params).json(); +} + +/** + * 生成邀请码 + * @param {object} params - 生成参数 + * @param {number} params.count - 生成数量 + * @param {number} params.expire_days - 过期天数(可选,0表示不过期) + * @param {string} params.remark - 备注(可选) + */ +export function generateInviteCode(params) { + return useApiFetch("/agent/invite_code/generate").post(params).json(); +} + +/** + * 获取邀请码列表 + * @param {object} params - 查询参数 + * @param {number} params.page - 页码 + * @param {number} params.page_size - 每页数量 + * @param {number} params.status - 状态(可选):0=未使用,1=已使用,2=已失效 + */ +export function getInviteCodeList(params) { + const queryString = buildQueryString(params || {}); + return useApiFetch(`/agent/invite_code/list${queryString}`).get().json(); +} + +/** + * 删除邀请码 + * @param {object} params - 删除参数 + * @param {number} params.id - 邀请码ID + */ +export function deleteInviteCode(params) { + return useApiFetch("/agent/invite_code/delete").post(params).json(); +} + +/** + * 获取邀请链接 + * @param {object} params - 请求参数 + * @param {string} params.invite_code - 邀请码 + */ +export function getInviteLink(params) { + const queryString = buildQueryString(params || {}); + return useApiFetch(`/agent/invite_link${queryString}`).get().json(); +} diff --git a/src/api/user.js b/src/api/user.js new file mode 100644 index 0000000..1a03833 --- /dev/null +++ b/src/api/user.js @@ -0,0 +1,31 @@ +import axios from "axios"; +import useApiFetch from "@/composables/useApiFetch"; + +// 获取API基础URL(与生产规则一致:VITE_API_URL) +const baseURL = import.meta.env.VITE_API_URL; + +// 手机号验证码登录 +export function mobileCodeLogin(params) { + return useApiFetch("/user/mobileCodeLogin").post(params).json(); +} + +// 统一认证 +export function unifiedAuth(params) { + return useApiFetch("/user/auth").post(params).json(); +} + +// 绑定手机号 +export function bindMobile(params) { + return useApiFetch("/user/bindMobile").post(params).json(); +} + +// 注销账号API +export function cancelAccount() { + return axios({ + method: "post", + url: `${baseURL}/api/user/cancel`, + headers: { + Authorization: `Bearer ${localStorage.getItem("token")}`, + }, + }); +} diff --git a/src/assets/base.css b/src/assets/base.css new file mode 100644 index 0000000..cdad13a --- /dev/null +++ b/src/assets/base.css @@ -0,0 +1,26 @@ +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} +html { + margin: auto !important; + @apply max-w-lg; + /* 确保在缩放时保持响应式 */ + min-width: 320px; +} +body { + background-color: #f8f8f8; + min-height: 100vh; + transition: color 0.5s, background-color 0.5s; + line-height: 1.6; + font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, + Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/src/assets/colors.css b/src/assets/colors.css new file mode 100644 index 0000000..a58958a --- /dev/null +++ b/src/assets/colors.css @@ -0,0 +1,202 @@ +/* + * 统一颜色变量管理文件 + * 用于规范化项目中的所有颜色使用 + * 支持颜色统一管理 + */ + +:root { + /* ===== 主题色系 ===== */ + --color-primary: #FF6A19; + --color-primary-second: #FF8A3D; + --color-primary-50: #fff5f0; + --color-primary-100: #ffebe1; + --color-primary-200: #ffd7c3; + --color-primary-300: #ffc3a5; + --color-primary-400: #ffaf87; + --color-primary-500: #FF6A19; + --color-primary-600: #cc5534; + --color-primary-700: #994028; + --color-primary-800: #662b1c; + --color-primary-900: #33150e; + + /* 主题色透明度变体 */ + --color-primary-light: rgba(255, 106, 25, 0.1); + --color-primary-medium: rgba(255, 106, 25, 0.15); + --color-primary-dark: rgba(255, 106, 25, 0.8); + + /* ===== 语义化颜色 ===== */ + --color-success: #07c160; + --color-success-50: #f0f9f0; + --color-success-100: #e1f5e1; + --color-success-200: #c3ebc3; + --color-success-300: #a5e1a5; + --color-success-400: #87d787; + --color-success-500: #07c160; + --color-success-600: #059a4c; + --color-success-700: #047338; + --color-success-800: #024c24; + --color-success-900: #012510; + --color-success-light: rgba(7, 193, 96, 0.1); + --color-success-dark: rgba(7, 193, 96, 0.8); + + --color-warning: #ff976a; + --color-warning-50: #fff5f0; + --color-warning-100: #ffebe1; + --color-warning-200: #ffd7c3; + --color-warning-300: #ffc3a5; + --color-warning-400: #ffaf87; + --color-warning-500: #ff976a; + --color-warning-600: #cc7955; + --color-warning-700: #995b40; + --color-warning-800: #663d2a; + --color-warning-900: #331f15; + --color-warning-light: rgba(255, 151, 106, 0.1); + --color-warning-dark: rgba(255, 151, 106, 0.8); + + --color-danger: #ee0a24; + --color-danger-light: rgba(238, 10, 36, 0.1); + --color-danger-dark: rgba(238, 10, 36, 0.8); + + --color-info: #1989fa; + --color-info-light: rgba(25, 137, 250, 0.1); + --color-info-dark: rgba(25, 137, 250, 0.8); + + /* ===== 中性色系 ===== */ + --color-gray-50: #fafafa; + --color-gray-100: #f5f5f5; + --color-gray-200: #e5e5e5; + --color-gray-300: #d4d4d4; + --color-gray-400: #a3a3a3; + --color-gray-500: #737373; + --color-gray-600: #525252; + --color-gray-700: #404040; + --color-gray-800: #262626; + --color-gray-900: #171717; + + /* ===== 文本颜色 ===== */ + --color-text-primary: #323233; + --color-text-secondary: #646566; + --color-text-tertiary: #969799; + --color-text-quaternary: #c8c9cc; + --color-text-disabled: #c8c9cc; + --color-text-white: #ffffff; + + /* ===== 背景颜色 ===== */ + --color-bg-primary: #ffffff; + --color-bg-secondary: #fafafa; + --color-bg-tertiary: #f8f8f8; + --color-bg-quaternary: #f2f3f5; + --color-bg-overlay: rgba(0, 0, 0, 0.5); + --color-bg-mask: rgba(0, 0, 0, 0.8); + + /* ===== 边框颜色 ===== */ + --color-border-primary: #ebedf0; + --color-border-secondary: #f2f3f5; + --color-border-tertiary: #dcdee0; + --color-border-focus: var(--color-primary); + + /* ===== 状态颜色 ===== */ + --color-active: #f2f3f5; + --color-hover: rgba(0, 0, 0, 0.05); + --color-focus: var(--color-primary-light); + + /* ===== 阴影颜色 ===== */ + --color-shadow-light: rgba(0, 0, 0, 0.1); + --color-shadow-medium: rgba(0, 0, 0, 0.15); + --color-shadow-dark: rgba(0, 0, 0, 0.2); + + /* ===== 业务特定颜色 ===== */ + --color-service-personal: #FF6A19; /* 个人大数据 */ + --color-service-company: #FF8A3D; /* 小微企业 */ + --color-service-loan: #FFB366; /* 贷前背调 */ + + /* ===== 渐变色彩 ===== */ + --gradient-primary: linear-gradient( + 135deg, + var(--color-primary-400), + var(--color-primary-600) + ); + --gradient-success: linear-gradient( + 135deg, + var(--color-success), + var(--color-success-dark) + ); + --gradient-warning: linear-gradient( + 135deg, + var(--color-warning), + var(--color-warning-dark) + ); + --gradient-danger: linear-gradient( + 135deg, + var(--color-danger), + var(--color-danger-dark) + ); +} + +/* ===== 工具类 ===== */ +.text-primary { + color: var(--color-primary) !important; +} +.text-primary-second { + color: var(--color-primary-second) !important; +} +.text-success { + color: var(--color-success) !important; +} +.text-warning { + color: var(--color-warning) !important; +} +.text-danger { + color: var(--color-danger) !important; +} +.text-info { + color: var(--color-info) !important; +} + +.bg-primary { + background-color: var(--color-primary) !important; +} +.bg-primary-second { + background-color: var(--color-primary-second) !important; +} +.bg-success { + background-color: var(--color-success) !important; +} +.bg-warning { + background-color: var(--color-warning) !important; +} +.bg-danger { + background-color: var(--color-danger) !important; +} +.bg-info { + background-color: var(--color-info) !important; +} + +.border-primary { + border-color: var(--color-primary) !important; +} +.border-primary-second { + border-color: var(--color-primary-second) !important; +} +.border-success { + border-color: var(--color-success) !important; +} +.border-warning { + border-color: var(--color-warning) !important; +} +.border-danger { + border-color: var(--color-danger) !important; +} +.border-info { + border-color: var(--color-info) !important; +} + +/* ===== 响应式颜色工具类 ===== */ +@media (max-width: 768px) { + .text-primary-mobile { + color: var(--color-primary) !important; + } + .bg-primary-mobile { + background-color: var(--color-primary) !important; + } +} diff --git a/src/assets/images/banner.png b/src/assets/images/banner.png new file mode 100644 index 0000000..2686017 Binary files /dev/null and b/src/assets/images/banner.png differ diff --git a/src/assets/images/bg_2.png b/src/assets/images/bg_2.png new file mode 100644 index 0000000..9b3befe Binary files /dev/null and b/src/assets/images/bg_2.png differ diff --git a/src/assets/images/bg_icon.png b/src/assets/images/bg_icon.png new file mode 100644 index 0000000..44bd467 Binary files /dev/null and b/src/assets/images/bg_icon.png differ diff --git a/src/assets/images/empty.svg b/src/assets/images/empty.svg new file mode 100644 index 0000000..fbecc14 --- /dev/null +++ b/src/assets/images/empty.svg @@ -0,0 +1,75 @@ + + 空空如也 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/example_sy.png b/src/assets/images/example_sy.png new file mode 100644 index 0000000..659278e Binary files /dev/null and b/src/assets/images/example_sy.png differ diff --git a/src/assets/images/gdrqgx_icon.svg b/src/assets/images/gdrqgx_icon.svg new file mode 100644 index 0000000..fa64f1a --- /dev/null +++ b/src/assets/images/gdrqgx_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/grbl_icon.svg b/src/assets/images/grbl_icon.svg new file mode 100644 index 0000000..09f3a67 --- /dev/null +++ b/src/assets/images/grbl_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/grss_icon.svg b/src/assets/images/grss_icon.svg new file mode 100644 index 0000000..2c5296e --- /dev/null +++ b/src/assets/images/grss_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/homelayout/4_1@2x.png b/src/assets/images/homelayout/4_1@2x.png new file mode 100644 index 0000000..f0372f4 Binary files /dev/null and b/src/assets/images/homelayout/4_1@2x.png differ diff --git a/src/assets/images/homelayout/999_1@2x.png b/src/assets/images/homelayout/999_1@2x.png new file mode 100644 index 0000000..ca04b72 Binary files /dev/null and b/src/assets/images/homelayout/999_1@2x.png differ diff --git a/src/assets/images/homelayout/Frame_473@2x.png b/src/assets/images/homelayout/Frame_473@2x.png new file mode 100644 index 0000000..02c82e1 Binary files /dev/null and b/src/assets/images/homelayout/Frame_473@2x.png differ diff --git a/src/assets/images/homelayout/Frame_475@2x.png b/src/assets/images/homelayout/Frame_475@2x.png new file mode 100644 index 0000000..9a813d0 Binary files /dev/null and b/src/assets/images/homelayout/Frame_475@2x.png differ diff --git a/src/assets/images/homelayout/agent.png b/src/assets/images/homelayout/agent.png new file mode 100644 index 0000000..22ab8b9 Binary files /dev/null and b/src/assets/images/homelayout/agent.png differ diff --git a/src/assets/images/homelayout/agent_active.png b/src/assets/images/homelayout/agent_active.png new file mode 100644 index 0000000..d4b8920 Binary files /dev/null and b/src/assets/images/homelayout/agent_active.png differ diff --git a/src/assets/images/homelayout/index.png b/src/assets/images/homelayout/index.png new file mode 100644 index 0000000..848e88f Binary files /dev/null and b/src/assets/images/homelayout/index.png differ diff --git a/src/assets/images/homelayout/index_active.png b/src/assets/images/homelayout/index_active.png new file mode 100644 index 0000000..40e3fe2 Binary files /dev/null and b/src/assets/images/homelayout/index_active.png differ diff --git a/src/assets/images/homelayout/me.png b/src/assets/images/homelayout/me.png new file mode 100644 index 0000000..14e0642 Binary files /dev/null and b/src/assets/images/homelayout/me.png differ diff --git a/src/assets/images/homelayout/me_active.png b/src/assets/images/homelayout/me_active.png new file mode 100644 index 0000000..bc2127f Binary files /dev/null and b/src/assets/images/homelayout/me_active.png differ diff --git a/src/assets/images/homelayout/promote.png b/src/assets/images/homelayout/promote.png new file mode 100644 index 0000000..f0b75e8 Binary files /dev/null and b/src/assets/images/homelayout/promote.png differ diff --git a/src/assets/images/homelayout/promote_active.png b/src/assets/images/homelayout/promote_active.png new file mode 100644 index 0000000..d594466 Binary files /dev/null and b/src/assets/images/homelayout/promote_active.png differ diff --git a/src/assets/images/homelayout/ts.png b/src/assets/images/homelayout/ts.png new file mode 100644 index 0000000..851df81 Binary files /dev/null and b/src/assets/images/homelayout/ts.png differ diff --git a/src/assets/images/homelayout/图层-3-4@2x_1@2x.png b/src/assets/images/homelayout/图层-3-4@2x_1@2x.png new file mode 100644 index 0000000..30c7f69 Binary files /dev/null and b/src/assets/images/homelayout/图层-3-4@2x_1@2x.png differ diff --git a/src/assets/images/homelayout/图层_1 2@2x.png b/src/assets/images/homelayout/图层_1 2@2x.png new file mode 100644 index 0000000..d43cb17 Binary files /dev/null and b/src/assets/images/homelayout/图层_1 2@2x.png differ diff --git a/src/assets/images/homelayout/图层_1 3@2x.png b/src/assets/images/homelayout/图层_1 3@2x.png new file mode 100644 index 0000000..5730d50 Binary files /dev/null and b/src/assets/images/homelayout/图层_1 3@2x.png differ diff --git a/src/assets/images/homelayout/图层_1@2x.png b/src/assets/images/homelayout/图层_1@2x.png new file mode 100644 index 0000000..ac59cfd Binary files /dev/null and b/src/assets/images/homelayout/图层_1@2x.png differ diff --git a/src/assets/images/homelayout/图层_2 4@2x.png b/src/assets/images/homelayout/图层_2 4@2x.png new file mode 100644 index 0000000..b7ee53d Binary files /dev/null and b/src/assets/images/homelayout/图层_2 4@2x.png differ diff --git a/src/assets/images/homelayout/图层_2 5@2x.png b/src/assets/images/homelayout/图层_2 5@2x.png new file mode 100644 index 0000000..c68e167 Binary files /dev/null and b/src/assets/images/homelayout/图层_2 5@2x.png differ diff --git a/src/assets/images/homelayout/图层_2@2x.png b/src/assets/images/homelayout/图层_2@2x.png new file mode 100644 index 0000000..c31a5a0 Binary files /dev/null and b/src/assets/images/homelayout/图层_2@2x.png differ diff --git a/src/assets/images/homelayout/图层_3 3@2x.png b/src/assets/images/homelayout/图层_3 3@2x.png new file mode 100644 index 0000000..068ff12 Binary files /dev/null and b/src/assets/images/homelayout/图层_3 3@2x.png differ diff --git a/src/assets/images/homelayout/图层_3 4@2x.png b/src/assets/images/homelayout/图层_3 4@2x.png new file mode 100644 index 0000000..8a42331 Binary files /dev/null and b/src/assets/images/homelayout/图层_3 4@2x.png differ diff --git a/src/assets/images/homelayout/组_1 1@2x.png b/src/assets/images/homelayout/组_1 1@2x.png new file mode 100644 index 0000000..1abe347 Binary files /dev/null and b/src/assets/images/homelayout/组_1 1@2x.png differ diff --git a/src/assets/images/icon_bg.svg b/src/assets/images/icon_bg.svg new file mode 100644 index 0000000..fcd561c --- /dev/null +++ b/src/assets/images/icon_bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_bz.svg b/src/assets/images/icon_bz.svg new file mode 100644 index 0000000..4daa201 --- /dev/null +++ b/src/assets/images/icon_bz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_cwhy.svg b/src/assets/images/icon_cwhy.svg new file mode 100644 index 0000000..71bb55f --- /dev/null +++ b/src/assets/images/icon_cwhy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_index_apistore.svg b/src/assets/images/icon_index_apistore.svg new file mode 100644 index 0000000..da95d6e --- /dev/null +++ b/src/assets/images/icon_index_apistore.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_index_chacheliang.svg b/src/assets/images/icon_index_chacheliang.svg new file mode 100644 index 0000000..2bff239 --- /dev/null +++ b/src/assets/images/icon_index_chacheliang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_lxkf.svg b/src/assets/images/icon_lxkf.svg new file mode 100644 index 0000000..75f0724 --- /dev/null +++ b/src/assets/images/icon_lxkf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_share_friends.svg b/src/assets/images/icon_share_friends.svg new file mode 100644 index 0000000..8e8ccb9 --- /dev/null +++ b/src/assets/images/icon_share_friends.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_share_img.svg b/src/assets/images/icon_share_img.svg new file mode 100644 index 0000000..e71bc1f --- /dev/null +++ b/src/assets/images/icon_share_img.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_share_url.svg b/src/assets/images/icon_share_url.svg new file mode 100644 index 0000000..0469cfa --- /dev/null +++ b/src/assets/images/icon_share_url.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_share_wechat.svg b/src/assets/images/icon_share_wechat.svg new file mode 100644 index 0000000..ecbc839 --- /dev/null +++ b/src/assets/images/icon_share_wechat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_srmx.svg b/src/assets/images/icon_srmx.svg new file mode 100644 index 0000000..f29166b --- /dev/null +++ b/src/assets/images/icon_srmx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_tg.svg b/src/assets/images/icon_tg.svg new file mode 100644 index 0000000..7e39ed9 --- /dev/null +++ b/src/assets/images/icon_tg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_wytx.svg b/src/assets/images/icon_wytx.svg new file mode 100644 index 0000000..33ef556 --- /dev/null +++ b/src/assets/images/icon_wytx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/icon_xj.svg b/src/assets/images/icon_xj.svg new file mode 100644 index 0000000..bb43ad0 --- /dev/null +++ b/src/assets/images/icon_xj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/index/banner.png b/src/assets/images/index/banner.png new file mode 100644 index 0000000..467bda6 Binary files /dev/null and b/src/assets/images/index/banner.png differ diff --git a/src/assets/images/index/bg_icon.png b/src/assets/images/index/bg_icon.png new file mode 100644 index 0000000..f482f23 Binary files /dev/null and b/src/assets/images/index/bg_icon.png differ diff --git a/src/assets/images/index/bzzx.png b/src/assets/images/index/bzzx.png new file mode 100644 index 0000000..a19de9a Binary files /dev/null and b/src/assets/images/index/bzzx.png differ diff --git a/src/assets/images/index/company_bg.png b/src/assets/images/index/company_bg.png new file mode 100644 index 0000000..c5ba231 Binary files /dev/null and b/src/assets/images/index/company_bg.png differ diff --git a/src/assets/images/index/cwhy.png b/src/assets/images/index/cwhy.png new file mode 100644 index 0000000..75f3c8a Binary files /dev/null and b/src/assets/images/index/cwhy.png differ diff --git a/src/assets/images/index/go_icon.png b/src/assets/images/index/go_icon.png new file mode 100644 index 0000000..c2d5212 Binary files /dev/null and b/src/assets/images/index/go_icon.png differ diff --git a/src/assets/images/index/hot_icon.png b/src/assets/images/index/hot_icon.png new file mode 100644 index 0000000..95826f4 Binary files /dev/null and b/src/assets/images/index/hot_icon.png differ diff --git a/src/assets/images/index/housekeeping_risk_bg.png b/src/assets/images/index/housekeeping_risk_bg.png new file mode 100644 index 0000000..5154df2 Binary files /dev/null and b/src/assets/images/index/housekeeping_risk_bg.png differ diff --git a/src/assets/images/index/icon_bg.svg b/src/assets/images/index/icon_bg.svg new file mode 100644 index 0000000..fcd561c --- /dev/null +++ b/src/assets/images/index/icon_bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/index/icon_bz.svg b/src/assets/images/index/icon_bz.svg new file mode 100644 index 0000000..4daa201 --- /dev/null +++ b/src/assets/images/index/icon_bz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/index/icon_tg.svg b/src/assets/images/index/icon_tg.svg new file mode 100644 index 0000000..7e39ed9 --- /dev/null +++ b/src/assets/images/index/icon_tg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/index/icon_xj.svg b/src/assets/images/index/icon_xj.svg new file mode 100644 index 0000000..bb43ad0 --- /dev/null +++ b/src/assets/images/index/icon_xj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/index/index_b_b.png b/src/assets/images/index/index_b_b.png new file mode 100644 index 0000000..491d2af Binary files /dev/null and b/src/assets/images/index/index_b_b.png differ diff --git a/src/assets/images/index/loan_check_bg.png b/src/assets/images/index/loan_check_bg.png new file mode 100644 index 0000000..759cb52 Binary files /dev/null and b/src/assets/images/index/loan_check_bg.png differ diff --git a/src/assets/images/index/lxkf.png b/src/assets/images/index/lxkf.png new file mode 100644 index 0000000..23719a4 Binary files /dev/null and b/src/assets/images/index/lxkf.png differ diff --git a/src/assets/images/index/marriage_risk_bg.png b/src/assets/images/index/marriage_risk_bg.png new file mode 100644 index 0000000..d1e8941 Binary files /dev/null and b/src/assets/images/index/marriage_risk_bg.png differ diff --git a/src/assets/images/index/n/01.jpg b/src/assets/images/index/n/01.jpg new file mode 100644 index 0000000..974ddea Binary files /dev/null and b/src/assets/images/index/n/01.jpg differ diff --git a/src/assets/images/index/n/02.png b/src/assets/images/index/n/02.png new file mode 100644 index 0000000..af4e512 Binary files /dev/null and b/src/assets/images/index/n/02.png differ diff --git a/src/assets/images/index/n/03.png b/src/assets/images/index/n/03.png new file mode 100644 index 0000000..0bc5912 Binary files /dev/null and b/src/assets/images/index/n/03.png differ diff --git a/src/assets/images/index/n/04.png b/src/assets/images/index/n/04.png new file mode 100644 index 0000000..f2de5ce Binary files /dev/null and b/src/assets/images/index/n/04.png differ diff --git a/src/assets/images/index/n/05.png b/src/assets/images/index/n/05.png new file mode 100644 index 0000000..cba34b3 Binary files /dev/null and b/src/assets/images/index/n/05.png differ diff --git a/src/assets/images/index/n/06.png b/src/assets/images/index/n/06.png new file mode 100644 index 0000000..c364b30 Binary files /dev/null and b/src/assets/images/index/n/06.png differ diff --git a/src/assets/images/index/n/07.png b/src/assets/images/index/n/07.png new file mode 100644 index 0000000..d8c5e7f Binary files /dev/null and b/src/assets/images/index/n/07.png differ diff --git a/src/assets/images/index/n/08.png b/src/assets/images/index/n/08.png new file mode 100644 index 0000000..9da8480 Binary files /dev/null and b/src/assets/images/index/n/08.png differ diff --git a/src/assets/images/index/n/09.png b/src/assets/images/index/n/09.png new file mode 100644 index 0000000..b3437fe Binary files /dev/null and b/src/assets/images/index/n/09.png differ diff --git a/src/assets/images/index/n/10.png b/src/assets/images/index/n/10.png new file mode 100644 index 0000000..698631d Binary files /dev/null and b/src/assets/images/index/n/10.png differ diff --git a/src/assets/images/index/n/11.png b/src/assets/images/index/n/11.png new file mode 100644 index 0000000..d2fe757 Binary files /dev/null and b/src/assets/images/index/n/11.png differ diff --git a/src/assets/images/index/n/样板.png b/src/assets/images/index/n/样板.png new file mode 100644 index 0000000..8b36fd8 Binary files /dev/null and b/src/assets/images/index/n/样板.png differ diff --git a/src/assets/images/index/new_icon.gif b/src/assets/images/index/new_icon.gif new file mode 100644 index 0000000..2b62990 Binary files /dev/null and b/src/assets/images/index/new_icon.gif differ diff --git a/src/assets/images/index/personal_data_bg.png b/src/assets/images/index/personal_data_bg.png new file mode 100644 index 0000000..ec941b2 Binary files /dev/null and b/src/assets/images/index/personal_data_bg.png differ diff --git a/src/assets/images/index/preloan_risk_bg.png b/src/assets/images/index/preloan_risk_bg.png new file mode 100644 index 0000000..7c3aba5 Binary files /dev/null and b/src/assets/images/index/preloan_risk_bg.png differ diff --git a/src/assets/images/index/preloan_risk_bg2.png b/src/assets/images/index/preloan_risk_bg2.png new file mode 100644 index 0000000..8a42331 Binary files /dev/null and b/src/assets/images/index/preloan_risk_bg2.png differ diff --git a/src/assets/images/index/preloan_risk_icon.png b/src/assets/images/index/preloan_risk_icon.png new file mode 100644 index 0000000..b7ee53d Binary files /dev/null and b/src/assets/images/index/preloan_risk_icon.png differ diff --git a/src/assets/images/index/right.png b/src/assets/images/index/right.png new file mode 100644 index 0000000..c947739 Binary files /dev/null and b/src/assets/images/index/right.png differ diff --git a/src/assets/images/index/srmx.png b/src/assets/images/index/srmx.png new file mode 100644 index 0000000..bb02375 Binary files /dev/null and b/src/assets/images/index/srmx.png differ diff --git a/src/assets/images/index/tgbg.png b/src/assets/images/index/tgbg.png new file mode 100644 index 0000000..39948fb Binary files /dev/null and b/src/assets/images/index/tgbg.png differ diff --git a/src/assets/images/index/wdbg.png b/src/assets/images/index/wdbg.png new file mode 100644 index 0000000..23b44c3 Binary files /dev/null and b/src/assets/images/index/wdbg.png differ diff --git a/src/assets/images/index/wytx.png b/src/assets/images/index/wytx.png new file mode 100644 index 0000000..f193660 Binary files /dev/null and b/src/assets/images/index/wytx.png differ diff --git a/src/assets/images/index/yqhy.png b/src/assets/images/index/yqhy.png new file mode 100644 index 0000000..6bc8e35 Binary files /dev/null and b/src/assets/images/index/yqhy.png differ diff --git a/src/assets/images/index/首页推广海报.gif b/src/assets/images/index/首页推广海报.gif new file mode 100644 index 0000000..914d8b7 Binary files /dev/null and b/src/assets/images/index/首页推广海报.gif differ diff --git a/src/assets/images/invitation.png b/src/assets/images/invitation.png new file mode 100644 index 0000000..183a516 Binary files /dev/null and b/src/assets/images/invitation.png differ diff --git a/src/assets/images/invitation_agent_apply.png b/src/assets/images/invitation_agent_apply.png new file mode 100644 index 0000000..bd23bc2 Binary files /dev/null and b/src/assets/images/invitation_agent_apply.png differ diff --git a/src/assets/images/llqdk.jpg b/src/assets/images/llqdk.jpg new file mode 100644 index 0000000..2966112 Binary files /dev/null and b/src/assets/images/llqdk.jpg differ diff --git a/src/assets/images/login_bg.png b/src/assets/images/login_bg.png new file mode 100644 index 0000000..976b7b7 Binary files /dev/null and b/src/assets/images/login_bg.png differ diff --git a/src/assets/images/me/apply.png b/src/assets/images/me/apply.png new file mode 100644 index 0000000..cef7f88 Binary files /dev/null and b/src/assets/images/me/apply.png differ diff --git a/src/assets/images/me/bg.webp b/src/assets/images/me/bg.webp new file mode 100644 index 0000000..4554939 Binary files /dev/null and b/src/assets/images/me/bg.webp differ diff --git a/src/assets/images/me/check.png b/src/assets/images/me/check.png new file mode 100644 index 0000000..e304be9 Binary files /dev/null and b/src/assets/images/me/check.png differ diff --git a/src/assets/images/me/cwbg.png b/src/assets/images/me/cwbg.png new file mode 100644 index 0000000..ab86132 Binary files /dev/null and b/src/assets/images/me/cwbg.png differ diff --git a/src/assets/images/me/cxjl.png b/src/assets/images/me/cxjl.png new file mode 100644 index 0000000..3f7b8a9 Binary files /dev/null and b/src/assets/images/me/cxjl.png differ diff --git a/src/assets/images/me/dlzn.png b/src/assets/images/me/dlzn.png new file mode 100644 index 0000000..8295c71 Binary files /dev/null and b/src/assets/images/me/dlzn.png differ diff --git a/src/assets/images/me/item_label.png b/src/assets/images/me/item_label.png new file mode 100644 index 0000000..39c327c Binary files /dev/null and b/src/assets/images/me/item_label.png differ diff --git a/src/assets/images/me/level.png b/src/assets/images/me/level.png new file mode 100644 index 0000000..de73b1d Binary files /dev/null and b/src/assets/images/me/level.png differ diff --git a/src/assets/images/me/login_bg.png b/src/assets/images/me/login_bg.png new file mode 100644 index 0000000..46ae1bd Binary files /dev/null and b/src/assets/images/me/login_bg.png differ diff --git a/src/assets/images/me/logout.png b/src/assets/images/me/logout.png new file mode 100644 index 0000000..eb540fc Binary files /dev/null and b/src/assets/images/me/logout.png differ diff --git a/src/assets/images/me/lxkf.png b/src/assets/images/me/lxkf.png new file mode 100644 index 0000000..efdeb31 Binary files /dev/null and b/src/assets/images/me/lxkf.png differ diff --git a/src/assets/images/me/lxkf.svg b/src/assets/images/me/lxkf.svg new file mode 100644 index 0000000..dca9623 --- /dev/null +++ b/src/assets/images/me/lxkf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/me/non_agent.png b/src/assets/images/me/non_agent.png new file mode 100644 index 0000000..6f99a74 Binary files /dev/null and b/src/assets/images/me/non_agent.png differ diff --git a/src/assets/images/me/non_lxkf.png b/src/assets/images/me/non_lxkf.png new file mode 100644 index 0000000..7044c30 Binary files /dev/null and b/src/assets/images/me/non_lxkf.png differ diff --git a/src/assets/images/me/non_yhxy.png b/src/assets/images/me/non_yhxy.png new file mode 100644 index 0000000..2f46d4e Binary files /dev/null and b/src/assets/images/me/non_yhxy.png differ diff --git a/src/assets/images/me/non_ysxy.png b/src/assets/images/me/non_ysxy.png new file mode 100644 index 0000000..561aa1d Binary files /dev/null and b/src/assets/images/me/non_ysxy.png differ diff --git a/src/assets/images/me/service.png b/src/assets/images/me/service.png new file mode 100644 index 0000000..8e6b5d1 Binary files /dev/null and b/src/assets/images/me/service.png differ diff --git a/src/assets/images/me/sjdl.png b/src/assets/images/me/sjdl.png new file mode 100644 index 0000000..8109432 Binary files /dev/null and b/src/assets/images/me/sjdl.png differ diff --git a/src/assets/images/me/sjdl.svg b/src/assets/images/me/sjdl.svg new file mode 100644 index 0000000..3295f51 --- /dev/null +++ b/src/assets/images/me/sjdl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/me/sjxj.svg b/src/assets/images/me/sjxj.svg new file mode 100644 index 0000000..cd5fc1a --- /dev/null +++ b/src/assets/images/me/sjxj.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/me/smrz.png b/src/assets/images/me/smrz.png new file mode 100644 index 0000000..b9a854c Binary files /dev/null and b/src/assets/images/me/smrz.png differ diff --git a/src/assets/images/me/smrz.svg b/src/assets/images/me/smrz.svg new file mode 100644 index 0000000..c719c4b --- /dev/null +++ b/src/assets/images/me/smrz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/me/tcdl.png b/src/assets/images/me/tcdl.png new file mode 100644 index 0000000..74bb15c Binary files /dev/null and b/src/assets/images/me/tcdl.png differ diff --git a/src/assets/images/me/tgcxjl.svg b/src/assets/images/me/tgcxjl.svg new file mode 100644 index 0000000..9cd4ab8 --- /dev/null +++ b/src/assets/images/me/tgcxjl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/me/tx.svg b/src/assets/images/me/tx.svg new file mode 100644 index 0000000..2b185e1 --- /dev/null +++ b/src/assets/images/me/tx.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/me/user.png b/src/assets/images/me/user.png new file mode 100644 index 0000000..a84dd44 Binary files /dev/null and b/src/assets/images/me/user.png differ diff --git a/src/assets/images/me/vip_1.png b/src/assets/images/me/vip_1.png new file mode 100644 index 0000000..c68e167 Binary files /dev/null and b/src/assets/images/me/vip_1.png differ diff --git a/src/assets/images/me/vip_2.png b/src/assets/images/me/vip_2.png new file mode 100644 index 0000000..ca04b72 Binary files /dev/null and b/src/assets/images/me/vip_2.png differ diff --git a/src/assets/images/me/vip_3.png b/src/assets/images/me/vip_3.png new file mode 100644 index 0000000..f0372f4 Binary files /dev/null and b/src/assets/images/me/vip_3.png differ diff --git a/src/assets/images/me/xfhy.png b/src/assets/images/me/xfhy.png new file mode 100644 index 0000000..87c5a9b Binary files /dev/null and b/src/assets/images/me/xfhy.png differ diff --git a/src/assets/images/me/yhxy.png b/src/assets/images/me/yhxy.png new file mode 100644 index 0000000..78f9dbe Binary files /dev/null and b/src/assets/images/me/yhxy.png differ diff --git a/src/assets/images/me/yhxy.svg b/src/assets/images/me/yhxy.svg new file mode 100644 index 0000000..32d5c21 --- /dev/null +++ b/src/assets/images/me/yhxy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/me/yqmgl.png b/src/assets/images/me/yqmgl.png new file mode 100644 index 0000000..2ded7dd Binary files /dev/null and b/src/assets/images/me/yqmgl.png differ diff --git a/src/assets/images/me/yqmgl.svg b/src/assets/images/me/yqmgl.svg new file mode 100644 index 0000000..30727ed --- /dev/null +++ b/src/assets/images/me/yqmgl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/me/yszc.png b/src/assets/images/me/yszc.png new file mode 100644 index 0000000..72ed954 Binary files /dev/null and b/src/assets/images/me/yszc.png differ diff --git a/src/assets/images/me/yszc.svg b/src/assets/images/me/yszc.svg new file mode 100644 index 0000000..4b8a455 --- /dev/null +++ b/src/assets/images/me/yszc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/me/背景@2x.png b/src/assets/images/me/背景@2x.png new file mode 100644 index 0000000..dc1ef06 Binary files /dev/null and b/src/assets/images/me/背景@2x.png differ diff --git a/src/assets/images/mxcl_icon.svg b/src/assets/images/mxcl_icon.svg new file mode 100644 index 0000000..c21e26a --- /dev/null +++ b/src/assets/images/mxcl_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/pendding.svg b/src/assets/images/pendding.svg new file mode 100644 index 0000000..2a182b1 --- /dev/null +++ b/src/assets/images/pendding.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/promote/backgroundcheck_bg.png b/src/assets/images/promote/backgroundcheck_bg.png new file mode 100644 index 0000000..4161b5a Binary files /dev/null and b/src/assets/images/promote/backgroundcheck_bg.png differ diff --git a/src/assets/images/promote/backgroundcheck_logo.png b/src/assets/images/promote/backgroundcheck_logo.png new file mode 100644 index 0000000..81be4f1 Binary files /dev/null and b/src/assets/images/promote/backgroundcheck_logo.png differ diff --git a/src/assets/images/promote/banner_1.png b/src/assets/images/promote/banner_1.png new file mode 100644 index 0000000..3913bed Binary files /dev/null and b/src/assets/images/promote/banner_1.png differ diff --git a/src/assets/images/promote/banner_2.png b/src/assets/images/promote/banner_2.png new file mode 100644 index 0000000..9e66c80 Binary files /dev/null and b/src/assets/images/promote/banner_2.png differ diff --git a/src/assets/images/promote/bzzx.png b/src/assets/images/promote/bzzx.png new file mode 100644 index 0000000..5e464b5 Binary files /dev/null and b/src/assets/images/promote/bzzx.png differ diff --git a/src/assets/images/promote/company_bg.png b/src/assets/images/promote/company_bg.png new file mode 100644 index 0000000..0987a38 Binary files /dev/null and b/src/assets/images/promote/company_bg.png differ diff --git a/src/assets/images/promote/company_logo.png b/src/assets/images/promote/company_logo.png new file mode 100644 index 0000000..fcc8951 Binary files /dev/null and b/src/assets/images/promote/company_logo.png differ diff --git a/src/assets/images/promote/consumer_finance_report_bg.png b/src/assets/images/promote/consumer_finance_report_bg.png new file mode 100644 index 0000000..efeffe3 Binary files /dev/null and b/src/assets/images/promote/consumer_finance_report_bg.png differ diff --git a/src/assets/images/promote/consumer_finance_report_logo.png b/src/assets/images/promote/consumer_finance_report_logo.png new file mode 100644 index 0000000..de31fda Binary files /dev/null and b/src/assets/images/promote/consumer_finance_report_logo.png differ diff --git a/src/assets/images/promote/housekeeping_risk_bg.png b/src/assets/images/promote/housekeeping_risk_bg.png new file mode 100644 index 0000000..df8cdcf Binary files /dev/null and b/src/assets/images/promote/housekeeping_risk_bg.png differ diff --git a/src/assets/images/promote/housekeeping_risk_logo.png b/src/assets/images/promote/housekeeping_risk_logo.png new file mode 100644 index 0000000..8c20a4d Binary files /dev/null and b/src/assets/images/promote/housekeeping_risk_logo.png differ diff --git a/src/assets/images/promote/lock.png b/src/assets/images/promote/lock.png new file mode 100644 index 0000000..dcef4ba Binary files /dev/null and b/src/assets/images/promote/lock.png differ diff --git a/src/assets/images/promote/marriage_risk_bg.png b/src/assets/images/promote/marriage_risk_bg.png new file mode 100644 index 0000000..99bda5e Binary files /dev/null and b/src/assets/images/promote/marriage_risk_bg.png differ diff --git a/src/assets/images/promote/marriage_risk_logo.png b/src/assets/images/promote/marriage_risk_logo.png new file mode 100644 index 0000000..e69725a Binary files /dev/null and b/src/assets/images/promote/marriage_risk_logo.png differ diff --git a/src/assets/images/promote/personal_data_bg.png b/src/assets/images/promote/personal_data_bg.png new file mode 100644 index 0000000..600a266 Binary files /dev/null and b/src/assets/images/promote/personal_data_bg.png differ diff --git a/src/assets/images/promote/personal_data_logo.png b/src/assets/images/promote/personal_data_logo.png new file mode 100644 index 0000000..c7effbc Binary files /dev/null and b/src/assets/images/promote/personal_data_logo.png differ diff --git a/src/assets/images/promote/preloan_background_check_logo.png b/src/assets/images/promote/preloan_background_check_logo.png new file mode 100644 index 0000000..0eab37c Binary files /dev/null and b/src/assets/images/promote/preloan_background_check_logo.png differ diff --git a/src/assets/images/promote/promote_bg.jpg b/src/assets/images/promote/promote_bg.jpg new file mode 100644 index 0000000..62a90c3 Binary files /dev/null and b/src/assets/images/promote/promote_bg.jpg differ diff --git a/src/assets/images/promote/promote_bg2.jpg b/src/assets/images/promote/promote_bg2.jpg new file mode 100644 index 0000000..1944595 Binary files /dev/null and b/src/assets/images/promote/promote_bg2.jpg differ diff --git a/src/assets/images/promote/smrz.png b/src/assets/images/promote/smrz.png new file mode 100644 index 0000000..82d4230 Binary files /dev/null and b/src/assets/images/promote/smrz.png differ diff --git a/src/assets/images/promote/tgbg.png b/src/assets/images/promote/tgbg.png new file mode 100644 index 0000000..1921a10 Binary files /dev/null and b/src/assets/images/promote/tgbg.png differ diff --git a/src/assets/images/promote/tghb.png b/src/assets/images/promote/tghb.png new file mode 100644 index 0000000..e351cb6 Binary files /dev/null and b/src/assets/images/promote/tghb.png differ diff --git a/src/assets/images/promote/ts.png b/src/assets/images/promote/ts.png new file mode 100644 index 0000000..16b1530 Binary files /dev/null and b/src/assets/images/promote/ts.png differ diff --git a/src/assets/images/promote/wdbg.png b/src/assets/images/promote/wdbg.png new file mode 100644 index 0000000..fdc067c Binary files /dev/null and b/src/assets/images/promote/wdbg.png differ diff --git a/src/assets/images/promote/wdxj.png b/src/assets/images/promote/wdxj.png new file mode 100644 index 0000000..8bfd3d1 Binary files /dev/null and b/src/assets/images/promote/wdxj.png differ diff --git a/src/assets/images/promote/wytx.png b/src/assets/images/promote/wytx.png new file mode 100644 index 0000000..9aa200d Binary files /dev/null and b/src/assets/images/promote/wytx.png differ diff --git a/src/assets/images/promote/yqxj.png b/src/assets/images/promote/yqxj.png new file mode 100644 index 0000000..5609c59 Binary files /dev/null and b/src/assets/images/promote/yqxj.png differ diff --git a/src/assets/images/promote/zc.png b/src/assets/images/promote/zc.png new file mode 100644 index 0000000..0787a4f Binary files /dev/null and b/src/assets/images/promote/zc.png differ diff --git a/src/assets/images/promote/zxkf.png b/src/assets/images/promote/zxkf.png new file mode 100644 index 0000000..93e6c61 Binary files /dev/null and b/src/assets/images/promote/zxkf.png differ diff --git a/src/assets/images/promote_bg.png b/src/assets/images/promote_bg.png new file mode 100644 index 0000000..9087024 Binary files /dev/null and b/src/assets/images/promote_bg.png differ diff --git a/src/assets/images/public_security_record_icon.png b/src/assets/images/public_security_record_icon.png new file mode 100644 index 0000000..6fe667f Binary files /dev/null and b/src/assets/images/public_security_record_icon.png differ diff --git a/src/assets/images/qyss_icon.svg b/src/assets/images/qyss_icon.svg new file mode 100644 index 0000000..d460c08 --- /dev/null +++ b/src/assets/images/qyss_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/rchy_icon.svg b/src/assets/images/rchy_icon.svg new file mode 100644 index 0000000..4c67a50 --- /dev/null +++ b/src/assets/images/rchy_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/report/ajgl.png b/src/assets/images/report/ajgl.png new file mode 100644 index 0000000..fd719c5 Binary files /dev/null and b/src/assets/images/report/ajgl.png differ diff --git a/src/assets/images/report/ajlxfb.png b/src/assets/images/report/ajlxfb.png new file mode 100644 index 0000000..f243128 Binary files /dev/null and b/src/assets/images/report/ajlxfb.png differ diff --git a/src/assets/images/report/backgroundcheck_inquire_bg.png b/src/assets/images/report/backgroundcheck_inquire_bg.png new file mode 100644 index 0000000..2f10fed Binary files /dev/null and b/src/assets/images/report/backgroundcheck_inquire_bg.png differ diff --git a/src/assets/images/report/backgroundcheck_report_bg.png b/src/assets/images/report/backgroundcheck_report_bg.png new file mode 100644 index 0000000..133c1c2 Binary files /dev/null and b/src/assets/images/report/backgroundcheck_report_bg.png differ diff --git a/src/assets/images/report/bysj.png b/src/assets/images/report/bysj.png new file mode 100644 index 0000000..5f32219 Binary files /dev/null and b/src/assets/images/report/bysj.png differ diff --git a/src/assets/images/report/dkxwfx.png b/src/assets/images/report/dkxwfx.png new file mode 100644 index 0000000..3d97cb1 Binary files /dev/null and b/src/assets/images/report/dkxwfx.png differ diff --git a/src/assets/images/report/dwtzls.png b/src/assets/images/report/dwtzls.png new file mode 100644 index 0000000..91f9305 Binary files /dev/null and b/src/assets/images/report/dwtzls.png differ diff --git a/src/assets/images/report/fqzgz.png b/src/assets/images/report/fqzgz.png new file mode 100644 index 0000000..a2f56e1 Binary files /dev/null and b/src/assets/images/report/fqzgz.png differ diff --git a/src/assets/images/report/fqzpf.png b/src/assets/images/report/fqzpf.png new file mode 100644 index 0000000..4c488cc Binary files /dev/null and b/src/assets/images/report/fqzpf.png differ diff --git a/src/assets/images/report/fsbq.png b/src/assets/images/report/fsbq.png new file mode 100644 index 0000000..56c1a06 Binary files /dev/null and b/src/assets/images/report/fsbq.png differ diff --git a/src/assets/images/report/fx.png b/src/assets/images/report/fx.png new file mode 100644 index 0000000..b41d56d Binary files /dev/null and b/src/assets/images/report/fx.png differ diff --git a/src/assets/images/report/fxbs.png b/src/assets/images/report/fxbs.png new file mode 100644 index 0000000..63a1320 Binary files /dev/null and b/src/assets/images/report/fxbs.png differ diff --git a/src/assets/images/report/fxgl.png b/src/assets/images/report/fxgl.png new file mode 100644 index 0000000..507448e Binary files /dev/null and b/src/assets/images/report/fxgl.png differ diff --git a/src/assets/images/report/fxmd.png b/src/assets/images/report/fxmd.png new file mode 100644 index 0000000..3449da3 Binary files /dev/null and b/src/assets/images/report/fxmd.png differ diff --git a/src/assets/images/report/fxzbxq.png b/src/assets/images/report/fxzbxq.png new file mode 100644 index 0000000..ec44efa Binary files /dev/null and b/src/assets/images/report/fxzbxq.png differ diff --git a/src/assets/images/report/fxzl.png b/src/assets/images/report/fxzl.png new file mode 100644 index 0000000..03dde00 Binary files /dev/null and b/src/assets/images/report/fxzl.png differ diff --git a/src/assets/images/report/fybgt.png b/src/assets/images/report/fybgt.png new file mode 100644 index 0000000..2895867 Binary files /dev/null and b/src/assets/images/report/fybgt.png differ diff --git a/src/assets/images/report/gazdryhy.png b/src/assets/images/report/gazdryhy.png new file mode 100644 index 0000000..1f0af7f Binary files /dev/null and b/src/assets/images/report/gazdryhy.png differ diff --git a/src/assets/images/report/gazdryhy2.png b/src/assets/images/report/gazdryhy2.png new file mode 100644 index 0000000..3b89223 Binary files /dev/null and b/src/assets/images/report/gazdryhy2.png differ diff --git a/src/assets/images/report/gazdryhycp.png b/src/assets/images/report/gazdryhycp.png new file mode 100644 index 0000000..d079a1f Binary files /dev/null and b/src/assets/images/report/gazdryhycp.png differ diff --git a/src/assets/images/report/gfx.png b/src/assets/images/report/gfx.png new file mode 100644 index 0000000..ce402b1 Binary files /dev/null and b/src/assets/images/report/gfx.png differ diff --git a/src/assets/images/report/gl.png b/src/assets/images/report/gl.png new file mode 100644 index 0000000..546b0fd Binary files /dev/null and b/src/assets/images/report/gl.png differ diff --git a/src/assets/images/report/glfxjd.png b/src/assets/images/report/glfxjd.png new file mode 100644 index 0000000..fff3fbd Binary files /dev/null and b/src/assets/images/report/glfxjd.png differ diff --git a/src/assets/images/report/glfxjd2.png b/src/assets/images/report/glfxjd2.png new file mode 100644 index 0000000..72524ba Binary files /dev/null and b/src/assets/images/report/glfxjd2.png differ diff --git a/src/assets/images/report/glsfz.png b/src/assets/images/report/glsfz.png new file mode 100644 index 0000000..6852094 Binary files /dev/null and b/src/assets/images/report/glsfz.png differ diff --git a/src/assets/images/report/glsjh.png b/src/assets/images/report/glsjh.png new file mode 100644 index 0000000..ab59c59 Binary files /dev/null and b/src/assets/images/report/glsjh.png differ diff --git a/src/assets/images/report/grdsj_inquire_bg.png b/src/assets/images/report/grdsj_inquire_bg.png new file mode 100644 index 0000000..1322479 Binary files /dev/null and b/src/assets/images/report/grdsj_inquire_bg.png differ diff --git a/src/assets/images/report/grdsj_report_bg.png b/src/assets/images/report/grdsj_report_bg.png new file mode 100644 index 0000000..7b6e139 Binary files /dev/null and b/src/assets/images/report/grdsj_report_bg.png differ diff --git a/src/assets/images/report/gsdfx.png b/src/assets/images/report/gsdfx.png new file mode 100644 index 0000000..3a1a9d9 Binary files /dev/null and b/src/assets/images/report/gsdfx.png differ diff --git a/src/assets/images/report/hktj.png b/src/assets/images/report/hktj.png new file mode 100644 index 0000000..fae5ea1 Binary files /dev/null and b/src/assets/images/report/hktj.png differ diff --git a/src/assets/images/report/hkylfx.png b/src/assets/images/report/hkylfx.png new file mode 100644 index 0000000..6de3f34 Binary files /dev/null and b/src/assets/images/report/hkylfx.png differ diff --git a/src/assets/images/report/homeservice_inquire_bg.png b/src/assets/images/report/homeservice_inquire_bg.png new file mode 100644 index 0000000..2acb185 Binary files /dev/null and b/src/assets/images/report/homeservice_inquire_bg.png differ diff --git a/src/assets/images/report/homeservice_report_bg.png b/src/assets/images/report/homeservice_report_bg.png new file mode 100644 index 0000000..97b46de Binary files /dev/null and b/src/assets/images/report/homeservice_report_bg.png differ diff --git a/src/assets/images/report/j24gyfkqk.png b/src/assets/images/report/j24gyfkqk.png new file mode 100644 index 0000000..008368d Binary files /dev/null and b/src/assets/images/report/j24gyfkqk.png differ diff --git a/src/assets/images/report/jdjgkhjdlx.png b/src/assets/images/report/jdjgkhjdlx.png new file mode 100644 index 0000000..af900f8 Binary files /dev/null and b/src/assets/images/report/jdjgkhjdlx.png differ diff --git a/src/assets/images/report/jdpg.png b/src/assets/images/report/jdpg.png new file mode 100644 index 0000000..88b3966 Binary files /dev/null and b/src/assets/images/report/jdpg.png differ diff --git a/src/assets/images/report/jdpggl.png b/src/assets/images/report/jdpggl.png new file mode 100644 index 0000000..dbd77d1 Binary files /dev/null and b/src/assets/images/report/jdpggl.png differ diff --git a/src/assets/images/report/jgfx.png b/src/assets/images/report/jgfx.png new file mode 100644 index 0000000..398ba3c Binary files /dev/null and b/src/assets/images/report/jgfx.png differ diff --git a/src/assets/images/report/jgztxx.png b/src/assets/images/report/jgztxx.png new file mode 100644 index 0000000..ae60ed9 Binary files /dev/null and b/src/assets/images/report/jgztxx.png differ diff --git a/src/assets/images/report/jyyc.png b/src/assets/images/report/jyyc.png new file mode 100644 index 0000000..4144ff9 Binary files /dev/null and b/src/assets/images/report/jyyc.png differ diff --git a/src/assets/images/report/khlxjdbx.png b/src/assets/images/report/khlxjdbx.png new file mode 100644 index 0000000..de4f358 Binary files /dev/null and b/src/assets/images/report/khlxjdbx.png differ diff --git a/src/assets/images/report/lsjdxw.png b/src/assets/images/report/lsjdxw.png new file mode 100644 index 0000000..e973e72 Binary files /dev/null and b/src/assets/images/report/lsjdxw.png differ diff --git a/src/assets/images/report/lswyjl.png b/src/assets/images/report/lswyjl.png new file mode 100644 index 0000000..bd36465 Binary files /dev/null and b/src/assets/images/report/lswyjl.png differ diff --git a/src/assets/images/report/lyqk.png b/src/assets/images/report/lyqk.png new file mode 100644 index 0000000..f10ff79 Binary files /dev/null and b/src/assets/images/report/lyqk.png differ diff --git a/src/assets/images/report/lyxxxq.png b/src/assets/images/report/lyxxxq.png new file mode 100644 index 0000000..5a78c2b Binary files /dev/null and b/src/assets/images/report/lyxxxq.png differ diff --git a/src/assets/images/report/marriage_inquire_bg.png b/src/assets/images/report/marriage_inquire_bg.png new file mode 100644 index 0000000..48c167b Binary files /dev/null and b/src/assets/images/report/marriage_inquire_bg.png differ diff --git a/src/assets/images/report/marriage_report_bg.jpg b/src/assets/images/report/marriage_report_bg.jpg new file mode 100644 index 0000000..5752966 Binary files /dev/null and b/src/assets/images/report/marriage_report_bg.jpg differ diff --git a/src/assets/images/report/marriage_report_bg.png b/src/assets/images/report/marriage_report_bg.png new file mode 100644 index 0000000..d57e403 Binary files /dev/null and b/src/assets/images/report/marriage_report_bg.png differ diff --git a/src/assets/images/report/ms.png b/src/assets/images/report/ms.png new file mode 100644 index 0000000..e0f4ea0 Binary files /dev/null and b/src/assets/images/report/ms.png differ diff --git a/src/assets/images/report/mzfxbz.png b/src/assets/images/report/mzfxbz.png new file mode 100644 index 0000000..c570ab7 Binary files /dev/null and b/src/assets/images/report/mzfxbz.png differ diff --git a/src/assets/images/report/qsgg.png b/src/assets/images/report/qsgg.png new file mode 100644 index 0000000..e5055e8 Binary files /dev/null and b/src/assets/images/report/qsgg.png differ diff --git a/src/assets/images/report/qspc.png b/src/assets/images/report/qspc.png new file mode 100644 index 0000000..432854c Binary files /dev/null and b/src/assets/images/report/qspc.png differ diff --git a/src/assets/images/report/rkpm.png b/src/assets/images/report/rkpm.png new file mode 100644 index 0000000..c8000cc Binary files /dev/null and b/src/assets/images/report/rkpm.png differ diff --git a/src/assets/images/report/rzls.png b/src/assets/images/report/rzls.png new file mode 100644 index 0000000..3793b96 Binary files /dev/null and b/src/assets/images/report/rzls.png differ diff --git a/src/assets/images/report/sagg.png b/src/assets/images/report/sagg.png new file mode 100644 index 0000000..b1294a3 Binary files /dev/null and b/src/assets/images/report/sagg.png differ diff --git a/src/assets/images/report/sdszhycp.png b/src/assets/images/report/sdszhycp.png new file mode 100644 index 0000000..5ee9d43 Binary files /dev/null and b/src/assets/images/report/sdszhycp.png differ diff --git a/src/assets/images/report/sdszryhy.png b/src/assets/images/report/sdszryhy.png new file mode 100644 index 0000000..fffcc79 Binary files /dev/null and b/src/assets/images/report/sdszryhy.png differ diff --git a/src/assets/images/report/sffxhy.png b/src/assets/images/report/sffxhy.png new file mode 100644 index 0000000..af8dee8 Binary files /dev/null and b/src/assets/images/report/sffxhy.png differ diff --git a/src/assets/images/report/sfxxhy.png b/src/assets/images/report/sfxxhy.png new file mode 100644 index 0000000..5dba8b0 Binary files /dev/null and b/src/assets/images/report/sfxxhy.png differ diff --git a/src/assets/images/report/sfz.png b/src/assets/images/report/sfz.png new file mode 100644 index 0000000..6563099 Binary files /dev/null and b/src/assets/images/report/sfz.png differ diff --git a/src/assets/images/report/shjy.png b/src/assets/images/report/shjy.png new file mode 100644 index 0000000..9eaf1a7 Binary files /dev/null and b/src/assets/images/report/shjy.png differ diff --git a/src/assets/images/report/sj.png b/src/assets/images/report/sj.png new file mode 100644 index 0000000..360147a Binary files /dev/null and b/src/assets/images/report/sj.png differ diff --git a/src/assets/images/report/sjh.png b/src/assets/images/report/sjh.png new file mode 100644 index 0000000..8d89fe6 Binary files /dev/null and b/src/assets/images/report/sjh.png differ diff --git a/src/assets/images/report/sjqsfx.png b/src/assets/images/report/sjqsfx.png new file mode 100644 index 0000000..3f39071 Binary files /dev/null and b/src/assets/images/report/sjqsfx.png differ diff --git a/src/assets/images/report/slbg_inquire_icon.png b/src/assets/images/report/slbg_inquire_icon.png new file mode 100644 index 0000000..3d544ed Binary files /dev/null and b/src/assets/images/report/slbg_inquire_icon.png differ diff --git a/src/assets/images/report/srbq.png b/src/assets/images/report/srbq.png new file mode 100644 index 0000000..0b4e7bd Binary files /dev/null and b/src/assets/images/report/srbq.png differ diff --git a/src/assets/images/report/srpg.png b/src/assets/images/report/srpg.png new file mode 100644 index 0000000..ab62b46 Binary files /dev/null and b/src/assets/images/report/srpg.png differ diff --git a/src/assets/images/report/ssfxfx.png b/src/assets/images/report/ssfxfx.png new file mode 100644 index 0000000..4f799f1 Binary files /dev/null and b/src/assets/images/report/ssfxfx.png differ diff --git a/src/assets/images/report/ssfxztgl.png b/src/assets/images/report/ssfxztgl.png new file mode 100644 index 0000000..62e0d6e Binary files /dev/null and b/src/assets/images/report/ssfxztgl.png differ diff --git a/src/assets/images/report/sswf.png b/src/assets/images/report/sswf.png new file mode 100644 index 0000000..7011c09 Binary files /dev/null and b/src/assets/images/report/sswf.png differ diff --git a/src/assets/images/report/swfx.png b/src/assets/images/report/swfx.png new file mode 100644 index 0000000..557f139 Binary files /dev/null and b/src/assets/images/report/swfx.png differ diff --git a/src/assets/images/report/sxaj.png b/src/assets/images/report/sxaj.png new file mode 100644 index 0000000..33c8327 Binary files /dev/null and b/src/assets/images/report/sxaj.png differ diff --git a/src/assets/images/report/sxxq.png b/src/assets/images/report/sxxq.png new file mode 100644 index 0000000..1643faa Binary files /dev/null and b/src/assets/images/report/sxxq.png differ diff --git a/src/assets/images/report/title.png b/src/assets/images/report/title.png new file mode 100644 index 0000000..3e84f7f Binary files /dev/null and b/src/assets/images/report/title.png differ diff --git a/src/assets/images/report/title_inquire_bg.png b/src/assets/images/report/title_inquire_bg.png new file mode 100644 index 0000000..4063a21 Binary files /dev/null and b/src/assets/images/report/title_inquire_bg.png differ diff --git a/src/assets/images/report/title_inquire_bg_green.png b/src/assets/images/report/title_inquire_bg_green.png new file mode 100644 index 0000000..73eedbf Binary files /dev/null and b/src/assets/images/report/title_inquire_bg_green.png differ diff --git a/src/assets/images/report/title_inquire_bg_red.png b/src/assets/images/report/title_inquire_bg_red.png new file mode 100644 index 0000000..f31ccbf Binary files /dev/null and b/src/assets/images/report/title_inquire_bg_red.png differ diff --git a/src/assets/images/report/title_inquire_bg_yellow.png b/src/assets/images/report/title_inquire_bg_yellow.png new file mode 100644 index 0000000..e6dbe9b Binary files /dev/null and b/src/assets/images/report/title_inquire_bg_yellow.png differ diff --git a/src/assets/images/report/wmz.png b/src/assets/images/report/wmz.png new file mode 100644 index 0000000..7564469 Binary files /dev/null and b/src/assets/images/report/wmz.png differ diff --git a/src/assets/images/report/wxts_icon.png b/src/assets/images/report/wxts_icon.png new file mode 100644 index 0000000..48fec05 Binary files /dev/null and b/src/assets/images/report/wxts_icon.png differ diff --git a/src/assets/images/report/xgaj.png b/src/assets/images/report/xgaj.png new file mode 100644 index 0000000..a610975 Binary files /dev/null and b/src/assets/images/report/xgaj.png differ diff --git a/src/assets/images/report/xjbg_inquire_bg.png b/src/assets/images/report/xjbg_inquire_bg.png new file mode 100644 index 0000000..418893b Binary files /dev/null and b/src/assets/images/report/xjbg_inquire_bg.png differ diff --git a/src/assets/images/report/xjbg_report_bg.png b/src/assets/images/report/xjbg_report_bg.png new file mode 100644 index 0000000..3426674 Binary files /dev/null and b/src/assets/images/report/xjbg_report_bg.png differ diff --git a/src/assets/images/report/xl.png b/src/assets/images/report/xl.png new file mode 100644 index 0000000..ec0cbd0 Binary files /dev/null and b/src/assets/images/report/xl.png differ diff --git a/src/assets/images/report/xs.png b/src/assets/images/report/xs.png new file mode 100644 index 0000000..1d41510 Binary files /dev/null and b/src/assets/images/report/xs.png differ diff --git a/src/assets/images/report/xwqy_inquire_bg.png b/src/assets/images/report/xwqy_inquire_bg.png new file mode 100644 index 0000000..9d92992 Binary files /dev/null and b/src/assets/images/report/xwqy_inquire_bg.png differ diff --git a/src/assets/images/report/xwqy_report_bg.png b/src/assets/images/report/xwqy_report_bg.png new file mode 100644 index 0000000..940c68f Binary files /dev/null and b/src/assets/images/report/xwqy_report_bg.png differ diff --git a/src/assets/images/report/xxlx.png b/src/assets/images/report/xxlx.png new file mode 100644 index 0000000..3a7222d Binary files /dev/null and b/src/assets/images/report/xxlx.png differ diff --git a/src/assets/images/report/xxxs.png b/src/assets/images/report/xxxs.png new file mode 100644 index 0000000..2b191f1 Binary files /dev/null and b/src/assets/images/report/xxxs.png differ diff --git a/src/assets/images/report/xypf.png b/src/assets/images/report/xypf.png new file mode 100644 index 0000000..5cea995 Binary files /dev/null and b/src/assets/images/report/xypf.png differ diff --git a/src/assets/images/report/xypf2.png b/src/assets/images/report/xypf2.png new file mode 100644 index 0000000..cc4c254 Binary files /dev/null and b/src/assets/images/report/xypf2.png differ diff --git a/src/assets/images/report/xz.png b/src/assets/images/report/xz.png new file mode 100644 index 0000000..f8dbd24 Binary files /dev/null and b/src/assets/images/report/xz.png differ diff --git a/src/assets/images/report/xzcf.png b/src/assets/images/report/xzcf.png new file mode 100644 index 0000000..fd87673 Binary files /dev/null and b/src/assets/images/report/xzcf.png differ diff --git a/src/assets/images/report/ycsjdjdbx.png b/src/assets/images/report/ycsjdjdbx.png new file mode 100644 index 0000000..f01adf4 Binary files /dev/null and b/src/assets/images/report/ycsjdjdbx.png differ diff --git a/src/assets/images/report/yqfx.png b/src/assets/images/report/yqfx.png new file mode 100644 index 0000000..5c37841 Binary files /dev/null and b/src/assets/images/report/yqfx.png differ diff --git a/src/assets/images/report/yqfxgl.png b/src/assets/images/report/yqfxgl.png new file mode 100644 index 0000000..d87c3ff Binary files /dev/null and b/src/assets/images/report/yqfxgl.png differ diff --git a/src/assets/images/report/yqsjfb.png b/src/assets/images/report/yqsjfb.png new file mode 100644 index 0000000..3fdb12c Binary files /dev/null and b/src/assets/images/report/yqsjfb.png differ diff --git a/src/assets/images/report/yqxxxq.png b/src/assets/images/report/yqxxxq.png new file mode 100644 index 0000000..cab73b9 Binary files /dev/null and b/src/assets/images/report/yqxxxq.png differ diff --git a/src/assets/images/report/yshc.png b/src/assets/images/report/yshc.png new file mode 100644 index 0000000..c630032 Binary files /dev/null and b/src/assets/images/report/yshc.png differ diff --git a/src/assets/images/report/ywlxjdbx.png b/src/assets/images/report/ywlxjdbx.png new file mode 100644 index 0000000..7fc4450 Binary files /dev/null and b/src/assets/images/report/ywlxjdbx.png differ diff --git a/src/assets/images/report/yyshy.png b/src/assets/images/report/yyshy.png new file mode 100644 index 0000000..975b17e Binary files /dev/null and b/src/assets/images/report/yyshy.png differ diff --git a/src/assets/images/report/yysjy.png b/src/assets/images/report/yysjy.png new file mode 100644 index 0000000..2087cd4 Binary files /dev/null and b/src/assets/images/report/yysjy.png differ diff --git a/src/assets/images/report/yzgz.png b/src/assets/images/report/yzgz.png new file mode 100644 index 0000000..688ee42 Binary files /dev/null and b/src/assets/images/report/yzgz.png differ diff --git a/src/assets/images/report/zfx.png b/src/assets/images/report/zfx.png new file mode 100644 index 0000000..7a9f3a5 Binary files /dev/null and b/src/assets/images/report/zfx.png differ diff --git a/src/assets/images/report/zk.png b/src/assets/images/report/zk.png new file mode 100644 index 0000000..0387bdb Binary files /dev/null and b/src/assets/images/report/zk.png differ diff --git a/src/assets/images/report/zlfxpg.png b/src/assets/images/report/zlfxpg.png new file mode 100644 index 0000000..7e98ca0 Binary files /dev/null and b/src/assets/images/report/zlfxpg.png differ diff --git a/src/assets/images/report/zlfxpggl.png b/src/assets/images/report/zlfxpggl.png new file mode 100644 index 0000000..7ef0555 Binary files /dev/null and b/src/assets/images/report/zlfxpggl.png differ diff --git a/src/assets/images/report/zlxw.png b/src/assets/images/report/zlxw.png new file mode 100644 index 0000000..913bf0e Binary files /dev/null and b/src/assets/images/report/zlxw.png differ diff --git a/src/assets/images/report/zq.png b/src/assets/images/report/zq.png new file mode 100644 index 0000000..79c5be6 Binary files /dev/null and b/src/assets/images/report/zq.png differ diff --git a/src/assets/images/report/zwsc.png b/src/assets/images/report/zwsc.png new file mode 100644 index 0000000..638e5da Binary files /dev/null and b/src/assets/images/report/zwsc.png differ diff --git a/src/assets/images/report/zxaj.png b/src/assets/images/report/zxaj.png new file mode 100644 index 0000000..ec2532c Binary files /dev/null and b/src/assets/images/report/zxaj.png differ diff --git a/src/assets/images/report/zyjy.png b/src/assets/images/report/zyjy.png new file mode 100644 index 0000000..c750de9 Binary files /dev/null and b/src/assets/images/report/zyjy.png differ diff --git a/src/assets/images/report/zymc.png b/src/assets/images/report/zymc.png new file mode 100644 index 0000000..3cdcf2d Binary files /dev/null and b/src/assets/images/report/zymc.png differ diff --git a/src/assets/images/report/报告页黄色/ajgl.png b/src/assets/images/report/报告页黄色/ajgl.png new file mode 100644 index 0000000..fd719c5 Binary files /dev/null and b/src/assets/images/report/报告页黄色/ajgl.png differ diff --git a/src/assets/images/report/报告页黄色/dkxwfx.png b/src/assets/images/report/报告页黄色/dkxwfx.png new file mode 100644 index 0000000..3d97cb1 Binary files /dev/null and b/src/assets/images/report/报告页黄色/dkxwfx.png differ diff --git a/src/assets/images/report/报告页黄色/dwtzls.png b/src/assets/images/report/报告页黄色/dwtzls.png new file mode 100644 index 0000000..91f9305 Binary files /dev/null and b/src/assets/images/report/报告页黄色/dwtzls.png differ diff --git a/src/assets/images/report/报告页黄色/fqzgz.png b/src/assets/images/report/报告页黄色/fqzgz.png new file mode 100644 index 0000000..a2f56e1 Binary files /dev/null and b/src/assets/images/report/报告页黄色/fqzgz.png differ diff --git a/src/assets/images/report/报告页黄色/fqzpf.png b/src/assets/images/report/报告页黄色/fqzpf.png new file mode 100644 index 0000000..4c488cc Binary files /dev/null and b/src/assets/images/report/报告页黄色/fqzpf.png differ diff --git a/src/assets/images/report/报告页黄色/fxbs.png b/src/assets/images/report/报告页黄色/fxbs.png new file mode 100644 index 0000000..63a1320 Binary files /dev/null and b/src/assets/images/report/报告页黄色/fxbs.png differ diff --git a/src/assets/images/report/报告页黄色/fxgl.png b/src/assets/images/report/报告页黄色/fxgl.png new file mode 100644 index 0000000..507448e Binary files /dev/null and b/src/assets/images/report/报告页黄色/fxgl.png differ diff --git a/src/assets/images/report/报告页黄色/fxmd.png b/src/assets/images/report/报告页黄色/fxmd.png new file mode 100644 index 0000000..3449da3 Binary files /dev/null and b/src/assets/images/report/报告页黄色/fxmd.png differ diff --git a/src/assets/images/report/报告页黄色/fxzbxq.png b/src/assets/images/report/报告页黄色/fxzbxq.png new file mode 100644 index 0000000..ec44efa Binary files /dev/null and b/src/assets/images/report/报告页黄色/fxzbxq.png differ diff --git a/src/assets/images/report/报告页黄色/fxzl.png b/src/assets/images/report/报告页黄色/fxzl.png new file mode 100644 index 0000000..03dde00 Binary files /dev/null and b/src/assets/images/report/报告页黄色/fxzl.png differ diff --git a/src/assets/images/report/报告页黄色/gazdryhy.png b/src/assets/images/report/报告页黄色/gazdryhy.png new file mode 100644 index 0000000..1f0af7f Binary files /dev/null and b/src/assets/images/report/报告页黄色/gazdryhy.png differ diff --git a/src/assets/images/report/报告页黄色/gazdryhy2.png b/src/assets/images/report/报告页黄色/gazdryhy2.png new file mode 100644 index 0000000..3b89223 Binary files /dev/null and b/src/assets/images/report/报告页黄色/gazdryhy2.png differ diff --git a/src/assets/images/report/报告页黄色/gazdryhycp.png b/src/assets/images/report/报告页黄色/gazdryhycp.png new file mode 100644 index 0000000..d079a1f Binary files /dev/null and b/src/assets/images/report/报告页黄色/gazdryhycp.png differ diff --git a/src/assets/images/report/报告页黄色/gl.png b/src/assets/images/report/报告页黄色/gl.png new file mode 100644 index 0000000..546b0fd Binary files /dev/null and b/src/assets/images/report/报告页黄色/gl.png differ diff --git a/src/assets/images/report/报告页黄色/glfxjd.png b/src/assets/images/report/报告页黄色/glfxjd.png new file mode 100644 index 0000000..fff3fbd Binary files /dev/null and b/src/assets/images/report/报告页黄色/glfxjd.png differ diff --git a/src/assets/images/report/报告页黄色/glfxjd2.png b/src/assets/images/report/报告页黄色/glfxjd2.png new file mode 100644 index 0000000..72524ba Binary files /dev/null and b/src/assets/images/report/报告页黄色/glfxjd2.png differ diff --git a/src/assets/images/report/报告页黄色/gsdfx.png b/src/assets/images/report/报告页黄色/gsdfx.png new file mode 100644 index 0000000..3a1a9d9 Binary files /dev/null and b/src/assets/images/report/报告页黄色/gsdfx.png differ diff --git a/src/assets/images/report/报告页黄色/hktj.png b/src/assets/images/report/报告页黄色/hktj.png new file mode 100644 index 0000000..fae5ea1 Binary files /dev/null and b/src/assets/images/report/报告页黄色/hktj.png differ diff --git a/src/assets/images/report/报告页黄色/hkylfx.png b/src/assets/images/report/报告页黄色/hkylfx.png new file mode 100644 index 0000000..6de3f34 Binary files /dev/null and b/src/assets/images/report/报告页黄色/hkylfx.png differ diff --git a/src/assets/images/report/报告页黄色/j24gyfkqk.png b/src/assets/images/report/报告页黄色/j24gyfkqk.png new file mode 100644 index 0000000..008368d Binary files /dev/null and b/src/assets/images/report/报告页黄色/j24gyfkqk.png differ diff --git a/src/assets/images/report/报告页黄色/jdjgkhjdlx.png b/src/assets/images/report/报告页黄色/jdjgkhjdlx.png new file mode 100644 index 0000000..af900f8 Binary files /dev/null and b/src/assets/images/report/报告页黄色/jdjgkhjdlx.png differ diff --git a/src/assets/images/report/报告页黄色/jdpg.png b/src/assets/images/report/报告页黄色/jdpg.png new file mode 100644 index 0000000..88b3966 Binary files /dev/null and b/src/assets/images/report/报告页黄色/jdpg.png differ diff --git a/src/assets/images/report/报告页黄色/jdpggl.png b/src/assets/images/report/报告页黄色/jdpggl.png new file mode 100644 index 0000000..dbd77d1 Binary files /dev/null and b/src/assets/images/report/报告页黄色/jdpggl.png differ diff --git a/src/assets/images/report/报告页黄色/jgfx.png b/src/assets/images/report/报告页黄色/jgfx.png new file mode 100644 index 0000000..398ba3c Binary files /dev/null and b/src/assets/images/report/报告页黄色/jgfx.png differ diff --git a/src/assets/images/report/报告页黄色/jyyc.png b/src/assets/images/report/报告页黄色/jyyc.png new file mode 100644 index 0000000..4144ff9 Binary files /dev/null and b/src/assets/images/report/报告页黄色/jyyc.png differ diff --git a/src/assets/images/report/报告页黄色/lsjdxw.png b/src/assets/images/report/报告页黄色/lsjdxw.png new file mode 100644 index 0000000..e973e72 Binary files /dev/null and b/src/assets/images/report/报告页黄色/lsjdxw.png differ diff --git a/src/assets/images/report/报告页黄色/lswyjl.png b/src/assets/images/report/报告页黄色/lswyjl.png new file mode 100644 index 0000000..bd36465 Binary files /dev/null and b/src/assets/images/report/报告页黄色/lswyjl.png differ diff --git a/src/assets/images/report/报告页黄色/lyqk.png b/src/assets/images/report/报告页黄色/lyqk.png new file mode 100644 index 0000000..f10ff79 Binary files /dev/null and b/src/assets/images/report/报告页黄色/lyqk.png differ diff --git a/src/assets/images/report/报告页黄色/lyxxxq.png b/src/assets/images/report/报告页黄色/lyxxxq.png new file mode 100644 index 0000000..5a78c2b Binary files /dev/null and b/src/assets/images/report/报告页黄色/lyxxxq.png differ diff --git a/src/assets/images/report/报告页黄色/mzfxbz.png b/src/assets/images/report/报告页黄色/mzfxbz.png new file mode 100644 index 0000000..c570ab7 Binary files /dev/null and b/src/assets/images/report/报告页黄色/mzfxbz.png differ diff --git a/src/assets/images/report/报告页黄色/qsgg.png b/src/assets/images/report/报告页黄色/qsgg.png new file mode 100644 index 0000000..e5055e8 Binary files /dev/null and b/src/assets/images/report/报告页黄色/qsgg.png differ diff --git a/src/assets/images/report/报告页黄色/rzls.png b/src/assets/images/report/报告页黄色/rzls.png new file mode 100644 index 0000000..3793b96 Binary files /dev/null and b/src/assets/images/report/报告页黄色/rzls.png differ diff --git a/src/assets/images/report/报告页黄色/sdszhycp.png b/src/assets/images/report/报告页黄色/sdszhycp.png new file mode 100644 index 0000000..5ee9d43 Binary files /dev/null and b/src/assets/images/report/报告页黄色/sdszhycp.png differ diff --git a/src/assets/images/report/报告页黄色/sdszryhy.png b/src/assets/images/report/报告页黄色/sdszryhy.png new file mode 100644 index 0000000..fffcc79 Binary files /dev/null and b/src/assets/images/report/报告页黄色/sdszryhy.png differ diff --git a/src/assets/images/report/报告页黄色/sffxhy.png b/src/assets/images/report/报告页黄色/sffxhy.png new file mode 100644 index 0000000..af8dee8 Binary files /dev/null and b/src/assets/images/report/报告页黄色/sffxhy.png differ diff --git a/src/assets/images/report/报告页黄色/sfxxhy.png b/src/assets/images/report/报告页黄色/sfxxhy.png new file mode 100644 index 0000000..5dba8b0 Binary files /dev/null and b/src/assets/images/report/报告页黄色/sfxxhy.png differ diff --git a/src/assets/images/report/报告页黄色/sfz.png b/src/assets/images/report/报告页黄色/sfz.png new file mode 100644 index 0000000..6563099 Binary files /dev/null and b/src/assets/images/report/报告页黄色/sfz.png differ diff --git a/src/assets/images/report/报告页黄色/shjy.png b/src/assets/images/report/报告页黄色/shjy.png new file mode 100644 index 0000000..9eaf1a7 Binary files /dev/null and b/src/assets/images/report/报告页黄色/shjy.png differ diff --git a/src/assets/images/report/报告页黄色/sjh.png b/src/assets/images/report/报告页黄色/sjh.png new file mode 100644 index 0000000..8d89fe6 Binary files /dev/null and b/src/assets/images/report/报告页黄色/sjh.png differ diff --git a/src/assets/images/report/报告页黄色/sjqsfx.png b/src/assets/images/report/报告页黄色/sjqsfx.png new file mode 100644 index 0000000..3f39071 Binary files /dev/null and b/src/assets/images/report/报告页黄色/sjqsfx.png differ diff --git a/src/assets/images/report/报告页黄色/srpg.png b/src/assets/images/report/报告页黄色/srpg.png new file mode 100644 index 0000000..ab62b46 Binary files /dev/null and b/src/assets/images/report/报告页黄色/srpg.png differ diff --git a/src/assets/images/report/报告页黄色/ssfxfx.png b/src/assets/images/report/报告页黄色/ssfxfx.png new file mode 100644 index 0000000..4f799f1 Binary files /dev/null and b/src/assets/images/report/报告页黄色/ssfxfx.png differ diff --git a/src/assets/images/report/报告页黄色/ssfxztgl.png b/src/assets/images/report/报告页黄色/ssfxztgl.png new file mode 100644 index 0000000..62e0d6e Binary files /dev/null and b/src/assets/images/report/报告页黄色/ssfxztgl.png differ diff --git a/src/assets/images/report/报告页黄色/sswf.png b/src/assets/images/report/报告页黄色/sswf.png new file mode 100644 index 0000000..7011c09 Binary files /dev/null and b/src/assets/images/report/报告页黄色/sswf.png differ diff --git a/src/assets/images/report/报告页黄色/swfx.png b/src/assets/images/report/报告页黄色/swfx.png new file mode 100644 index 0000000..557f139 Binary files /dev/null and b/src/assets/images/report/报告页黄色/swfx.png differ diff --git a/src/assets/images/report/报告页黄色/sxxq.png b/src/assets/images/report/报告页黄色/sxxq.png new file mode 100644 index 0000000..1643faa Binary files /dev/null and b/src/assets/images/report/报告页黄色/sxxq.png differ diff --git a/src/assets/images/report/报告页黄色/xypf.png b/src/assets/images/report/报告页黄色/xypf.png new file mode 100644 index 0000000..5cea995 Binary files /dev/null and b/src/assets/images/report/报告页黄色/xypf.png differ diff --git a/src/assets/images/report/报告页黄色/xypf2.png b/src/assets/images/report/报告页黄色/xypf2.png new file mode 100644 index 0000000..cc4c254 Binary files /dev/null and b/src/assets/images/report/报告页黄色/xypf2.png differ diff --git a/src/assets/images/report/报告页黄色/xzcf.png b/src/assets/images/report/报告页黄色/xzcf.png new file mode 100644 index 0000000..fd87673 Binary files /dev/null and b/src/assets/images/report/报告页黄色/xzcf.png differ diff --git a/src/assets/images/report/报告页黄色/ycsjdjdbx.png b/src/assets/images/report/报告页黄色/ycsjdjdbx.png new file mode 100644 index 0000000..f01adf4 Binary files /dev/null and b/src/assets/images/report/报告页黄色/ycsjdjdbx.png differ diff --git a/src/assets/images/report/报告页黄色/yqfx.png b/src/assets/images/report/报告页黄色/yqfx.png new file mode 100644 index 0000000..5c37841 Binary files /dev/null and b/src/assets/images/report/报告页黄色/yqfx.png differ diff --git a/src/assets/images/report/报告页黄色/yqfxgl.png b/src/assets/images/report/报告页黄色/yqfxgl.png new file mode 100644 index 0000000..d87c3ff Binary files /dev/null and b/src/assets/images/report/报告页黄色/yqfxgl.png differ diff --git a/src/assets/images/report/报告页黄色/yqsjfb.png b/src/assets/images/report/报告页黄色/yqsjfb.png new file mode 100644 index 0000000..3fdb12c Binary files /dev/null and b/src/assets/images/report/报告页黄色/yqsjfb.png differ diff --git a/src/assets/images/report/报告页黄色/yqxxxq.png b/src/assets/images/report/报告页黄色/yqxxxq.png new file mode 100644 index 0000000..cab73b9 Binary files /dev/null and b/src/assets/images/report/报告页黄色/yqxxxq.png differ diff --git a/src/assets/images/report/报告页黄色/yshc.png b/src/assets/images/report/报告页黄色/yshc.png new file mode 100644 index 0000000..c630032 Binary files /dev/null and b/src/assets/images/report/报告页黄色/yshc.png differ diff --git a/src/assets/images/report/报告页黄色/ywlxjdbx.png b/src/assets/images/report/报告页黄色/ywlxjdbx.png new file mode 100644 index 0000000..7fc4450 Binary files /dev/null and b/src/assets/images/report/报告页黄色/ywlxjdbx.png differ diff --git a/src/assets/images/report/报告页黄色/yyshy.png b/src/assets/images/report/报告页黄色/yyshy.png new file mode 100644 index 0000000..975b17e Binary files /dev/null and b/src/assets/images/report/报告页黄色/yyshy.png differ diff --git a/src/assets/images/report/报告页黄色/yzgz.png b/src/assets/images/report/报告页黄色/yzgz.png new file mode 100644 index 0000000..688ee42 Binary files /dev/null and b/src/assets/images/report/报告页黄色/yzgz.png differ diff --git a/src/assets/images/report/报告页黄色/zlfxpg.png b/src/assets/images/report/报告页黄色/zlfxpg.png new file mode 100644 index 0000000..7e98ca0 Binary files /dev/null and b/src/assets/images/report/报告页黄色/zlfxpg.png differ diff --git a/src/assets/images/report/报告页黄色/zlfxpggl.png b/src/assets/images/report/报告页黄色/zlfxpggl.png new file mode 100644 index 0000000..7ef0555 Binary files /dev/null and b/src/assets/images/report/报告页黄色/zlfxpggl.png differ diff --git a/src/assets/images/report/报告页黄色/zlxw.png b/src/assets/images/report/报告页黄色/zlxw.png new file mode 100644 index 0000000..913bf0e Binary files /dev/null and b/src/assets/images/report/报告页黄色/zlxw.png differ diff --git a/src/assets/images/report/报告页黄色/zwsc.png b/src/assets/images/report/报告页黄色/zwsc.png new file mode 100644 index 0000000..638e5da Binary files /dev/null and b/src/assets/images/report/报告页黄色/zwsc.png differ diff --git a/src/assets/images/report/报告页黄色/zxaj.png b/src/assets/images/report/报告页黄色/zxaj.png new file mode 100644 index 0000000..ec2532c Binary files /dev/null and b/src/assets/images/report/报告页黄色/zxaj.png differ diff --git a/src/assets/images/report/报告页黄色/zyjy.png b/src/assets/images/report/报告页黄色/zyjy.png new file mode 100644 index 0000000..c750de9 Binary files /dev/null and b/src/assets/images/report/报告页黄色/zyjy.png differ diff --git a/src/assets/images/sfzeys_icon.svg b/src/assets/images/sfzeys_icon.svg new file mode 100644 index 0000000..284a11b --- /dev/null +++ b/src/assets/images/sfzeys_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/sjeck_icon.svg b/src/assets/images/sjeck_icon.svg new file mode 100644 index 0000000..55ceaef --- /dev/null +++ b/src/assets/images/sjeck_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/sjeys_icon.svg b/src/assets/images/sjeys_icon.svg new file mode 100644 index 0000000..c4b56a4 --- /dev/null +++ b/src/assets/images/sjeys_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/sjhmfx_icon.svg b/src/assets/images/sjhmfx_icon.svg new file mode 100644 index 0000000..836f8c2 --- /dev/null +++ b/src/assets/images/sjhmfx_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/sjsys_icon.svg b/src/assets/images/sjsys_icon.svg new file mode 100644 index 0000000..3cd4a58 --- /dev/null +++ b/src/assets/images/sjsys_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/sjzwsc_icon.svg b/src/assets/images/sjzwsc_icon.svg new file mode 100644 index 0000000..8fd2103 --- /dev/null +++ b/src/assets/images/sjzwsc_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/srhy_icon.svg b/src/assets/images/srhy_icon.svg new file mode 100644 index 0000000..1588794 --- /dev/null +++ b/src/assets/images/srhy_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/team.png b/src/assets/images/team.png new file mode 100644 index 0000000..c234dfd Binary files /dev/null and b/src/assets/images/team.png differ diff --git a/src/assets/images/tg_qrcode_1.jpg b/src/assets/images/tg_qrcode_1.jpg new file mode 100644 index 0000000..f961927 Binary files /dev/null and b/src/assets/images/tg_qrcode_1.jpg differ diff --git a/src/assets/images/tg_qrcode_2.png b/src/assets/images/tg_qrcode_2.png new file mode 100644 index 0000000..0d60fe6 Binary files /dev/null and b/src/assets/images/tg_qrcode_2.png differ diff --git a/src/assets/images/tg_qrcode_3.png b/src/assets/images/tg_qrcode_3.png new file mode 100644 index 0000000..5985595 Binary files /dev/null and b/src/assets/images/tg_qrcode_3.png differ diff --git a/src/assets/images/tg_qrcode_4.png b/src/assets/images/tg_qrcode_4.png new file mode 100644 index 0000000..31a4509 Binary files /dev/null and b/src/assets/images/tg_qrcode_4.png differ diff --git a/src/assets/images/tg_qrcode_5.png b/src/assets/images/tg_qrcode_5.png new file mode 100644 index 0000000..89290e7 Binary files /dev/null and b/src/assets/images/tg_qrcode_5.png differ diff --git a/src/assets/images/tg_qrcode_6.png b/src/assets/images/tg_qrcode_6.png new file mode 100644 index 0000000..f93b479 Binary files /dev/null and b/src/assets/images/tg_qrcode_6.png differ diff --git a/src/assets/images/tg_qrcode_7.png b/src/assets/images/tg_qrcode_7.png new file mode 100644 index 0000000..05008ae Binary files /dev/null and b/src/assets/images/tg_qrcode_7.png differ diff --git a/src/assets/images/tg_qrcode_8.png b/src/assets/images/tg_qrcode_8.png new file mode 100644 index 0000000..bfe6071 Binary files /dev/null and b/src/assets/images/tg_qrcode_8.png differ diff --git a/src/assets/images/title.png b/src/assets/images/title.png new file mode 100644 index 0000000..2d0d44a Binary files /dev/null and b/src/assets/images/title.png differ diff --git a/src/assets/images/vip_banner.png b/src/assets/images/vip_banner.png new file mode 100644 index 0000000..5de629d Binary files /dev/null and b/src/assets/images/vip_banner.png differ diff --git a/src/assets/images/xlhy_icon.svg b/src/assets/images/xlhy_icon.svg new file mode 100644 index 0000000..e0d7292 --- /dev/null +++ b/src/assets/images/xlhy_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/xunihaoma_icon.svg b/src/assets/images/xunihaoma_icon.svg new file mode 100644 index 0000000..55ceaef --- /dev/null +++ b/src/assets/images/xunihaoma_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/yhk4ys_icon.svg b/src/assets/images/yhk4ys_icon.svg new file mode 100644 index 0000000..7c7549f --- /dev/null +++ b/src/assets/images/yhk4ys_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/yhkhmd_icon.svg b/src/assets/images/yhkhmd_icon.svg new file mode 100644 index 0000000..a9707df --- /dev/null +++ b/src/assets/images/yhkhmd_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/yhksys_icon.svg b/src/assets/images/yhksys_icon.svg new file mode 100644 index 0000000..bbfbc02 --- /dev/null +++ b/src/assets/images/yhksys_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/yq_qrcode_1.png b/src/assets/images/yq_qrcode_1.png new file mode 100644 index 0000000..8854e0f Binary files /dev/null and b/src/assets/images/yq_qrcode_1.png differ diff --git a/src/assets/images/zrrsczt_icon.svg b/src/assets/images/zrrsczt_icon.svg new file mode 100644 index 0000000..64d75cb --- /dev/null +++ b/src/assets/images/zrrsczt_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/main.css b/src/assets/main.css new file mode 100644 index 0000000..c11fe04 --- /dev/null +++ b/src/assets/main.css @@ -0,0 +1,31 @@ +@import "./base.css"; +@import "./colors.css"; +@import "./nprogress.css"; +@import "./vant-theme.css"; +@tailwind base; +@tailwind components; +@tailwind utilities; +#app { + margin: 0 auto; + font-weight: normal; +} + +a, +.green { + text-decoration: none; + color: hsla(160, 100%, 37%, 1); + transition: 0.4s; + padding: 3px; +} + +@media (hover: hover) { + a:hover { + background-color: hsla(160, 100%, 37%, 0.2); + } +} +.card { + @apply shadow rounded-xl bg-white p-6; +} +.ltitle { + @apply mx-auto mt-2 w-64 border rounded-3xl bg-gradient-to-r from-blue-400 via-green-500 to-teal-500 py-2 text-center text-white font-bold; +} diff --git a/src/assets/nprogress.css b/src/assets/nprogress.css new file mode 100644 index 0000000..4a3f6d2 --- /dev/null +++ b/src/assets/nprogress.css @@ -0,0 +1,10 @@ +/* 进度条颜色 */ +#nprogress .bar { + background: var(--color-primary); /* 主题色 */ + height: 4px; /* 修改高度 */ +} + +/* 圆圈颜色 */ +#nprogress .peg { + box-shadow: 0 0 10px var(--color-primary), 0 0 5px var(--color-primary); +} diff --git a/src/assets/uni-webview.js b/src/assets/uni-webview.js new file mode 100644 index 0000000..a3ae2b9 --- /dev/null +++ b/src/assets/uni-webview.js @@ -0,0 +1 @@ +!function (e, n) { "object" == typeof exports && "undefined" != typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define(n) : (e = e || self).uni = n() }(this, (function () { "use strict"; try { var e = {}; Object.defineProperty(e, "passive", { get: function () { !0 } }), window.addEventListener("test-passive", null, e) } catch (e) { } var n = Object.prototype.hasOwnProperty; function i(e, i) { return n.call(e, i) } var t = []; function r() { return window.__dcloud_weex_postMessage || window.__dcloud_weex_ } var o = function (e, n) { var i = { options: { timestamp: +new Date }, name: e, arg: n }; if (r()) { if ("postMessage" === e) { var o = { data: [n] }; return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(o) : window.__dcloud_weex_.postMessage(JSON.stringify(o)) } var a = { type: "WEB_INVOKE_APPSERVICE", args: { data: i, webviewIds: t } }; window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(a) : window.__dcloud_weex_.postMessageToService(JSON.stringify(a)) } if (!window.plus) return window.parent.postMessage({ type: "WEB_INVOKE_APPSERVICE", data: i, pageId: "" }, "*"); if (0 === t.length) { var d = plus.webview.currentWebview(); if (!d) throw new Error("plus.webview.currentWebview() is undefined"); var s = d.parent(), w = ""; w = s ? s.id : d.id, t.push(w) } if (plus.webview.getWebviewById("__uniapp__service")) plus.webview.postMessageToUniNView({ type: "WEB_INVOKE_APPSERVICE", args: { data: i, webviewIds: t } }, "__uniapp__service"); else { var u = JSON.stringify(i); plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat("WEB_INVOKE_APPSERVICE", '",').concat(u, ",").concat(JSON.stringify(t), ");")) } }, a = { navigateTo: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; o("navigateTo", { url: encodeURI(n) }) }, navigateBack: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.delta; o("navigateBack", { delta: parseInt(n) || 1 }) }, switchTab: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; o("switchTab", { url: encodeURI(n) }) }, reLaunch: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; o("reLaunch", { url: encodeURI(n) }) }, redirectTo: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; o("redirectTo", { url: encodeURI(n) }) }, getEnv: function (e) { r() ? e({ nvue: !0 }) : window.plus ? e({ plus: !0 }) : e({ h5: !0 }) }, postMessage: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; o("postMessage", e.data || {}) } }, d = /uni-app/i.test(navigator.userAgent), s = /Html5Plus/i.test(navigator.userAgent), w = /complete|loaded|interactive/; var u = window.my && navigator.userAgent.indexOf(["t", "n", "e", "i", "l", "C", "y", "a", "p", "i", "l", "A"].reverse().join("")) > -1; var g = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent); var v = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var c = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent); var m = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var p = window.qa && /quickapp/i.test(navigator.userAgent); var f = window.ks && window.ks.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var l = window.tt && window.tt.miniProgram && /Lark|Feishu/i.test(navigator.userAgent); var _ = window.jd && window.jd.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var E = window.xhs && window.xhs.miniProgram && /xhsminiapp/i.test(navigator.userAgent); for (var h, P = function () { window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady", { bubbles: !0, cancelable: !0 })) }, b = [function (e) { if (d || s) return window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener("DOMContentLoaded", e) : window.plus && w.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener("plusready", e), a }, function (e) { if (m) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("WeixinJSBridgeReady", e), window.wx.miniProgram }, function (e) { if (v) return window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("QQJSBridgeReady", e), window.qq.miniProgram }, function (e) { if (u) { document.addEventListener("DOMContentLoaded", e); var n = window.my; return { navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv } } }, function (e) { if (g) return document.addEventListener("DOMContentLoaded", e), window.swan.webView }, function (e) { if (c) return document.addEventListener("DOMContentLoaded", e), window.tt.miniProgram }, function (e) { if (p) { window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("QaJSBridgeReady", e); var n = window.qa; return { navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv } } }, function (e) { if (f) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("WeixinJSBridgeReady", e), window.ks.miniProgram }, function (e) { if (l) return document.addEventListener("DOMContentLoaded", e), window.tt.miniProgram }, function (e) { if (_) return window.JDJSBridgeReady && window.JDJSBridgeReady.invoke ? setTimeout(e, 0) : document.addEventListener("JDJSBridgeReady", e), window.jd.miniProgram }, function (e) { if (E) return window.xhs.miniProgram }, function (e) { return document.addEventListener("DOMContentLoaded", e), a }], y = 0; y < b.length && !(h = b[y](P)); y++); h || (h = {}); var B = "undefined" != typeof uni ? uni : {}; if (!B.navigateTo) for (var S in h) i(h, S) && (B[S] = h[S]); return B.webView = h, B })); \ No newline at end of file diff --git a/src/assets/vant-theme.css b/src/assets/vant-theme.css new file mode 100644 index 0000000..3cd355e --- /dev/null +++ b/src/assets/vant-theme.css @@ -0,0 +1,430 @@ +/* Vant 主题色配置 - 使用 CSS 变量统一管理主题色 */ + +/* 定义主题色变量 */ +:root { + /* 主色调 - 可以根据需要修改这个变量来改变整个主题 */ + --van-theme-primary: #ff6a19; + --van-theme-primary-light: rgba(255, 106, 25, 0.1); + --van-theme-primary-dark: rgba(255, 106, 25, 0.8); + --van-theme-primary-alpha: rgba(255, 106, 25, 0.15); + + /* 覆盖 Vant 默认的主色调变量 */ + --van-primary-color: var(--van-theme-primary); + --van-success-color: #07c160; + --van-warning-color: #ff976a; + --van-danger-color: #ee0a24; + + /* 文本颜色 */ + --van-text-color: #323233; + --van-text-color-2: #646566; + --van-text-color-3: #969799; + + /* 背景色 */ + --van-background-color: #ffffff; + --van-background-color-light: #fafafa; + + /* 边框色 */ + --van-border-color: #ebedf0; + + /* 活跃状态颜色 */ + --van-active-color: #f2f3f5; +} + +/* 使用 CSS 变量覆盖组件样式 */ + +/* 按钮组件 */ +.van-button--primary { + background-color: var(--van-theme-primary) !important; + border-color: var(--van-theme-primary) !important; +} + +.van-button--primary:active { + background-color: var(--van-theme-primary-dark) !important; +} + +/* 导航栏组件 */ +.van-nav-bar { + background-color: #ffffff !important; +} + +.van-nav-bar__title { + color: var(--van-theme-primary) !important; +} + +.van-nav-bar__left, +.van-nav-bar__right { + color: var(--van-theme-primary) !important; +} + +.van-nav-bar__arrow { + color: var(--van-theme-primary) !important; +} +.van-nav-bar__text { + color: var(--van-theme-primary) !important; +} + +/* 标签页组件 */ +.van-tabs__line { + background-color: var(--van-theme-primary) !important; +} + +.van-tab--active { + color: var(--van-theme-primary) !important; +} + +.van-tabs__wrap { + background-color: #ffffff !important; +} + +/* 开关组件 */ +.van-switch--on { + background-color: var(--van-theme-primary) !important; +} + +/* 复选框组件 */ +/* 取消复选框主题色配置,使用默认样式 */ + +/* 单选框组件 */ +/* 取消单选框主题色配置,使用默认样式 */ + +/* 滑动条组件 */ +.van-slider__bar { + background-color: var(--van-theme-primary) !important; +} + +.van-slider__button { + background-color: var(--van-theme-primary) !important; + border-color: var(--van-theme-primary) !important; +} + +/* 进度条组件 */ +.van-progress__portion { + background-color: var(--van-theme-primary) !important; +} + +/* 评分组件 */ +.van-rate__icon--full { + color: var(--van-theme-primary) !important; +} + +/* 步进器组件 */ +.van-stepper__plus, +.van-stepper__minus { + color: var(--van-theme-primary) !important; + border-color: var(--van-theme-primary) !important; +} + +/* 步骤条组件 */ +.van-steps__item--active .van-steps__item__circle { + background-color: var(--van-theme-primary) !important; + border-color: var(--van-theme-primary) !important; +} + +/* 标签组件 */ +.van-tag--primary { + background-color: var(--van-theme-primary) !important; + color: #ffffff !important; +} + +/* 徽章组件 */ +.van-badge--primary { + background-color: var(--van-theme-primary) !important; +} + +/* 通知栏组件 */ +.van-notice-bar--primary { + background-color: var(--van-theme-primary-light) !important; + color: var(--van-theme-primary) !important; +} + +/* 轮播图指示器 */ +.van-swipe__indicator--active { + background-color: var(--van-theme-primary) !important; +} + +/* 加载组件 */ +.van-loading__spinner { + color: var(--van-theme-primary) !important; +} + +/* 弹窗组件 */ +.van-popup { + background-color: var(--van-background-color) !important; +} + +/* 选择器组件 */ +.van-picker { + background-color: var(--van-background-color) !important; +} + +.van-picker__toolbar { + background-color: var(--van-background-color) !important; +} + +.van-picker__confirm { + color: var(--van-theme-primary) !important; +} + +.van-picker__cancel { + color: var(--van-text-color-2) !important; +} + +/* 日期选择器组件 */ +.van-date-picker { + background-color: var(--van-background-color) !important; +} + +.van-date-picker__toolbar { + background-color: var(--van-background-color) !important; +} + +.van-date-picker__confirm { + color: var(--van-theme-primary) !important; +} + +.van-date-picker__cancel { + color: var(--van-text-color-2) !important; +} + +/* 字段组件 */ +.van-field__control { + color: var(--van-text-color) !important; +} + +.van-field__placeholder { + color: var(--van-text-color-3) !important; +} + +.van-field__right-icon { + color: var(--van-theme-primary) !important; +} + +/* 动作面板组件 */ +.van-action-sheet__item--active { + color: var(--van-theme-primary) !important; +} + +/* 选择器组件 */ +.van-picker__confirm { + color: var(--van-theme-primary) !important; +} + +/* 日期选择器组件 */ +.van-datetime-picker__confirm { + color: var(--van-theme-primary) !important; +} + +/* 地区选择器组件 */ +.van-area__confirm { + color: var(--van-theme-primary) !important; +} + +/* 搜索组件 */ +.van-search__action { + color: var(--van-theme-primary) !important; +} + +/* 日历组件 */ +.van-calendar__day--selected { + background-color: var(--van-theme-primary) !important; + color: #ffffff !important; +} + +.van-calendar__day--start, +.van-calendar__day--end { + background-color: var(--van-theme-primary) !important; + color: #ffffff !important; +} + +/* 时间选择器组件 */ +.van-time-picker__confirm { + color: var(--van-theme-primary) !important; +} + +/* 商品卡片组件 */ +.van-card__price { + color: var(--van-theme-primary) !important; +} + +/* 优惠券组件 */ +.van-coupon__discount { + color: var(--van-theme-primary) !important; +} + +/* 地址编辑组件 */ +.van-address-edit__default { + color: var(--van-theme-primary) !important; +} + +/* 商品规格选择器组件 */ +.van-sku-item--active { + color: var(--van-theme-primary) !important; + border-color: var(--van-theme-primary) !important; +} + +/* 购物车组件 */ +.van-submit-bar__price { + color: var(--van-theme-primary) !important; +} + +/* 提交订单栏组件 */ +.van-submit-bar__button--primary { + background-color: var(--van-theme-primary) !important; +} + +/* 侧边栏组件 */ +.van-sidebar-item--select { + color: var(--van-theme-primary) !important; + border-color: var(--van-theme-primary) !important; +} + +/* 树形选择器组件 */ +.van-tree-select__item--active { + color: var(--van-theme-primary) !important; +} + +/* 联系人列表组件 */ +.van-contact-list__item--active { + color: var(--van-theme-primary) !important; +} + +/* 密码输入框组件 */ +.van-password-input__item--focus { + border-color: var(--van-theme-primary) !important; +} + +/* 下拉菜单组件 */ +.van-dropdown-menu__title--active { + color: var(--van-theme-primary) !important; +} + +.van-dropdown-menu__option--active { + color: var(--van-theme-primary) !important; +} + +/* 索引组件 */ +.van-index-anchor--active { + background-color: var(--van-background-color) !important; + color: var(--van-theme-primary) !important; +} + +/* 水印组件 */ +.van-water-mark { + color: var(--van-theme-primary-alpha) !important; +} + +/* 分割线组件 */ +.van-divider { + color: var(--van-text-color-3) !important; +} + +/* 分享组件 */ +.van-share-sheet__option-name { + color: var(--van-text-color) !important; +} + +/* 骨架屏组件 */ +.van-skeleton__content { + background-color: var(--van-background-color-light) !important; +} + +/* 空状态组件 */ +.van-empty__description { + color: var(--van-text-color-2) !important; +} + +/* 倒计时组件 */ +.van-count-down { + color: var(--van-text-color) !important; +} + +/* 签名组件 */ +.van-signature { + background-color: var(--van-background-color) !important; + border-color: var(--van-border-color) !important; +} + +/* 上传组件 */ +.van-uploader__upload { + background-color: var(--van-background-color-light) !important; +} + +/* 列表组件 */ +.van-list__loading, +.van-list__finished-text { + color: var(--van-text-color-2) !important; +} + +/* 下拉刷新组件 */ +.van-pull-refresh__text { + color: var(--van-text-color-2) !important; +} + +/* 懒加载组件 */ +.van-lazyload { + background-color: var(--van-background-color-light) !important; +} + +/* 图片预览组件 */ +.van-image-preview__index { + color: #ffffff !important; +} + +/* 索引组件 */ +.van-index-anchor { + background-color: var(--van-background-color-light) !important; + color: var(--van-text-color-2) !important; +} + +/* 弹出层遮罩 */ +.van-overlay { + background-color: rgba(0, 0, 0, 0.5) !important; +} + +/* Toast 组件 */ +.van-toast { + background-color: rgba(0, 0, 0, 0.8) !important; + color: #ffffff !important; +} + +.van-toast--success { + background-color: rgba(0, 0, 0, 0.8) !important; + color: #ffffff !important; +} + +.van-toast--fail { + background-color: rgba(0, 0, 0, 0.8) !important; + color: #ffffff !important; +} + +.van-toast--loading { + background-color: rgba(0, 0, 0, 0.8) !important; + color: #ffffff !important; +} + +.van-toast__text { + color: #ffffff !important; +} + +.van-toast__icon { + color: #ffffff !important; +} + +/* Loading Toast 特殊处理 */ +.van-loading-toast { + background-color: rgba(0, 0, 0, 0.8) !important; + color: #ffffff !important; +} + +.van-loading-toast .van-loading__spinner { + color: #ffffff !important; +} + +.van-loading-toast .van-toast__text { + color: #ffffff !important; +} + +/* 数字键盘组件 */ +.van-number-keyboard__key--active { + background-color: var(--van-active-color) !important; +} diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts new file mode 100644 index 0000000..a4ca6de --- /dev/null +++ b/src/auto-imports.d.ts @@ -0,0 +1,321 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +// biome-ignore lint: disable +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const VanTabbar: typeof import('vant/es')['Tabbar'] + const VanTabbarItem: typeof import('vant/es')['TabbarItem'] + const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] + const autoResetRef: typeof import('@vueuse/core')['autoResetRef'] + const closeToast: typeof import('vant/es')['closeToast'] + const computed: typeof import('vue')['computed'] + const computedAsync: typeof import('@vueuse/core')['computedAsync'] + const computedEager: typeof import('@vueuse/core')['computedEager'] + const computedInject: typeof import('@vueuse/core')['computedInject'] + const computedWithControl: typeof import('@vueuse/core')['computedWithControl'] + const controlledComputed: typeof import('@vueuse/core')['controlledComputed'] + const controlledRef: typeof import('@vueuse/core')['controlledRef'] + const createApp: typeof import('vue')['createApp'] + const createEventHook: typeof import('@vueuse/core')['createEventHook'] + const createGlobalState: typeof import('@vueuse/core')['createGlobalState'] + const createInjectionState: typeof import('@vueuse/core')['createInjectionState'] + const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn'] + const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate'] + const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable'] + const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise'] + const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn'] + const customRef: typeof import('vue')['customRef'] + const debouncedRef: typeof import('@vueuse/core')['debouncedRef'] + const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const eagerComputed: typeof import('@vueuse/core')['eagerComputed'] + const effectScope: typeof import('vue')['effectScope'] + const extendRef: typeof import('@vueuse/core')['extendRef'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch'] + const inject: typeof import('vue')['inject'] + const injectLocal: typeof import('@vueuse/core')['injectLocal'] + const isDefined: typeof import('@vueuse/core')['isDefined'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] + const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onClickOutside: typeof import('@vueuse/core')['onClickOutside'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke'] + const onLongPress: typeof import('@vueuse/core')['onLongPress'] + const onMounted: typeof import('vue')['onMounted'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onStartTyping: typeof import('@vueuse/core')['onStartTyping'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] + const pausableWatch: typeof import('@vueuse/core')['pausableWatch'] + const provide: typeof import('vue')['provide'] + const provideLocal: typeof import('@vueuse/core')['provideLocal'] + const reactify: typeof import('@vueuse/core')['reactify'] + const reactifyObject: typeof import('@vueuse/core')['reactifyObject'] + const reactive: typeof import('vue')['reactive'] + const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed'] + const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit'] + const reactivePick: typeof import('@vueuse/core')['reactivePick'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const refAutoReset: typeof import('@vueuse/core')['refAutoReset'] + const refDebounced: typeof import('@vueuse/core')['refDebounced'] + const refDefault: typeof import('@vueuse/core')['refDefault'] + const refThrottled: typeof import('@vueuse/core')['refThrottled'] + const refWithControl: typeof import('@vueuse/core')['refWithControl'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const resolveRef: typeof import('@vueuse/core')['resolveRef'] + const resolveUnref: typeof import('@vueuse/core')['resolveUnref'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const showConfirmDialog: typeof import('vant/es')['showConfirmDialog'] + const showLoadingToast: typeof import('vant/es')['showLoadingToast'] + const showToast: typeof import('vant/es')['showToast'] + const syncRef: typeof import('@vueuse/core')['syncRef'] + const syncRefs: typeof import('@vueuse/core')['syncRefs'] + const templateRef: typeof import('@vueuse/core')['templateRef'] + const throttledRef: typeof import('@vueuse/core')['throttledRef'] + const throttledWatch: typeof import('@vueuse/core')['throttledWatch'] + const toRaw: typeof import('vue')['toRaw'] + const toReactive: typeof import('@vueuse/core')['toReactive'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount'] + const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount'] + const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted'] + const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose'] + const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted'] + const unref: typeof import('vue')['unref'] + const unrefElement: typeof import('@vueuse/core')['unrefElement'] + const until: typeof import('@vueuse/core')['until'] + const useActiveElement: typeof import('@vueuse/core')['useActiveElement'] + const useAgent: typeof import('./composables/useAgent.js')['useAgent'] + const useAgentStore: typeof import('./stores/agentStore.js')['useAgentStore'] + const useAnimate: typeof import('@vueuse/core')['useAnimate'] + const useApiFetch: typeof import('./composables/useApiFetch.js')['default'] + const useAppStore: typeof import('./stores/appStore.js')['useAppStore'] + const useArrayDifference: typeof import('@vueuse/core')['useArrayDifference'] + const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery'] + const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter'] + const useArrayFind: typeof import('@vueuse/core')['useArrayFind'] + const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex'] + const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast'] + const useArrayIncludes: typeof import('@vueuse/core')['useArrayIncludes'] + const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin'] + const useArrayMap: typeof import('@vueuse/core')['useArrayMap'] + const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce'] + const useArraySome: typeof import('@vueuse/core')['useArraySome'] + const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique'] + const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue'] + const useAsyncState: typeof import('@vueuse/core')['useAsyncState'] + const useAttrs: typeof import('vue')['useAttrs'] + const useAuthStore: typeof import('./stores/authStore.js')['useAuthStore'] + const useBase64: typeof import('@vueuse/core')['useBase64'] + const useBattery: typeof import('@vueuse/core')['useBattery'] + const useBluetooth: typeof import('@vueuse/core')['useBluetooth'] + const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints'] + const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel'] + const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation'] + const useCached: typeof import('@vueuse/core')['useCached'] + const useClipboard: typeof import('@vueuse/core')['useClipboard'] + const useClipboardItems: typeof import('@vueuse/core')['useClipboardItems'] + const useCloned: typeof import('@vueuse/core')['useCloned'] + const useColorMode: typeof import('@vueuse/core')['useColorMode'] + const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog'] + const useCounter: typeof import('@vueuse/core')['useCounter'] + const useCounterStore: typeof import('./stores/counter.js')['useCounterStore'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVar: typeof import('@vueuse/core')['useCssVar'] + const useCssVars: typeof import('vue')['useCssVars'] + const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement'] + const useCycleList: typeof import('@vueuse/core')['useCycleList'] + const useDark: typeof import('@vueuse/core')['useDark'] + const useDateFormat: typeof import('@vueuse/core')['useDateFormat'] + const useDebounce: typeof import('@vueuse/core')['useDebounce'] + const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn'] + const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory'] + const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion'] + const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation'] + const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio'] + const useDevicesList: typeof import('@vueuse/core')['useDevicesList'] + const useDialogStore: typeof import('./stores/dialogStore.js')['useDialogStore'] + const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia'] + const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility'] + const useDraggable: typeof import('@vueuse/core')['useDraggable'] + const useDropZone: typeof import('@vueuse/core')['useDropZone'] + const useElementBounding: typeof import('@vueuse/core')['useElementBounding'] + const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint'] + const useElementHover: typeof import('@vueuse/core')['useElementHover'] + const useElementSize: typeof import('@vueuse/core')['useElementSize'] + const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility'] + const useEnv: typeof import('./composables/useEnv.js')['useEnv'] + const useEnvironment: typeof import('./composables/useEnvironment.js')['useEnvironment'] + const useEventBus: typeof import('@vueuse/core')['useEventBus'] + const useEventListener: typeof import('@vueuse/core')['useEventListener'] + const useEventSource: typeof import('@vueuse/core')['useEventSource'] + const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper'] + const useFavicon: typeof import('@vueuse/core')['useFavicon'] + const useFetch: typeof import('@vueuse/core')['useFetch'] + const useFileDialog: typeof import('@vueuse/core')['useFileDialog'] + const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess'] + const useFocus: typeof import('@vueuse/core')['useFocus'] + const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin'] + const useFps: typeof import('@vueuse/core')['useFps'] + const useFullscreen: typeof import('@vueuse/core')['useFullscreen'] + const useGamepad: typeof import('@vueuse/core')['useGamepad'] + const useGeolocation: typeof import('@vueuse/core')['useGeolocation'] + const useHttp: typeof import('./composables/useHttp.js')['useHttp'] + const useId: typeof import('vue')['useId'] + const useIdle: typeof import('@vueuse/core')['useIdle'] + const useImage: typeof import('@vueuse/core')['useImage'] + const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll'] + const useInquireForm: typeof import('./composables/useInquireForm.js')['useInquireForm'] + const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver'] + const useInterval: typeof import('@vueuse/core')['useInterval'] + const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn'] + const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier'] + const useLastChanged: typeof import('@vueuse/core')['useLastChanged'] + const useLink: typeof import('vue-router')['useLink'] + const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage'] + const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys'] + const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory'] + const useMediaControls: typeof import('@vueuse/core')['useMediaControls'] + const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery'] + const useMemoize: typeof import('@vueuse/core')['useMemoize'] + const useMemory: typeof import('@vueuse/core')['useMemory'] + const useModel: typeof import('vue')['useModel'] + const useMounted: typeof import('@vueuse/core')['useMounted'] + const useMouse: typeof import('@vueuse/core')['useMouse'] + const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement'] + const useMousePressed: typeof import('@vueuse/core')['useMousePressed'] + const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver'] + const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage'] + const useNetwork: typeof import('@vueuse/core')['useNetwork'] + const useNow: typeof import('@vueuse/core')['useNow'] + const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl'] + const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination'] + const useOnline: typeof import('@vueuse/core')['useOnline'] + const usePageLeave: typeof import('@vueuse/core')['usePageLeave'] + const useParallax: typeof import('@vueuse/core')['useParallax'] + const useParentElement: typeof import('@vueuse/core')['useParentElement'] + const usePerformanceObserver: typeof import('@vueuse/core')['usePerformanceObserver'] + const usePermission: typeof import('@vueuse/core')['usePermission'] + const usePointer: typeof import('@vueuse/core')['usePointer'] + const usePointerLock: typeof import('@vueuse/core')['usePointerLock'] + const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe'] + const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme'] + const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast'] + const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark'] + const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages'] + const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion'] + const usePrevious: typeof import('@vueuse/core')['usePrevious'] + const useRafFn: typeof import('@vueuse/core')['useRafFn'] + const useRefHistory: typeof import('@vueuse/core')['useRefHistory'] + const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver'] + const useRiskNotifier: typeof import('./composables/useRiskNotifier.js')['useRiskNotifier'] + const useRoute: typeof import('vue-router')['useRoute'] + const useRouter: typeof import('vue-router')['useRouter'] + const useSEO: typeof import('./composables/useSEO.js')['useSEO'] + const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation'] + const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea'] + const useScriptTag: typeof import('@vueuse/core')['useScriptTag'] + const useScroll: typeof import('@vueuse/core')['useScroll'] + const useScrollLock: typeof import('@vueuse/core')['useScrollLock'] + const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage'] + const useShare: typeof import('@vueuse/core')['useShare'] + const useSlots: typeof import('vue')['useSlots'] + const useSorted: typeof import('@vueuse/core')['useSorted'] + const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition'] + const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis'] + const useStepper: typeof import('@vueuse/core')['useStepper'] + const useStorage: typeof import('@vueuse/core')['useStorage'] + const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync'] + const useStyleTag: typeof import('@vueuse/core')['useStyleTag'] + const useSupported: typeof import('@vueuse/core')['useSupported'] + const useSwipe: typeof import('@vueuse/core')['useSwipe'] + const useTemplateRef: typeof import('vue')['useTemplateRef'] + const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList'] + const useTextDirection: typeof import('@vueuse/core')['useTextDirection'] + const useTextSelection: typeof import('@vueuse/core')['useTextSelection'] + const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize'] + const useThrottle: typeof import('@vueuse/core')['useThrottle'] + const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn'] + const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory'] + const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo'] + const useTimeout: typeof import('@vueuse/core')['useTimeout'] + const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn'] + const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll'] + const useTimestamp: typeof import('@vueuse/core')['useTimestamp'] + const useTitle: typeof import('@vueuse/core')['useTitle'] + const useToNumber: typeof import('@vueuse/core')['useToNumber'] + const useToString: typeof import('@vueuse/core')['useToString'] + const useToggle: typeof import('@vueuse/core')['useToggle'] + const useTransition: typeof import('@vueuse/core')['useTransition'] + const useUni: typeof import('./composables/useUni.js')['useUni'] + const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams'] + const useUserMedia: typeof import('@vueuse/core')['useUserMedia'] + const useUserStore: typeof import('./stores/userStore.js')['useUserStore'] + const useVModel: typeof import('@vueuse/core')['useVModel'] + const useVModels: typeof import('@vueuse/core')['useVModels'] + const useVibrate: typeof import('@vueuse/core')['useVibrate'] + const useVirtualList: typeof import('@vueuse/core')['useVirtualList'] + const useWakeLock: typeof import('@vueuse/core')['useWakeLock'] + const useWebNotification: typeof import('@vueuse/core')['useWebNotification'] + const useWebSocket: typeof import('@vueuse/core')['useWebSocket'] + const useWebView: typeof import('./composables/useWebView.js')['useWebView'] + const useWebWorker: typeof import('@vueuse/core')['useWebWorker'] + const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn'] + const useWeixinShare: typeof import('./composables/useWeixinShare.js')['useWeixinShare'] + const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus'] + const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll'] + const useWindowSize: typeof import('@vueuse/core')['useWindowSize'] + const useZoomAdapter: typeof import('./composables/useZoomAdapter.js')['useZoomAdapter'] + const watch: typeof import('vue')['watch'] + const watchArray: typeof import('@vueuse/core')['watchArray'] + const watchAtMost: typeof import('@vueuse/core')['watchAtMost'] + const watchDebounced: typeof import('@vueuse/core')['watchDebounced'] + const watchDeep: typeof import('@vueuse/core')['watchDeep'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable'] + const watchImmediate: typeof import('@vueuse/core')['watchImmediate'] + const watchOnce: typeof import('@vueuse/core')['watchOnce'] + const watchPausable: typeof import('@vueuse/core')['watchPausable'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] + const watchThrottled: typeof import('@vueuse/core')['watchThrottled'] + const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable'] + const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter'] + const whenever: typeof import('@vueuse/core')['whenever'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') +} diff --git a/src/components/AgentApplicationForm.vue b/src/components/AgentApplicationForm.vue new file mode 100644 index 0000000..96b1d4f --- /dev/null +++ b/src/components/AgentApplicationForm.vue @@ -0,0 +1,264 @@ + + + diff --git a/src/components/Authorization.vue b/src/components/Authorization.vue new file mode 100644 index 0000000..e233a49 --- /dev/null +++ b/src/components/Authorization.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/components/BaseReport.vue b/src/components/BaseReport.vue new file mode 100644 index 0000000..c95416a --- /dev/null +++ b/src/components/BaseReport.vue @@ -0,0 +1,963 @@ + + + + + diff --git a/src/components/BindPhoneDialog.vue b/src/components/BindPhoneDialog.vue new file mode 100644 index 0000000..0654742 --- /dev/null +++ b/src/components/BindPhoneDialog.vue @@ -0,0 +1,419 @@ + + + + + diff --git a/src/components/BindPhoneOnlyDialog.vue b/src/components/BindPhoneOnlyDialog.vue new file mode 100644 index 0000000..468883e --- /dev/null +++ b/src/components/BindPhoneOnlyDialog.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/src/components/CarNumberInput.vue b/src/components/CarNumberInput.vue new file mode 100644 index 0000000..6a8b173 --- /dev/null +++ b/src/components/CarNumberInput.vue @@ -0,0 +1,333 @@ + + + + + \ No newline at end of file diff --git a/src/components/ClickCaptcha.vue b/src/components/ClickCaptcha.vue new file mode 100644 index 0000000..fdd3a7e --- /dev/null +++ b/src/components/ClickCaptcha.vue @@ -0,0 +1,521 @@ + + + + + diff --git a/src/components/GaugeChart.vue b/src/components/GaugeChart.vue new file mode 100644 index 0000000..d64c0a6 --- /dev/null +++ b/src/components/GaugeChart.vue @@ -0,0 +1,303 @@ + + + + + \ No newline at end of file diff --git a/src/components/ImageSaveGuide.vue b/src/components/ImageSaveGuide.vue new file mode 100644 index 0000000..95b7382 --- /dev/null +++ b/src/components/ImageSaveGuide.vue @@ -0,0 +1,259 @@ + + + + + \ No newline at end of file diff --git a/src/components/InquireForm.vue b/src/components/InquireForm.vue new file mode 100644 index 0000000..50e8705 --- /dev/null +++ b/src/components/InquireForm.vue @@ -0,0 +1,526 @@ + + + + + diff --git a/src/components/LButtonGroup.vue b/src/components/LButtonGroup.vue new file mode 100644 index 0000000..212d75c --- /dev/null +++ b/src/components/LButtonGroup.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/components/LEmpty.vue b/src/components/LEmpty.vue new file mode 100644 index 0000000..20f22fc --- /dev/null +++ b/src/components/LEmpty.vue @@ -0,0 +1,41 @@ + + + + + \ No newline at end of file diff --git a/src/components/LExpandCollapse.vue b/src/components/LExpandCollapse.vue new file mode 100644 index 0000000..d9f72d3 --- /dev/null +++ b/src/components/LExpandCollapse.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/src/components/LPendding.vue b/src/components/LPendding.vue new file mode 100644 index 0000000..0c01abb --- /dev/null +++ b/src/components/LPendding.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/src/components/LRemark.vue b/src/components/LRemark.vue new file mode 100644 index 0000000..d833a87 --- /dev/null +++ b/src/components/LRemark.vue @@ -0,0 +1,92 @@ + + + + + \ No newline at end of file diff --git a/src/components/LTable.vue b/src/components/LTable.vue new file mode 100644 index 0000000..6a2d6ad --- /dev/null +++ b/src/components/LTable.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/components/LTitle.vue b/src/components/LTitle.vue new file mode 100644 index 0000000..9c20d18 --- /dev/null +++ b/src/components/LTitle.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/components/Payment.vue b/src/components/Payment.vue new file mode 100644 index 0000000..0bb1f15 --- /dev/null +++ b/src/components/Payment.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/src/components/PriceInputPopup.vue b/src/components/PriceInputPopup.vue new file mode 100644 index 0000000..cd8127e --- /dev/null +++ b/src/components/PriceInputPopup.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/src/components/QRcode.vue b/src/components/QRcode.vue new file mode 100644 index 0000000..acee2ea --- /dev/null +++ b/src/components/QRcode.vue @@ -0,0 +1,789 @@ + + + + + diff --git a/src/components/QrcodePop.vue b/src/components/QrcodePop.vue new file mode 100644 index 0000000..52929bb --- /dev/null +++ b/src/components/QrcodePop.vue @@ -0,0 +1,14 @@ + + + + + diff --git a/src/components/RealNameAuthDialog.vue b/src/components/RealNameAuthDialog.vue new file mode 100644 index 0000000..0e404af --- /dev/null +++ b/src/components/RealNameAuthDialog.vue @@ -0,0 +1,332 @@ + + + + + diff --git a/src/components/Remark.vue b/src/components/Remark.vue new file mode 100644 index 0000000..4f5597b --- /dev/null +++ b/src/components/Remark.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/components/ReportFeatures.vue b/src/components/ReportFeatures.vue new file mode 100644 index 0000000..6628e98 --- /dev/null +++ b/src/components/ReportFeatures.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/src/components/SectionTitle.vue b/src/components/SectionTitle.vue new file mode 100644 index 0000000..cc370c3 --- /dev/null +++ b/src/components/SectionTitle.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/components/ShareReportButton.vue b/src/components/ShareReportButton.vue new file mode 100644 index 0000000..7668716 --- /dev/null +++ b/src/components/ShareReportButton.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/src/components/StyledTabs.vue b/src/components/StyledTabs.vue new file mode 100644 index 0000000..052208f --- /dev/null +++ b/src/components/StyledTabs.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/components/TitleBanner.vue b/src/components/TitleBanner.vue new file mode 100644 index 0000000..336a308 --- /dev/null +++ b/src/components/TitleBanner.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/src/components/VerificationCard.vue b/src/components/VerificationCard.vue new file mode 100644 index 0000000..7576492 --- /dev/null +++ b/src/components/VerificationCard.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/src/components/WechatGuard.vue b/src/components/WechatGuard.vue new file mode 100644 index 0000000..0371acb --- /dev/null +++ b/src/components/WechatGuard.vue @@ -0,0 +1,63 @@ + + + + + + diff --git a/src/components/WechatOverlay.vue b/src/components/WechatOverlay.vue new file mode 100644 index 0000000..5a6c6c5 --- /dev/null +++ b/src/components/WechatOverlay.vue @@ -0,0 +1,72 @@ + + + + + \ No newline at end of file diff --git a/src/composables/useApiFetch.js b/src/composables/useApiFetch.js new file mode 100644 index 0000000..70b9216 --- /dev/null +++ b/src/composables/useApiFetch.js @@ -0,0 +1,116 @@ +// src/plugins/fetch.js +import { createFetch } from "@vueuse/core"; +import router from "@/router"; // 假设你使用 Vue Router +import { useUserStore } from "@/stores/userStore"; +import { useAgentStore } from "@/stores/agentStore"; +// 创建全局的 fetch 实例 +const useApiFetch = createFetch({ + // 统一从环境变量读取域名与前缀(不提供默认值) + baseUrl: `${import.meta.env.VITE_API_URL}${ + import.meta.env.VITE_API_PREFIX + }`, + options: { + async beforeFetch({ url, options }) { + showLoadingToast({ + message: "加载中...", + forbidClick: true, + duration: 0, // 设置为 0 表示不会自动关闭 + loadingType: "spinner", + }); + + const timestamp = Date.now(); + const separator = url.includes("?") ? "&" : "?"; // 判断是否已有参数 + url += `${separator}t=${timestamp}`; // 追加时间戳 + + // 在请求前添加通用的 Header,例如 Authorization + const token = localStorage.getItem("token"); + let platform = "h5"; + const userAgent = navigator.userAgent.toLowerCase(); + const isWechat = /micromessenger/.test(userAgent); + if (isWechat) { + platform = "wxh5"; + } + options.headers["X-Platform"] = platform; + + if (token) { + options.headers = { + ...options.headers, + Authorization: `${token}`, + }; + console.log( + `[useApiFetch] 请求 ${url}, 携带token, token长度: ${ + token.length + }, token前20字符: ${token.substring(0, 20)}...` + ); + } else { + console.warn( + `[useApiFetch] 请求 ${url}, 没有token, localStorage中token为: ${localStorage.getItem( + "token" + )}` + ); + } + return { url, options }; + }, + async afterFetch({ data, response }) { + closeToast(); + // 全局处理响应 + if (response.status === 401) { + // 清除本地存储的 token + localStorage.removeItem("token"); + localStorage.removeItem("refreshAfter"); + localStorage.removeItem("accessExpire"); + // 跳转到登录页 + router.replace("/login"); + } + + if (data.code !== 200) { + // 只有 100009(用户不存在/Token无效)才触发退出登录 + // 100008(CUSTOM_ERROR)是通用业务错误,不应该触发退出登录 + if (data.code === 100009) { + // 改进的存储管理 + localStorage.removeItem("token"); + localStorage.removeItem("refreshAfter"); + localStorage.removeItem("accessExpire"); + localStorage.removeItem("userInfo"); + localStorage.removeItem("agentInfo"); + localStorage.removeItem("tokenVersion"); + + // 重置状态 + const userStore = useUserStore(); + const agentStore = useAgentStore(); + userStore.resetUser(); + agentStore.resetAgent(); + location.reload(); + } + if ( + data.code !== 200002 && + data.code !== 200003 && + data.code !== 200004 && + data.code !== 100009 + ) { + showToast({ message: data.msg }); + } + } + return { data, response }; + }, + async onFetchError({ error, response }) { + console.log("error", error); + closeToast(); + if (response && response.status === 401) { + // 清除本地存储的 token + localStorage.removeItem("token"); + localStorage.removeItem("refreshAfter"); + localStorage.removeItem("accessExpire"); + // 跳转到登录页 + router.replace("/login"); + } else { + if (typeof error === "string") { + showToast({ message: error }); + } + } + return { error }; + }, + }, +}); + +export default useApiFetch; diff --git a/src/composables/useEnv.js b/src/composables/useEnv.js new file mode 100644 index 0000000..10c96c7 --- /dev/null +++ b/src/composables/useEnv.js @@ -0,0 +1,16 @@ +// src/composables/useEnv.js +import { ref, onMounted } from 'vue' + +// 创建一个全局的 ref +const isWeChat = ref(false) + +// 立即执行检测 +const userAgent = navigator.userAgent.toLowerCase() +const keywords = ['micromessenger', 'wechat'].map(key => key.toLowerCase()) +isWeChat.value = keywords.some(keyword => userAgent.includes(keyword)) + +export function useEnv() { + return { + isWeChat, + } +} diff --git a/src/composables/useHttp.js b/src/composables/useHttp.js new file mode 100644 index 0000000..bb9d764 --- /dev/null +++ b/src/composables/useHttp.js @@ -0,0 +1,27 @@ +import { useFetch, createFetch } from '@vueuse/core'; + +export function useHttp(url, options = {}, token) { + const fetch = createFetch(url, { + baseUrl: `${import.meta.env.VITE_API_URL}${import.meta.env.VITE_API_PREFIX}`, + options: { + async beforeFetch({ url, options, cancel }) { + console.log("asdasd", options) + options.headers = { + ...options.headers, + Authorization: `${token}`, + } + return { + options, + } + }, + async afterFetch(ctx) { + console.log("ctx", ctx) + // if (ctx.data.code !== 200) { + // throw new Error(ctx.data.message || '请求失败'); + // } + return ctx; + }, + } + }) + return fetch(url) +} diff --git a/src/composables/useRiskNotifier.js b/src/composables/useRiskNotifier.js new file mode 100644 index 0000000..631874e --- /dev/null +++ b/src/composables/useRiskNotifier.js @@ -0,0 +1,18 @@ +import { watch } from "vue"; + +/** + * 风险评分通知 composable + * 用于组件向父组件通知自己的风险评分(0-100分,分数越高越安全) + */ +export function useRiskNotifier(props, riskScore) { + // 监听 riskScore 变化,通知父组件 + watch( + riskScore, + (newValue) => { + if (props.apiId && props.notifyRiskStatus) { + props.notifyRiskStatus(props.apiId, props.index, newValue); + } + }, + { immediate: true } + ); +} diff --git a/src/composables/useSEO.js b/src/composables/useSEO.js new file mode 100644 index 0000000..b3b9554 --- /dev/null +++ b/src/composables/useSEO.js @@ -0,0 +1,213 @@ +import { ref, watch } from "vue"; +import { useRoute } from "vue-router"; + +export function useSEO() { + const route = useRoute(); + + // 默认SEO信息 + const defaultSEO = { + title: "愉悦查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用", + description: + "愉悦查,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。", + keywords: + "大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询", + url: "https://www.zhinengcha.cn", + }; + + // 页面SEO配置 + const pageSEO = ref({ + title: "", + description: "", + keywords: "", + url: "", + }); + + // 更新页面SEO信息 + const updateSEO = (seoConfig) => { + const config = { ...defaultSEO, ...seoConfig }; + + // 更新页面标题 + document.title = config.title; + + // 更新meta描述 + let metaDescription = document.querySelector( + 'meta[name="description"]' + ); + if (!metaDescription) { + metaDescription = document.createElement("meta"); + metaDescription.name = "description"; + document.head.appendChild(metaDescription); + } + metaDescription.content = config.description; + + // 更新meta关键词 + let metaKeywords = document.querySelector('meta[name="keywords"]'); + if (!metaKeywords) { + metaKeywords = document.createElement("meta"); + metaKeywords.name = "keywords"; + document.head.appendChild(metaKeywords); + } + metaKeywords.content = config.keywords; + + // 更新Open Graph标签 + updateOpenGraph(config); + + // 更新Twitter Cards + updateTwitterCards(config); + + // 更新canonical URL + updateCanonicalURL(config.url); + + // 更新结构化数据 + updateStructuredData(config); + }; + + // 更新Open Graph标签 + const updateOpenGraph = (config) => { + const ogTags = { + "og:title": config.title, + "og:description": config.description, + "og:url": config.url, + "og:type": "website", + "og:site_name": "愉悦查", + "og:locale": "zh_CN", + }; + + Object.entries(ogTags).forEach(([property, content]) => { + let meta = document.querySelector(`meta[property="${property}"]`); + if (!meta) { + meta = document.createElement("meta"); + meta.setAttribute("property", property); + document.head.appendChild(meta); + } + meta.content = content; + }); + }; + + // 更新Twitter Cards + const updateTwitterCards = (config) => { + const twitterTags = { + "twitter:card": "summary", + "twitter:title": config.title, + "twitter:description": config.description, + "twitter:url": config.url, + }; + + Object.entries(twitterTags).forEach(([name, content]) => { + let meta = document.querySelector(`meta[name="${name}"]`); + if (!meta) { + meta = document.createElement("meta"); + meta.name = name; + document.head.appendChild(meta); + } + meta.content = content; + }); + }; + + // 更新canonical URL + const updateCanonicalURL = (url) => { + let canonical = document.querySelector('link[rel="canonical"]'); + if (!canonical) { + canonical = document.createElement("link"); + canonical.rel = "canonical"; + document.head.appendChild(canonical); + } + canonical.href = url; + }; + + // 更新结构化数据 + const updateStructuredData = (config) => { + // 移除现有的结构化数据 + const existingScripts = document.querySelectorAll( + 'script[type="application/ld+json"]' + ); + existingScripts.forEach((script) => { + if (script.textContent.includes('"@type":"WebPage"')) { + script.remove(); + } + }); + + // 添加新的结构化数据 + const structuredData = { + "@context": "https://schema.org", + "@type": "WebPage", + name: config.title, + description: config.description, + url: config.url, + mainEntity: { + "@type": "Organization", + name: "愉悦查", + url: "https://www.zhinengcha.cn/", + description: + "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用", + }, + }; + + const script = document.createElement("script"); + script.type = "application/ld+json"; + script.textContent = JSON.stringify(structuredData); + document.head.appendChild(script); + }; + + // 根据路由自动更新SEO + const updateSEOByRoute = () => { + const routeConfigs = { + "/": { + title: "愉悦查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用", + description: + "愉悦查,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。", + keywords: + "大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询", + }, + "/agent": { + title: "愉悦查代理 - 免费开通代理权限 | 大数据风险报告代理", + description: + "愉悦查代理平台,免费开通代理权限,享受大数据风险报告查询服务代理收益。专业的大数据风险报告、婚姻查询、个人信用评估等服务的代理合作。", + keywords: + "愉悦查代理, 免费代理, 大数据风险报告代理, 代理权限, 代理收益", + }, + "/help": { + title: "帮助中心 - 愉悦查使用指南 | 常见问题解答", + description: + "愉悦查帮助中心,提供详细的使用指南、常见问题解答、操作教程等,帮助用户更好地使用大数据风险报告查询服务。", + keywords: "愉悦查帮助, 使用指南, 常见问题, 操作教程, 客服支持", + }, + "/help/guide": { + title: "使用指南 - 愉悦查操作教程 | 功能说明", + description: + "愉悦查详细使用指南,包含各功能模块的操作教程、功能说明、注意事项等,让用户快速上手使用。", + keywords: "使用指南, 操作教程, 功能说明, 快速上手, 愉悦查教程", + }, + "/example": { + title: "示例报告 - 愉悦查报告展示 | 大数据风险报告样例", + description: + "愉悦查示例报告展示,包含大数据风险报告、婚姻状况查询、个人信用评估等服务的报告样例,让用户了解报告内容和格式。", + keywords: + "示例报告, 报告展示, 报告样例, 大数据风险报告, 婚姻查询报告", + }, + "/service": { + title: "客服中心 - 愉悦查在线客服 | 技术支持", + description: + "愉悦查客服中心,提供在线客服支持、技术咨询、问题反馈等服务,确保用户获得及时有效的帮助。", + keywords: "客服中心, 在线客服, 技术支持, 问题反馈, 愉悦查客服", + }, + }; + + const currentPath = route?.path || "/"; + const config = routeConfigs[currentPath] || defaultSEO; + + updateSEO({ + ...config, + url: `https://www.zhinengcha.cn${currentPath}`, + }); + }; + + // 监听路由变化 + watch(() => route?.path, updateSEOByRoute, { immediate: true }); + + return { + updateSEO, + updateSEOByRoute, + pageSEO, + }; +} diff --git a/src/composables/useWebView.js b/src/composables/useWebView.js new file mode 100644 index 0000000..318791f --- /dev/null +++ b/src/composables/useWebView.js @@ -0,0 +1,130 @@ +import { ref, onMounted } from "vue"; +import "@/assets/uni-webview" + +export function useWebView() { + const platform = ref(""); + const token = ref(""); + // 检测环境并通知父窗口加载完毕 + const handleBridgeReady = () => { + if (platform.value) { + h5PostMessage("loaded", true); + } + }; + + + // 获取 Token(从 URL 中解析) + const getTokenFromUrl = () => { + const urlParams = new URLSearchParams(window.location.search); + const tokenFromUrl = urlParams.get("token"); + token.value = tokenFromUrl || ""; // 如果 URL 没有 token,返回空字符串 + if (token.value) { + localStorage.setItem("token", token.value); + } + return tokenFromUrl; + }; + + // 封装 postMessage 方法 + const postMessage = (data) => { + if (platform.value === "h5") { + h5PostMessage("postMessage", data); + } else if (uni && uni.webView.postMessage) { + uni.webView.postMessage(data); + } else { + console.error("uni.webView.postMessage is not available."); + } + }; + + const redirectTo = (data) => { + if (platform.value === "h5") { + h5PostMessage("redirectTo", data) + } else if (uni && uni.webView.redirectTo) { + // 非 H5 环境,调用 uni.webView.redirectTo + uni.webView.redirectTo(data); + } else { + console.error("uni.webView.redirectTo is not available."); + } + }; + + // 封装 navigateBack 方法 + const navigateBack = (data) => { + if (platform.value === "h5") { + window.top.history.back(); + // h5PostMessage("navigateBack", data) + } else if (uni && uni.webView.navigateBack) { + // 非 H5 环境,调用 uni.webView.navigateBack + uni.webView.navigateBack(data); + } else { + console.error("uni.webView.navigateBack is not available."); + } + }; + + // 封装 navigateTo 方法 + const navigateTo = (data) => { + if (platform.value === "h5") { + // h5PostMessage("navigateTo", data) + window.top.location.href = "/app" + data.url + } else if (uni && uni.webView.navigateTo) { + uni.webView.navigateTo(data); + } else { + console.error("uni.webView.navigateTo is not available."); + } + }; + const payment = (data) => { + if (platform.value === "h5") { + h5PostMessage("payment", data) + } else if (uni && uni.webView.navigateTo) { + // 非 H5 环境,调用 uni.webView.navigateTo + uni.webView.navigateTo(data); + } else { + console.error("uni.webView.navigateTo is not available."); + } + } + const getEnv = () => { + return new Promise((resolve, reject) => { + let env = localStorage.getItem(platform) + if (env) { + platform.value = env + resolve(env); + } else { + uni.webView.getEnv((env) => { + // 遍历 env 对象,找到值为 true 的键 + const platformKey = Object.keys(env).find(key => env[key] === true); + platform.value = platformKey; + if (platformKey) { + resolve(platformKey); // 返回键名(如 'h5', 'mp-weixin' 等) + } else { + reject('未知平台'); + } + }); + } + }); + }; + + onMounted(async () => { + try { + const envValue = await getEnv(); + console.log("当前环境", envValue) + // 将返回的键名(如 'h5', 'mp-weixin')存储到 platform + handleBridgeReady(); + } catch (error) { + console.error(error); + } + // 获取 Token + getTokenFromUrl(); + }); + + return { + platform, + token, + getEnv, + redirectTo, + postMessage, + navigateTo, + navigateBack, + payment + }; +} +const h5PostMessage = (action, data) => { + window.parent.postMessage({ action, data, messageId: generateUniqueId(action) }, "*"); +} +const generateUniqueId = (action) => `msg_${action}_${new Date().getTime()}`; diff --git a/src/composables/useWeixinShare.js b/src/composables/useWeixinShare.js new file mode 100644 index 0000000..87b0a4b --- /dev/null +++ b/src/composables/useWeixinShare.js @@ -0,0 +1,234 @@ +import { ref } from "vue"; +import { useEnv } from "./useEnv"; + +export function useWeixinShare() { + const { isWeChat } = useEnv(); + const wxConfigReady = ref(false); + const signMap = new Map(); // 存储各个链接的签名信息 + + /** + * 从后端获取签名信息 + * @param {string} url - 需要签名的URL + * @returns {Promise} 签名信息 + */ + const getWxSignature = async (url) => { + try { + const { data, error } = await useApiFetch("/wechat/getSignature") + .post({ url }) + .json(); + + if (error.value || data.value?.code !== 200) { + console.error("获取微信签名失败:", error.value || data.value); + return null; + } + + return data.value.data; + } catch (err) { + console.error("获取微信签名异常:", err); + return null; + } + }; + + /** + * 配置微信SDK + * @param {Object} signature - 签名信息 + * @param {Object} shareConfig - 分享配置 + */ + const wxConfigJSSDK = (signature, shareConfig) => { + const { title, desc, link, imgUrl } = shareConfig; + + window.jWeixin.config({ + debug: false, // 生产环境设为false,开发时可设为true查看错误 + appId: signature.appId, + timestamp: signature.timestamp, + nonceStr: signature.nonceStr, + signature: signature.signature, + jsApiList: [ + "updateAppMessageShareData", + "updateTimelineShareData", + "onMenuShareAppMessage", + "onMenuShareTimeline", + ], + }); + + window.jWeixin.ready(() => { + console.log("微信SDK配置成功"); + + const shareData = { + title, + desc, + link, + imgUrl, + }; + + // 新版分享接口 - 分享给朋友 + window.jWeixin.updateAppMessageShareData({ + ...shareData, + success: function (res) { + console.log("分享给朋友配置成功", res); + }, + fail: function (err) { + console.error("分享给朋友配置失败", err); + }, + }); + + // 新版分享接口 - 分享到朋友圈 + window.jWeixin.updateTimelineShareData({ + ...shareData, + success: function (res) { + console.log("分享到朋友圈配置成功", res); + }, + fail: function (err) { + console.error("分享到朋友圈配置失败", err); + }, + }); + + // 兼容旧版微信 - 分享给朋友 + window.jWeixin.onMenuShareAppMessage({ + ...shareData, + success: function (res) { + console.log("分享给朋友成功", res); + }, + fail: function (err) { + console.error("分享给朋友失败", err); + }, + cancel: function () { + console.log("用户取消分享"); + }, + }); + + // 兼容旧版微信 - 分享到朋友圈 + window.jWeixin.onMenuShareTimeline({ + ...shareData, + success: function (res) { + console.log("分享到朋友圈成功", res); + }, + fail: function (err) { + console.error("分享到朋友圈失败", err); + }, + cancel: function () { + console.log("用户取消分享"); + }, + }); + + wxConfigReady.value = true; + }); + + window.jWeixin.error((res) => { + console.error("微信SDK配置失败:", res); + // 常见错误: + // 1. invalid url domain - 当前域名未在公众号后台配置 + // 2. invalid signature - 签名错误 + // 3. permission denied - 没有权限使用该接口 + }); + }; + + /** + * 配置微信分享 + * @param {Object} shareConfig - 分享配置 + * @param {string} shareConfig.title - 分享标题 + * @param {string} shareConfig.desc - 分享描述 + * @param {string} shareConfig.link - 分享链接 + * @param {string} shareConfig.imgUrl - 分享图标URL + */ + const configWeixinShare = async (shareConfig = {}) => { + console.log("configWeixinShare", shareConfig); + console.log("isWeChat", isWeChat.value); + console.log("window.jWeixin", window.jWeixin); + // 只在微信环境中配置 + if (!isWeChat.value || !window.jWeixin) { + console.log("非微信环境或微信SDK未加载"); + return; + } + + const defaultConfig = { + title: import.meta.env.VITE_SHARE_TITLE, + desc: import.meta.env.VITE_SHARE_DESC, + link: window.location.href.split("#")[0], // 获取当前页面URL,不包括hash + imgUrl: import.meta.env.VITE_SHARE_IMG, + }; + + const config = { ...defaultConfig, ...shareConfig }; + + // 获取当前页面的完整URL(不包括hash) + const currentUrl = window.location.href.split("#")[0]; + + // 检查是否已有该URL的签名 + if (signMap.has(currentUrl)) { + console.log("使用缓存的签名信息"); + wxConfigJSSDK(signMap.get(currentUrl), config); + return; + } + + // 从后端获取签名 + console.log("正在获取微信签名..."); + const signature = await getWxSignature(currentUrl); + + if (!signature) { + console.error("获取微信签名失败,无法配置分享"); + return; + } + + // 缓存签名信息 + signMap.set(currentUrl, signature); + + // 配置微信SDK + wxConfigJSSDK(signature, config); + }; + + /** + * 动态更新分享配置 + * @param {Object} shareConfig - 分享配置 + */ + const updateShareConfig = (shareConfig) => { + configWeixinShare(shareConfig); + }; + + /** + * 根据当前页面动态设置分享内容 + */ + const setDynamicShare = async () => { + const route = window.location.pathname; + let shareConfig = {}; + + // 根据不同的路由设置不同的分享内容 + if (route.includes("/example")) { + shareConfig = { + title: import.meta.env.VITE_SHARE_TITLE, + desc: import.meta.env.VITE_SHARE_DESC, + link: window.location.href.split("#")[0], + imgUrl: import.meta.env.VITE_SHARE_IMG, + }; + } else if (route.includes("/agent")) { + shareConfig = { + title: import.meta.env.VITE_SHARE_TITLE, + desc: import.meta.env.VITE_SHARE_DESC, + link: window.location.href.split("#")[0], + imgUrl: import.meta.env.VITE_SHARE_IMG, + }; + } else if (route.includes("/help")) { + shareConfig = { + title: import.meta.env.VITE_SHARE_TITLE, + desc: import.meta.env.VITE_SHARE_DESC, + link: window.location.href.split("#")[0], + imgUrl: import.meta.env.VITE_SHARE_IMG, + }; + } else { + shareConfig = { + title: import.meta.env.VITE_SHARE_TITLE, + desc: import.meta.env.VITE_SHARE_DESC, + link: window.location.href.split("#")[0], + imgUrl: import.meta.env.VITE_SHARE_IMG, + }; + } + + await configWeixinShare(shareConfig); + }; + + return { + wxConfigReady, + configWeixinShare, + updateShareConfig, + setDynamicShare, + }; +} diff --git a/src/composables/useZoomAdapter.js b/src/composables/useZoomAdapter.js new file mode 100644 index 0000000..beb8d21 --- /dev/null +++ b/src/composables/useZoomAdapter.js @@ -0,0 +1,32 @@ +import { ref, onMounted } from 'vue'; +import zoomAdapter from '../utils/zoomAdapter.js'; + +/** + * 简化版缩放适配组合式函数 + */ +export function useZoomAdapter() { + const currentZoom = ref(1); + const isTooHighZoom = ref(false); + + const handleZoomChange = (event) => { + const { zoom } = event.detail; + currentZoom.value = zoom; + isTooHighZoom.value = zoom > 3; + }; + + onMounted(() => { + if (!zoomAdapter.isInitialized) { + zoomAdapter.init(); + } + window.addEventListener('zoomChanged', handleZoomChange); + }); + + return { + currentZoom, + isTooHighZoom, + getZoomAdaptiveClass: () => ({ + 'zoom-adaptive': true, + 'too-high-zoom': isTooHighZoom.value + }) + }; +} \ No newline at end of file diff --git a/src/data/ivyz3p9m-dictionary.json b/src/data/ivyz3p9m-dictionary.json new file mode 100644 index 0000000..04e56cd --- /dev/null +++ b/src/data/ivyz3p9m-dictionary.json @@ -0,0 +1,6416 @@ +{ + "educationLevel": { + "1": "专科", + "2": "本科", + "3": "硕士研究生", + "4": "博士研究生", + "5": "第二学士学位", + "99": "未知" + }, + "learningForm": { + "1": "脱产", + "2": "普通全日制", + "3": "全日制", + "4": "开放教育", + "5": "夜大学", + "6": "函授", + "7": "网络教育", + "8": "非全日制", + "9": "业余", + "99": "未知" + }, + "specialties": { + "10100": "哲学类", + "10101": "哲学", + "10102": "逻辑学", + "10103": "宗教学", + "10104": "伦理学", + "10105": "伦理学", + "10106": "美学", + "10107": "宗教学", + "10108": "科学技术哲学", + "20100": "经济学类", + "20101": "经济学", + "20102": "经济统计学", + "20103": "国民经济管理", + "20104": "资源与环境经济学", + "20105": "商务经济学", + "20106": "能源经济", + "20107": "劳动经济学", + "20108": "经济工程", + "20109": "数字经济", + "20200": "财政学类", + "20201": "财政学", + "20202": "税收学", + "20203": "国际税收", + "20204": "金融学", + "20205": "产业经济学", + "20206": "国际贸易学", + "20207": "劳动经济学", + "20208": "统计学", + "20209": "数量经济学", + "20210": "国防经济", + "20300": "金融学类", + "20301": "金融学", + "20302": "金融工程", + "20303": "保险学", + "20304": "投资学", + "20305": "金融数学", + "20306": "信用管理", + "20307": "经济与金融", + "20308": "精算学", + "20309": "互联网金融", + "20310": "金融科技", + "20400": "经济与贸易类", + "20401": "国际经济与贸易", + "20402": "贸易经济", + "25100": "金融", + "25200": "应用统计", + "25300": "税务", + "25400": "国际商务", + "25500": "保险", + "25600": "资产评估", + "25700": "审计", + "27000": "统计学", + "30100": "法学类", + "30101": "法学", + "30102": "知识产权", + "30103": "监狱学", + "30104": "信用风险管理与法律防控", + "30105": "国际经贸规则", + "30106": "司法警察学", + "30107": "社区矫正", + "30108": "环境与资源保护法学", + "30109": "国际法学", + "30110": "军事法学", + "30200": "政治学类", + "30201": "政治学与行政学", + "30202": "国际政治", + "30203": "外交学", + "30204": "国际事务与国际关系", + "30205": "政治学、经济学与哲学", + "30206": "国际组织与全球治理", + "30207": "国际关系", + "30208": "外交学", + "30300": "社会学类", + "30301": "社会学", + "30302": "社会工作", + "30303": "人类学", + "30304": "女性学", + "30305": "家政学", + "30306": "老年学", + "30400": "民族学类", + "30401": "民族学", + "30402": "马克思主义民族理论与政策", + "30403": "中国少数民族经济", + "30404": "中国少数民族史", + "30405": "中国少数民族艺术", + "30500": "马克思主义理论类", + "30501": "科学社会主义", + "30502": "中国共产党历史", + "30503": "思想政治教育", + "30504": "马克思主义理论", + "30505": "思想政治教育", + "30506": "中国近现代史基本问题研究", + "30600": "公安学类", + "30601": "治安学", + "30602": "侦查学", + "30603": "边防管理", + "30604": "禁毒学", + "30605": "警犬技术", + "30606": "经济犯罪侦查", + "30607": "边防指挥", + "30608": "消防指挥", + "30609": "警卫学", + "30610": "公安情报学", + "30611": "犯罪学", + "30612": "公安管理学", + "30613": "涉外警务", + "30614": "国内安全保卫", + "30615": "警务指挥与战术", + "30616": "技术侦查学", + "30617": "海警执法", + "30618": "公安政治工作", + "30619": "移民管理", + "30620": "出入境管理", + "35100": "法律", + "35101": "法律(非法学)", + "35102": "法律(法学)", + "35200": "社会工作", + "35300": "警务", + "40100": "教育学类", + "40101": "教育学", + "40102": "科学教育", + "40103": "人文教育", + "40104": "教育技术学", + "40105": "艺术教育", + "40106": "学前教育", + "40107": "小学教育", + "40108": "特殊教育", + "40109": "华文教育", + "40110": "教育康复学", + "40111": "卫生教育", + "40112": "认知科学与技术", + "40200": "体育学类", + "40201": "体育教育", + "40202": "运动训练", + "40203": "社会体育指导与管理", + "40204": "武术与民族传统体育", + "40205": "运动人体科学", + "40206": "运动康复", + "40207": "休闲体育", + "40208": "体能训练", + "40209": "冰雪运动", + "40210": "电子竞技运动与管理", + "40211": "智能体育工程", + "40212": "体育旅游", + "40213": "运动能力开发", + "40300": "体育学", + "40301": "体育人文社会学", + "40302": "运动人体科学", + "40303": "体育教育训练学", + "40304": "民族传统体育学", + "45100": "教育", + "45101": "教育管理", + "45102": "学科教学(思政)", + "45103": "学科教学(语文)", + "45104": "学科教学(数学)", + "45105": "学科教学(物理)", + "45106": "学科教学(化学)", + "45107": "学科教学(生物)", + "45108": "学科教学(英语)", + "45109": "学科教学(历史)", + "45110": "学科教学(地理)", + "45111": "学科教学(音乐)", + "45112": "学科教学(体育)", + "45113": "学科教学(美术)", + "45114": "现代教育技术", + "45115": "小学教育", + "45116": "心理健康教育", + "45117": "科学与技术教育", + "45118": "学前教育", + "45119": "特殊教育", + "45120": "职业技术教育", + "45171": "学校课程与教学", + "45172": "学生发展与教育", + "45173": "教育领导与管理", + "45174": "汉语国际教育", + "45200": "体育", + "45201": "体育教学", + "45202": "运动训练", + "45203": "竞赛组织", + "45204": "社会体育指导", + "45300": "汉语国际教育", + "45400": "应用心理", + "47100": "教育经济与管理", + "47101": "教育经济与管理", + "48100": "教育博士", + "48102": "学生发展与教育", + "48103": "教育领导与管理", + "50100": "中国语言文学类", + "50101": "汉语言文学", + "50102": "汉语言", + "50103": "汉语国际教育", + "50104": "中国少数民族语言文学", + "50105": "古典文献学", + "50106": "应用语言学", + "50107": "秘书学", + "50108": "中国语言与文化", + "50109": "手语翻译", + "50200": "外国语言文学类", + "50201": "英语", + "50202": "俄语", + "50203": "德语", + "50204": "法语", + "50205": "西班牙语", + "50206": "阿拉伯语", + "50207": "日语", + "50208": "波斯语", + "50209": "朝鲜语", + "50210": "菲律宾语", + "50211": "梵语巴利语", + "50212": "印度尼西亚语", + "50213": "印地语", + "50214": "柬埔寨语", + "50215": "老挝语", + "50216": "缅甸语", + "50217": "马来语", + "50218": "蒙古语", + "50219": "僧伽罗语", + "50220": "泰语", + "50221": "乌尔都语", + "50222": "希伯来语", + "50223": "越南语", + "50224": "豪萨语", + "50225": "斯瓦希里语", + "50226": "阿尔巴尼亚语", + "50227": "保加利亚语", + "50228": "波兰语", + "50229": "捷克语", + "50230": "斯洛伐克语", + "50231": "罗马尼亚语", + "50232": "葡萄牙语", + "50233": "瑞典语", + "50234": "塞尔维亚语", + "50235": "土耳其语", + "50236": "希腊语", + "50237": "匈牙利语", + "50238": "意大利语", + "50239": "泰米尔语", + "50240": "普什图语", + "50241": "世界语", + "50242": "孟加拉语", + "50243": "尼泊尔语", + "50244": "克罗地亚语", + "50245": "荷兰语", + "50246": "芬兰语", + "50247": "乌克兰语", + "50248": "挪威语", + "50249": "丹麦语", + "50250": "冰岛语", + "50251": "爱尔兰语", + "50252": "拉脱维亚语", + "50253": "立陶宛语", + "50254": "斯洛文尼亚语", + "50255": "爱沙尼亚语", + "50256": "马耳他语", + "50257": "哈萨克语", + "50258": "乌兹别克语", + "50259": "祖鲁语", + "50260": "拉丁语", + "50261": "翻译", + "50262": "商务英语", + "50263": "阿姆哈拉语", + "50264": "吉尔吉斯语", + "50265": "索马里语", + "50266": "土库曼语", + "50267": "加泰罗尼亚语", + "50268": "约鲁巴语", + "50269": "亚美尼亚语", + "50270": "马达加斯加语", + "50271": "格鲁吉亚语", + "50272": "阿塞拜疆语", + "50273": "阿非利卡语", + "50274": "马其顿语", + "50275": "塔吉克语", + "50276": "茨瓦纳语", + "50277": "恩德贝莱语", + "50278": "科摩罗语", + "50279": "克里奥尔语", + "50280": "绍纳语", + "50281": "提格雷尼亚语", + "50282": "白俄罗斯语", + "50283": "毛利语", + "50284": "汤加语", + "50285": "萨摩亚语", + "50286": "库尔德语", + "50287": "比斯拉马语", + "50288": "达里语", + "50289": "德顿语", + "50290": "迪维希语", + "50291": "斐济语", + "50292": "库克群岛毛利语", + "50293": "隆迪语", + "50294": "卢森堡语", + "50295": "卢旺达语", + "50296": "纽埃语", + "50297": "皮金语", + "50298": "切瓦语", + "50299": "塞苏陀语", + "50300": "新闻传播学类", + "50301": "新闻学", + "50302": "广播电视学", + "50303": "广告学", + "50304": "传播学", + "50305": "编辑出版学", + "50306": "网络与新媒体", + "50307": "数字出版", + "50308": "时尚传播", + "50309": "国际新闻与传播", + "50310": "会展", + "55100": "翻译", + "55101": "英语笔译", + "55102": "英语口译", + "55103": "俄语笔译", + "55104": "俄语口译", + "55105": "日语笔译", + "55106": "日语口译", + "55107": "法语笔译", + "55108": "法语口译", + "55109": "德语笔译", + "55110": "德语口译", + "55111": "朝鲜语笔译", + "55112": "朝鲜语口译", + "55113": "西班牙语笔译", + "55114": "西班牙语口译", + "55115": "阿拉伯语笔译", + "55116": "阿拉伯语口译", + "55117": "泰语笔译", + "55118": "泰语口译", + "55119": "意大利语笔译", + "55120": "意大利语口译", + "55121": "越南语笔译", + "55122": "越南语口译", + "55200": "新闻与传播", + "55300": "出版", + "60100": "历史学类", + "60101": "历史学", + "60102": "世界史", + "60103": "考古学", + "60104": "文物与博物馆学", + "60105": "文物保护技术", + "60106": "外国语言与外国历史", + "60107": "文化遗产", + "60200": "中国史", + "60201": "中国古代史", + "60202": "历史地理学", + "60204": "专门史", + "60300": "世界史", + "65100": "文物与博物馆", + "65101": "考古学", + "65102": "博物馆学", + "65103": "文化遗产", + "65104": "文物保护", + "70100": "数学类", + "70101": "数学与应用数学", + "70102": "信息与计算科学", + "70103": "数理基础科学", + "70104": "数据计算及应用", + "70105": "运筹学与控制论", + "70200": "物理学类", + "70201": "物理学", + "70202": "应用物理学", + "70203": "核物理", + "70204": "声学", + "70205": "系统科学与工程", + "70206": "量子信息科学", + "70207": "光学", + "70208": "无线电物理", + "70300": "化学类", + "70301": "化学", + "70302": "应用化学", + "70303": "化学生物学", + "70304": "分子科学与工程", + "70305": "能源化学", + "70306": "化学测量学技术", + "70400": "天文学类", + "70401": "天文学", + "70402": "天体测量与天体力学", + "70500": "地理科学类", + "70501": "地理科学", + "70502": "自然地理与资源环境", + "70503": "人文地理与城乡规划", + "70504": "地理信息科学", + "70600": "大气科学类", + "70601": "大气科学", + "70602": "应用气象学", + "70603": "气象技术与工程", + "70700": "海洋科学类", + "70701": "海洋科学", + "70702": "海洋技术", + "70703": "海洋资源与环境", + "70704": "军事海洋学", + "70800": "地球物理学类", + "70801": "地球物理学", + "70802": "空间科学与技术", + "70803": "防灾减灾科学与工程", + "70900": "地质学类", + "70901": "地质学", + "70902": "地球化学", + "70903": "地球信息科学与技术", + "70904": "古生物学", + "70905": "第四纪地质学", + "71000": "生物科学类", + "71001": "生物科学", + "71002": "生物技术", + "71003": "生物信息学", + "71004": "生态学", + "71005": "整合科学", + "71006": "神经科学", + "71007": "遗传学", + "71008": "发育生物学", + "71009": "细胞生物学", + "71010": "生物化学与分子生物学", + "71011": "生物物理学", + "71012": "生态学", + "71100": "心理学类", + "71101": "心理学", + "71102": "应用心理学", + "71200": "统计学类", + "71201": "统计学", + "71202": "应用统计学", + "71300": "生态学", + "71400": "统计学", + "77100": "心理学", + "77101": "基础心理学", + "77102": "发展与教育心理学", + "77103": "应用心理学", + "77200": "力学", + "77201": "一般力学与力学基础", + "77202": "固体力学", + "77203": "流体力学", + "77204": "工程力学", + "77300": "材料科学与工程", + "77301": "材料物理与化学", + "77302": "材料学", + "77303": "材料加工工程", + "77400": "电子科学与技术", + "77401": "物理电子学", + "77402": "电路与系统", + "77403": "微电子学与固体电子学", + "77404": "电磁场与微波技术", + "77500": "计算机科学与技术", + "77501": "计算机系统结构", + "77502": "计算机软件与理论", + "77503": "计算机应用技术", + "77600": "环境科学与工程", + "77601": "环境科学", + "77602": "环境工程", + "77700": "生物医学工程", + "77800": "基础医学", + "77801": "人体解剖与组织胚胎学", + "77802": "免疫学", + "77803": "病原生物学", + "77804": "病理学与病理生理学", + "77805": "法医学", + "77806": "放射医学", + "77900": "公共卫生与预防医学", + "77901": "流行病与卫生统计学", + "77902": "劳动卫生与环境卫生学", + "77903": "营养与食品卫生学", + "77904": "儿少卫生与妇幼保健学", + "77905": "卫生毒理学", + "77906": "军事预防医学", + "78000": "药学", + "78001": "药物化学", + "78002": "药剂学", + "78003": "生药学", + "78004": "药物分析学", + "78005": "微生物与生化药学", + "78006": "药理学", + "78100": "中药学", + "78200": "医学技术", + "78300": "护理学", + "78400": "教育技术学", + "78401": "教育技术学", + "78500": "运动人体科学", + "78501": "运动人体科学", + "78600": "农药学", + "78601": "农药学", + "80100": "力学类", + "80101": "理论与应用力学", + "80102": "工程力学", + "80103": "流体力学", + "80104": "工程力学", + "80200": "机械类", + "80201": "机械工程", + "80202": "机械设计制造及其自动化", + "80203": "材料成型及控制工程", + "80204": "机械电子工程", + "80205": "工业设计", + "80206": "过程装备与控制工程", + "80207": "车辆工程", + "80208": "汽车服务工程", + "80209": "机械工艺技术", + "80210": "微机电系统工程", + "80211": "机电技术教育", + "80212": "汽车维修工程教育", + "80213": "智能制造工程", + "80214": "智能车辆工程", + "80215": "仿生科学与工程", + "80216": "新能源汽车工程", + "80300": "仪器类", + "80301": "测控技术与仪器", + "80302": "精密仪器", + "80303": "智能感知工程", + "80400": "材料类", + "80401": "材料科学与工程", + "80402": "材料物理", + "80403": "材料化学", + "80404": "冶金工程", + "80405": "金属材料工程", + "80406": "无机非金属材料工程", + "80407": "高分子材料与工程", + "80408": "复合材料与工程", + "80409": "粉体材料科学与工程", + "80410": "宝石及材料工艺学", + "80411": "焊接技术与工程", + "80412": "功能材料", + "80413": "纳米材料与技术", + "80414": "新能源材料与器件", + "80415": "材料设计科学与工程", + "80416": "复合材料成型工程", + "80417": "智能材料与结构", + "80500": "能源动力类", + "80501": "能源与动力工程", + "80502": "能源与环境系统工程", + "80503": "新能源科学与工程", + "80504": "储能科学与工程", + "80600": "电气类", + "80601": "电气工程及其自动化", + "80602": "智能电网信息工程", + "80603": "光源与照明", + "80604": "电气工程与智能控制", + "80605": "电机电器智能化", + "80606": "电缆工程", + "80700": "电子信息类", + "80701": "电子信息工程", + "80702": "电子科学与技术", + "80703": "通信工程", + "80704": "微电子科学与工程", + "80705": "光电信息科学与工程", + "80706": "信息工程", + "80707": "广播电视工程", + "80708": "水声工程", + "80709": "电子封装技术", + "80710": "集成电路设计与集成系统", + "80711": "医学信息工程", + "80712": "电磁场与无线技术", + "80713": "电波传播与天线", + "80714": "电子信息科学与技术", + "80715": "电信工程及管理", + "80716": "应用电子技术教育", + "80717": "人工智能", + "80718": "海洋信息工程", + "80800": "自动化类", + "80801": "自动化", + "80802": "轨道交通信号与控制", + "80803": "机器人工程", + "80804": "邮政工程", + "80805": "核电技术与控制工程", + "80806": "智能装备与系统", + "80807": "工业智能", + "80900": "计算机类", + "80901": "计算机科学与技术", + "80902": "软件工程", + "80903": "网络工程", + "80904": "信息安全", + "80905": "物联网工程", + "80906": "数字媒体技术", + "80907": "智能科学与技术", + "80908": "空间信息与数字技术", + "80909": "电子与计算机工程", + "80910": "数据科学与大数据技术", + "80911": "网络空间安全", + "80912": "新媒体技术", + "80913": "电影制作", + "80914": "保密技术", + "80915": "服务科学与工程", + "80916": "虚拟现实技术", + "80917": "区块链工程", + "80918": "密码科学与技术", + "81000": "土木类", + "81001": "土木工程", + "81002": "建筑环境与能源应用工程", + "81003": "给排水科学与工程", + "81004": "建筑电气与智能化", + "81005": "城市地下空间工程", + "81006": "道路桥梁与渡河工程", + "81007": "铁道工程", + "81008": "智能建造", + "81009": "土木、水利与海洋工程", + "81010": "土木、水利与交通工程", + "81011": "城市水系统工程", + "81012": "智能建造与智慧交通", + "81100": "水利类", + "81101": "水利水电工程", + "81102": "水文与水资源工程", + "81103": "港口航道与海岸工程", + "81104": "水务工程", + "81105": "水利科学与工程", + "81200": "测绘类", + "81201": "测绘工程", + "81202": "遥感科学与技术", + "81203": "导航工程", + "81204": "地理国情监测", + "81205": "地理空间信息工程", + "81300": "化工与制药类", + "81301": "化学工程与工艺", + "81302": "制药工程", + "81303": "资源循环科学与工程", + "81304": "能源化学工程", + "81305": "化学工程与工业生物工程", + "81306": "化工安全工程", + "81307": "涂料工程", + "81308": "精细化工", + "81400": "地质类", + "81401": "地质工程", + "81402": "勘查技术与工程", + "81403": "资源勘查工程", + "81404": "地下水科学与工程", + "81405": "旅游地学与规划工程", + "81406": "桥梁与隧道工程", + "81500": "矿业类", + "81501": "采矿工程", + "81502": "石油工程", + "81503": "矿物加工工程", + "81504": "油气储运工程", + "81505": "矿物资源工程", + "81506": "海洋油气工程", + "81600": "纺织类", + "81601": "纺织工程", + "81602": "服装设计与工程", + "81603": "非织造材料与工程", + "81604": "服装设计与工艺教育", + "81605": "丝绸设计与工程", + "81700": "轻工类", + "81701": "轻化工程", + "81702": "包装工程", + "81703": "印刷工程", + "81704": "香料香精技术与工程", + "81705": "化妆品技术与工程", + "81800": "交通运输类", + "81801": "交通运输", + "81802": "交通工程", + "81803": "航海技术", + "81804": "轮机工程", + "81805": "飞行技术", + "81806": "交通设备与控制工程", + "81807": "救助与打捞工程", + "81808": "船舶电子电气工程", + "81809": "轨道交通电气与控制", + "81810": "邮轮工程与管理", + "81900": "海洋工程类", + "81901": "船舶与海洋工程", + "81902": "海洋工程与技术", + "81903": "海洋资源开发技术", + "81904": "海洋机器人", + "82000": "航空航天类", + "82001": "航空航天工程", + "82002": "飞行器设计与工程", + "82003": "飞行器制造工程", + "82004": "飞行器动力工程", + "82005": "飞行器环境与生命保障工程", + "82006": "飞行器质量与可靠性", + "82007": "飞行器适航技术", + "82008": "飞行器控制与信息工程", + "82009": "无人驾驶航空器系统工程", + "82100": "兵器类", + "82101": "武器系统与工程", + "82102": "武器发射工程", + "82103": "探测制导与控制技术", + "82104": "弹药工程与爆炸技术", + "82105": "特种能源技术与工程", + "82106": "装甲车辆工程", + "82107": "信息对抗技术", + "82108": "智能无人系统技术", + "82200": "核工程类", + "82201": "核工程与核技术", + "82202": "辐射防护与核安全", + "82203": "工程物理", + "82204": "核化工与核燃料工程", + "82300": "农业工程类", + "82301": "农业工程", + "82302": "农业机械化及其自动化", + "82303": "农业电气化", + "82304": "农业建筑环境与能源工程", + "82305": "农业水利工程", + "82306": "土地整治工程", + "82307": "农业智能装备工程", + "82400": "林业工程类", + "82401": "森林工程", + "82402": "木材科学与工程", + "82403": "林产化工", + "82404": "家具设计与工程", + "82500": "环境科学与工程类", + "82501": "环境科学与工程", + "82502": "环境工程", + "82503": "环境科学", + "82504": "环境生态工程", + "82505": "环保设备工程", + "82506": "资源环境科学", + "82507": "水质科学与技术", + "82600": "生物医学工程类", + "82601": "生物医学工程", + "82602": "假肢矫形工程", + "82603": "临床工程技术", + "82604": "康复工程", + "82700": "食品科学与工程类", + "82701": "食品科学与工程", + "82702": "食品质量与安全", + "82703": "粮食工程", + "82704": "乳品工程", + "82705": "酿酒工程", + "82706": "葡萄与葡萄酒工程", + "82707": "食品营养与检验教育", + "82708": "烹饪与营养教育", + "82709": "食品安全与检测", + "82711": "食用菌科学与工程", + "82712": "白酒酿造工程", + "82800": "建筑类", + "82801": "建筑学", + "82802": "城乡规划", + "82803": "风景园林", + "82804": "历史建筑保护工程", + "82805": "人居环境科学与技术", + "82806": "城市设计", + "82900": "安全科学与工程类", + "82901": "安全工程", + "82902": "应急技术与管理", + "82903": "职业卫生工程", + "83000": "生物工程类", + "83001": "生物工程", + "83002": "生物制药", + "83003": "合成生物学", + "83100": "公安技术类", + "83101": "刑事科学技术", + "83102": "消防工程", + "83103": "交通管理工程", + "83104": "安全防范工程", + "83105": "公安视听技术", + "83106": "抢险救援指挥与技术", + "83107": "火灾勘查", + "83108": "网络安全与执法", + "83109": "核生化消防", + "83110": "海警舰艇指挥与技术", + "83111": "数据警务技术", + "83200": "食品科学与工程", + "83201": "食品科学", + "83202": "粮食、油脂及植物蛋白工程", + "83203": "农产品加工及贮藏工程", + "83204": "水产品加工及贮藏工程", + "83300": "城乡规划学", + "83400": "风景园林学", + "83500": "软件工程", + "83600": "生物工程", + "83700": "安全科学与工程", + "83800": "公安技术", + "83900": "网络空间安全", + "85100": "建筑学", + "85200": "工程", + "85201": "机械工程", + "85202": "光学工程", + "85203": "仪器仪表工程", + "85204": "材料工程", + "85205": "冶金工程", + "85206": "动力工程", + "85207": "电气工程", + "85208": "电子与通信工程", + "85209": "集成电路工程", + "85210": "控制工程", + "85211": "计算机技术", + "85212": "软件工程", + "85213": "建筑与土木工程", + "85214": "水利工程", + "85215": "测绘工程", + "85216": "化学工程", + "85217": "地质工程", + "85218": "矿业工程", + "85219": "石油与天然气工程", + "85220": "纺织工程", + "85221": "轻工技术与工程", + "85222": "交通运输工程", + "85223": "船舶与海洋工程", + "85224": "安全工程", + "85225": "兵器工程", + "85226": "核能与核技术工程", + "85227": "农业工程", + "85228": "林业工程", + "85229": "环境工程", + "85230": "生物医学工程", + "85231": "食品工程", + "85232": "航空工程", + "85233": "航天工程", + "85234": "车辆工程", + "85235": "制药工程", + "85236": "工业工程", + "85237": "工业设计工程", + "85238": "生物工程", + "85239": "项目管理", + "85240": "物流工程", + "85271": "电子与信息", + "85272": "先进制造", + "85273": "生物与医药", + "85274": "能源与环保", + "85300": "城市规划", + "85400": "电子信息", + "85401": "新一代电子信息技术(含量子技术等)", + "85402": "通信工程(含宽带网络、移动通信等)", + "85403": "集成电路工程", + "85404": "计算机技术", + "85405": "软件工程", + "85406": "控制工程", + "85407": "仪器仪表工程", + "85408": "光电信息工程", + "85409": "生物医学工程", + "85410": "人工智能", + "85411": "大数据技术与工程", + "85412": "网络与信息安全", + "85500": "机械", + "85501": "机械工程", + "85502": "车辆工程", + "85503": "航空工程", + "85504": "航天工程", + "85505": "船舶工程", + "85506": "兵器工程", + "85507": "工业设计工程", + "85508": "农机装备工程", + "85509": "智能制造技术", + "85510": "机器人工程", + "85600": "材料与化工", + "85601": "材料工程", + "85602": "化学工程", + "85603": "冶金工程", + "85604": "纺织工程", + "85605": "林业工程", + "85606": "轻化工程(含皮革、纸张、织物加工等)", + "85700": "资源与环境", + "85701": "环境工程", + "85702": "安全工程", + "85703": "地质工程", + "85704": "测绘工程", + "85705": "矿业工程", + "85706": "石油与天然气工程", + "85800": "能源动力", + "85801": "电气工程", + "85802": "动力工程", + "85803": "核能工程", + "85804": "航空发动机工程", + "85805": "燃气轮机工程", + "85806": "航天动力工程", + "85807": "清洁能源技术", + "85808": "储能技术", + "85900": "土木水利", + "85901": "土木工程", + "85902": "水利工程", + "85903": "海洋工程", + "85904": "农田水土工程", + "85905": "市政工程(含给排水等)", + "85906": "人工环境工程(含供热、通风及空调等)", + "86000": "生物与医药", + "86001": "生物技术与工程", + "86002": "制药工程", + "86003": "食品工程", + "86004": "发酵工程", + "86100": "交通运输", + "86101": "轨道交通运输", + "86102": "道路交通运输", + "86103": "水路交通运输", + "86104": "航空交通运输", + "86105": "管道交通运输", + "87000": "科学技术史", + "87100": "管理科学与工程", + "87200": "设计学", + "90100": "植物生产类", + "90101": "农学", + "90102": "园艺", + "90103": "植物保护", + "90104": "植物科学与技术", + "90105": "种子科学与工程", + "90106": "设施农业科学与工程", + "90107": "茶学", + "90108": "烟草", + "90109": "应用生物科学", + "90110": "农艺教育", + "90111": "园艺教育", + "90112": "智慧农业", + "90113": "菌物科学与工程", + "90114": "农药化肥", + "90200": "自然保护与环境生态类", + "90201": "农业资源与环境", + "90202": "野生动物与自然保护区管理", + "90203": "水土保持与荒漠化防治", + "90300": "动物生产类", + "90301": "动物科学", + "90302": "蚕学", + "90303": "蜂学", + "90304": "经济动物学", + "90305": "马业科学", + "90400": "动物医学类", + "90401": "动物医学", + "90402": "动物药学", + "90403": "动植物检疫", + "90404": "实验动物学", + "90405": "中兽医学", + "90500": "林学类", + "90501": "林学", + "90502": "园林", + "90503": "森林保护", + "90504": "经济林", + "90600": "水产类", + "90601": "水产养殖学", + "90602": "海洋渔业科学与技术", + "90603": "水族科学与技术", + "90604": "水生动物医学", + "90700": "草学类", + "90701": "草业科学", + "90702": "草坪科学与工程", + "90703": "森林保护学", + "90704": "森林经理学", + "90705": "野生动植物保护与利用", + "90706": "园林植物与观赏园艺", + "90707": "水土保持与荒漠化防治", + "90800": "水产", + "90801": "水产养殖", + "90802": "捕捞学", + "90803": "渔业资源", + "90900": "草学", + "95100": "农业", + "95101": "作物", + "95102": "园艺", + "95103": "农业资源利用", + "95104": "植物保护", + "95105": "养殖", + "95106": "草业", + "95107": "林业", + "95108": "渔业", + "95109": "农业机械化", + "95110": "农村与区域发展", + "95111": "农业科技组织与服务", + "95112": "农业信息化", + "95113": "食品加工与安全", + "95114": "设施农业", + "95115": "种业", + "95131": "农艺与种业", + "95132": "资源利用与植物保护", + "95133": "畜牧", + "95134": "渔业发展", + "95135": "食品加工与安全", + "95136": "农业工程与信息技术", + "95137": "农业管理", + "95138": "农村发展", + "95200": "兽医", + "95300": "风景园林", + "95400": "林业", + "97000": "科学技术史", + "97100": "环境科学与工程", + "97101": "环境科学", + "97102": "环境工程", + "97200": "食品科学与工程", + "97201": "食品科学", + "97202": "粮食、油脂及植物蛋白工程", + "97203": "农产品加工及贮藏工程", + "97204": "水产品加工及贮藏工程", + "97300": "风景园林学", + "100100": "基础医学类", + "100101": "基础医学", + "100102": "生物医学", + "100103": "生物医学科学", + "100104": "病理学与病理生理学", + "100105": "法医学", + "100106": "放射医学", + "100200": "临床医学类", + "100201": "临床医学", + "100202": "麻醉学", + "100203": "医学影像学", + "100204": "眼视光医学", + "100205": "精神医学", + "100206": "放射医学", + "100207": "儿科学", + "100208": "临床检验诊断学", + "100209": "护理学", + "100210": "外科学", + "100211": "妇产科学", + "100212": "眼科学", + "100213": "耳鼻咽喉科学", + "100214": "肿瘤学", + "100215": "康复医学与理疗学", + "100216": "运动医学", + "100217": "麻醉学", + "100218": "急诊医学", + "100300": "口腔医学类", + "100301": "口腔医学", + "100302": "口腔临床医学", + "100400": "公共卫生与预防医学类", + "100401": "预防医学", + "100402": "食品卫生与营养学", + "100403": "妇幼保健医学", + "100404": "卫生监督", + "100405": "全球健康学", + "100406": "军事预防医学", + "100500": "中医学类", + "100501": "中医学", + "100502": "针灸推拿学", + "100503": "藏医学", + "100504": "蒙医学", + "100505": "维医学", + "100506": "壮医学", + "100507": "哈医学", + "100508": "傣医学", + "100509": "回医学", + "100510": "中医康复学", + "100511": "中医养生学", + "100512": "中医儿科学", + "100513": "中医骨伤科学", + "100600": "中西医结合类", + "100601": "中西医临床医学", + "100602": "中西医结合临床", + "100700": "药学类", + "100701": "药学", + "100702": "药物制剂", + "100703": "临床药学", + "100704": "药事管理", + "100705": "药物分析", + "100706": "药物化学", + "100707": "海洋药学", + "100708": "化妆品科学与技术", + "100800": "中药学类", + "100801": "中药学", + "100802": "中药资源与开发", + "100803": "藏药学", + "100804": "蒙药学", + "100805": "中药制药", + "100806": "中草药栽培与鉴定", + "100900": "法医学类", + "100901": "法医学", + "101000": "医学技术类", + "101001": "医学检验技术", + "101002": "医学实验技术", + "101003": "医学影像技术", + "101004": "眼视光学", + "101005": "康复治疗学", + "101006": "口腔医学技术", + "101007": "卫生检验与检疫", + "101008": "听力与言语康复学", + "101009": "康复物理治疗", + "101010": "康复作业治疗", + "101011": "智能医学工程", + "101100": "护理学类", + "101101": "护理学", + "101102": "助产学", + "105100": "临床医学", + "105101": "内科学", + "105102": "儿科学", + "105103": "老年医学", + "105104": "神经病学", + "105105": "精神病与精神卫生学", + "105106": "皮肤病与性病学", + "105107": ", 影像医学与核医学", + "105108": ", 临床检验诊断学", + "105109": ", 全科医学", + "105110": ", 妇产科学", + "105111": ", 外科学", + "105112": ", 耳鼻咽喉科学", + "105113": ", 肿瘤学", + "105114": ", 康复医学与理疗学", + "105115": ", 妇产科学", + "105116": ", 眼科学", + "105117": ", 耳鼻咽喉科学", + "105118": ", 中医内科学", + "105119": ", 临床病理", + "105120": "临床检验诊断学", + "105121": "肿瘤学", + "105122": "放射肿瘤学", + "105123": "放射影像学", + "105124": "超声医学", + "105125": "核医学", + "105126": "医学遗传学", + "105127": "全科医学(不授博士学位)", + "105128": "临床病理学(不授博士学位)", + "105200": "口腔医学", + "105300": "公共卫生", + "105400": "护理", + "105500": "药学", + "105600": "中药学", + "105700": "中医", + "105701": "中医内科学", + "105702": "中医外科学", + "105703": "中医骨伤科学", + "105704": "中医妇科学", + "105705": "中医儿科学", + "105706": "中医五官科学", + "105707": "针灸推拿学", + "105708": "民族医学(含:藏医学、蒙医学等)", + "105709": "中西医结合临床", + "105710": "全科医学(中医,不授博士学位)", + "107100": "科学技术史", + "107200": "生物医学工程", + "107400": "社会医学与卫生事业管理", + "107401": "社会医学与卫生事业管理", + "110500": "军队指挥学", + "115100": "军事", + "115101": "军事指挥", + "115102": "军队政治工作", + "115103": "军事后勤", + "115104": "军事装备", + "120100": "管理科学与工程类", + "120101": "管理科学", + "120102": "信息管理与信息系统", + "120103": "工程管理", + "120104": "房地产开发与管理", + "120105": "工程造价", + "120106": "保密管理", + "120107": "邮政管理", + "120108": "大数据管理与应用", + "120109": "工程审计", + "120110": "计算金融", + "120200": "工商管理类", + "120201": "工商管理", + "120202": "市场营销", + "120203": "会计学", + "120204": "财务管理", + "120205": "国际商务", + "120206": "人力资源管理", + "120207": "审计学", + "120208": "资产评估", + "120209": "物业管理", + "120210": "文化产业管理", + "120211": "劳动关系", + "120212": "体育经济与管理", + "120213": "财务会计教育", + "120214": "市场营销教育", + "120215": "零售业管理", + "120300": "农业经济管理类", + "120301": "农林经济管理", + "120302": "农村区域发展", + "120400": "公共管理类", + "120401": "公共事业管理", + "120402": "行政管理", + "120403": "劳动与社会保障", + "120404": "土地资源管理", + "120405": "城市管理", + "120406": "海关管理", + "120407": "交通管理", + "120408": "海事管理", + "120409": "公共关系学", + "120410": "健康服务与管理", + "120411": "海警后勤管理", + "120412": "医疗产品管理", + "120413": "医疗保险", + "120414": "养老服务管理", + "120500": "图书情报与档案管理类", + "120501": "图书馆学", + "120502": "档案学", + "120503": "信息资源管理", + "120600": "物流管理与工程类", + "120601": "物流管理", + "120602": "物流工程", + "120603": "采购管理", + "120604": "供应链管理", + "120700": "工业工程类", + "120701": "工业工程", + "120702": "标准化工程", + "120703": "质量管理工程", + "120800": "电子商务类", + "120801": "电子商务", + "120802": "电子商务及法律", + "120803": "跨境电子商务", + "120900": "旅游管理类", + "120901": "旅游管理", + "120902": "酒店管理", + "120903": "会展经济与管理", + "120904": "旅游管理与服务教育", + "125100": "工商管理", + "125200": "公共管理", + "125300": "会计", + "125400": "旅游管理", + "125500": "图书情报", + "125600": "工程管理", + "125601": "工程管理", + "125602": "项目管理", + "125603": "工业工程与管理", + "125604": "物流工程与管理", + "130100": "艺术学理论类", + "130101": "艺术史论", + "130102": "艺术管理", + "130200": "音乐与舞蹈学类", + "130201": "音乐表演", + "130202": "音乐学", + "130203": "作曲与作曲技术理论", + "130204": "舞蹈表演", + "130205": "舞蹈学", + "130206": "舞蹈编导", + "130207": "舞蹈教育", + "130208": "航空服务艺术与管理", + "130209": "流行音乐", + "130210": "音乐治疗", + "130211": "流行舞蹈", + "130300": "戏剧与影视学类", + "130301": "表演", + "130302": "戏剧学", + "130303": "电影学", + "130304": "戏剧影视文学", + "130305": "广播电视编导", + "130306": "戏剧影视导演", + "130307": "戏剧影视美术设计", + "130308": "录音艺术", + "130309": "播音与主持艺术", + "130310": "动画", + "130311": "影视摄影与制作", + "130312": "影视技术", + "130313": "戏剧教育", + "130400": "美术学类", + "130401": "美术学", + "130402": "绘画", + "130403": "雕塑", + "130404": "摄影", + "130405": "书法学", + "130406": "中国画", + "130407": "实验艺术", + "130408": "跨媒体艺术", + "130409": "文物保护与修复", + "130410": "漫画", + "130500": "设计学类", + "130501": "艺术设计学", + "130502": "视觉传达设计", + "130503": "环境设计", + "130504": "产品设计", + "130505": "服装与服饰设计", + "130506": "公共艺术", + "130507": "工艺美术", + "130508": "数字媒体艺术", + "130509": "艺术与科技", + "130510": "陶瓷艺术设计", + "130511": "新媒体艺术", + "130512": "包装设计", + "135100": "艺术", + "135101": "音乐", + "135102": "戏剧", + "135103": "戏曲", + "135104": "电影", + "135105": "广播电视", + "135106": "舞蹈", + "135107": "美术", + "135108": "艺术设计", + "140100": "集成电路科学与工程", + "140200": "国家安全学", + "210100": "农业类", + "210101": "现代种业技术", + "210102": "作物生产与品质改良", + "210103": "智慧农业技术", + "210104": "设施园艺", + "210105": "现代农业经营与管理", + "210200": "林业类", + "210201": "智慧林业技术", + "210202": "园林工程", + "210203": "木业产品智能制造", + "210300": "畜牧业类", + "210301": "动物医学", + "210302": "动物药学", + "210303": "宠物医疗", + "210304": "现代畜牧", + "210400": "渔业类", + "210401": "现代水产养殖技术", + "220100": "资源勘查类", + "220101": "资源勘查工程技术", + "220200": "地质类", + "220201": "环境地质工程", + "220300": "测绘地理信息类", + "220301": "导航工程技术", + "220302": "测绘工程技术", + "220303": "地理信息技术", + "220400": "石油与天然气类", + "220401": "油气储运工程", + "220402": "石油工程技术", + "220500": "煤炭类", + "220501": "智能采矿技术", + "220502": "煤炭清洁利用工程", + "220700": "气象类", + "220701": "智慧气象技术", + "220800": "环境保护类", + "220801": "生态环境工程技术", + "220900": "安全类", + "220901": "安全工程技术", + "220902": "应急管理", + "230100": "电力技术类", + "230101": "电力工程及自动化", + "230102": "智能电网工程技术", + "230200": "热能与发电工程类", + "230201": "热能动力工程", + "230300": "新能源发电工程类", + "230301": "新能源发电工程技术", + "230400": "黑色金属材料类", + "230401": "钢铁智能冶金技术", + "230500": "有色金属材料类", + "230501": "材料化冶金应用技术", + "230502": "金属智能成型技术", + "230503": "储能材料工程技术", + "230600": "非金属材料类", + "230601": "高分子材料工程技术", + "230602": "新材料与应用技术", + "230700": "建筑材料类", + "230701": "建筑材料智能制造", + "240100": "建筑设计类", + "240101": "建筑设计", + "240102": "建筑装饰工程", + "240103": "古建筑工程", + "240104": "园林景观工程", + "240105": "城市设计数字技术", + "240200": "城乡规划与管理类", + "240201": "城乡规划", + "240300": "土建施工类", + "240301": "建筑工程", + "240302": "智能建造工程", + "240303": "城市地下工程", + "240304": "建筑智能检测与修复", + "240400": "建筑设备类", + "240401": "建筑环境与能源工程", + "240402": "建筑电气与智能化工程", + "240500": "建设工程管理类", + "240501": "工程造价", + "240502": "建设工程管理", + "240600": "市政工程类", + "240601": "市政工程", + "240602": "城市设施智慧管理", + "240700": "房地产类", + "240701": "房地产投资与策划", + "240702": "现代物业管理", + "250100": "水文水资源类", + "250101": "水文与水资源工程技术", + "250200": "水利工程与管理类", + "250201": "智慧水利工程", + "250202": "农业水利工程", + "250203": "水利水电工程", + "250204": "治河与港航工程", + "250300": "水利水电设备类", + "250301": "水利水电设备及自动化", + "250400": "水土保持与水环境类", + "250401": "生态水利工程", + "250402": "水环境工程", + "260100": "机械设计制造类", + "260101": "机械设计制造及自动化", + "260102": "智能制造工程技术", + "260103": "数控技术", + "260104": "工业设计", + "260105": "工业工程技术", + "260106": "材料成型及控制工程", + "260200": "机电设备类", + "260201": "装备智能化技术", + "260202": "制冷与空调工程", + "260203": "电梯工程技术", + "260300": "自动化类", + "260301": "机械电子工程技术", + "260302": "电气工程及自动化", + "260303": "智能控制技术", + "260304": "机器人技术", + "260305": "自动化技术与应用", + "260306": "现代测控工程技术", + "260307": "工业互联网工程", + "260400": "轨道装备类", + "260401": "轨道交通车辆工程技术", + "260402": "轨道交通智能控制装备技术", + "260500": "船舶与海洋工程装备类", + "260501": "船舶智能制造技术", + "260502": "船舶动力工程技术", + "260503": "船舶电气工程技术", + "260600": "航空装备类", + "260601": "航空智能制造技术", + "260602": "飞行器维修工程技术", + "260603": "航空动力装置维修技术", + "260604": "无人机系统应用技术", + "260700": "汽车制造类", + "260701": "汽车工程技术", + "260702": "新能源汽车工程技术", + "260703": "智能网联汽车工程技术", + "270100": "生物技术类", + "270101": "生物检验检测技术", + "270102": "合成生物技术", + "270103": "农业生物技术", + "270200": "化工技术类", + "270201": "应用化工技术", + "270202": "化工智能制造工程技术", + "270203": "现代精细化工技术", + "270204": "现代分析测试技术", + "280100": "轻化工类", + "280101": "化妆品工程技术", + "280102": "现代造纸工程技术", + "280200": "包装类", + "280201": "包装工程技术", + "280300": "印刷类", + "280301": "数字印刷工程", + "280400": "纺织服装类", + "280401": "现代纺织工程技术", + "280402": "服装工程技术", + "290100": "食品类", + "290101": "食品工程技术", + "290102": "食品质量与安全", + "290103": "食品营养与健康", + "290200": "药品与医疗器械类", + "290201": "制药工程技术", + "290202": "药品质量管理", + "290203": "医疗器械工程技术", + "290204": "药事服务与管理", + "290300": "粮食类", + "290301": "现代粮食工程技术", + "300100": "铁道运输类", + "300101": "高速铁路工程", + "300102": "高速铁路动车组技术", + "300103": "高速铁路信号控制技术", + "300104": "铁道机车智能运用技术", + "300105": "高速铁路运营管理", + "300200": "道路运输类", + "300201": "道路与桥梁工程", + "300202": "智能交通管理", + "300203": "汽车服务工程技术", + "300300": "水上运输类", + "300301": "航海技术", + "300302": "港口智能工程技术", + "300303": "轮机工程技术", + "300304": "国际邮轮运营管理", + "300305": "水路运输与海事管理", + "300400": "航空运输类", + "300401": "民航运输服务与管理", + "300402": "航空机电设备维修技术", + "300403": "智慧机场运行与管理", + "300404": "通用航空航务技术", + "300600": "城市轨道交通类", + "300601": "城市轨道交通信号与控制技术", + "300602": "城市轨道交通设备与控制技术", + "300603": "城市轨道交通智能运营", + "300700": "邮政类", + "300701": "邮政快递管理", + "310100": "电子信息类", + "310101": "电子信息工程技术", + "310102": "物联网工程技术", + "310103": "柔性电子技术", + "310104": "光电信息工程技术", + "310200": "计算机类", + "310201": "计算机应用工程", + "310202": "网络工程技术", + "310203": "软件工程技术", + "310204": "数字媒体技术", + "310205": "大数据工程技术", + "310206": "云计算技术", + "310207": "信息安全与管理", + "310208": "虚拟现实技术", + "310209": "人工智能工程技术", + "310210": "嵌入式技术", + "310211": "工业互联网技术", + "310212": "区块链技术", + "310300": "通信类", + "310301": "现代通信工程", + "310400": "集成电路类", + "310401": "集成电路工程技术", + "320200": "护理类", + "320201": "护理", + "320300": "药学类", + "320301": "药学", + "320400": "中医药类", + "320401": "中药制药", + "320500": "医学技术类", + "320501": "医学检验技术", + "320502": "医学影像技术", + "320503": "医学生物技术", + "320504": "口腔医学技术", + "320505": "放射治疗技术", + "320506": "呼吸治疗技术", + "320600": "康复治疗类", + "320601": "康复治疗", + "320602": "康复辅助器具技术", + "320603": "言语听觉治疗技术", + "320604": "儿童康复治疗", + "320700": "公共卫生与卫生管理类", + "320701": "公共卫生管理", + "320702": "职业卫生工程技术", + "320703": "职业病危害检测评价技术", + "320800": "健康管理与促进类", + "320801": "健康管理", + "320802": "婴幼儿发展与健康管理", + "320803": "医养照护与管理", + "320900": "眼视光类", + "320901": "眼视光技术", + "330100": "财政税务类", + "330101": "财税大数据应用", + "330200": "金融类", + "330201": "金融管理", + "330202": "金融科技应用", + "330203": "保险", + "330204": "信用管理", + "330300": "财务会计类", + "330301": "大数据与财务管理", + "330302": "大数据与会计", + "330303": "大数据与审计", + "330500": "经济贸易类", + "330501": "国际经济与贸易", + "330600": "工商管理类", + "330601": "企业数字化管理", + "330602": "市场营销", + "330700": "电子商务类", + "330701": "电子商务", + "330702": "跨境电子商务", + "330703": "全媒体电商运营", + "330800": "物流类", + "330801": "物流工程技术", + "330802": "现代物流管理", + "340100": "旅游类", + "340101": "旅游管理", + "340102": "酒店管理", + "340103": "旅游规划与设计", + "340200": "餐饮类", + "340201": "烹饪与餐饮管理", + "350100": "艺术设计类", + "350101": "工艺美术", + "350102": "视觉传达设计", + "350103": "数字媒体艺术", + "350104": "产品设计", + "350105": "服装与服饰设计", + "350106": "环境艺术设计", + "350107": "美术", + "350108": "公共艺术设计", + "350109": "游戏创意设计", + "350110": "展示艺术设计", + "350111": "数字影像设计", + "350112": "时尚品设计", + "350200": "表演艺术类", + "350201": "音乐表演", + "350202": "舞蹈表演与编导", + "350203": "戏曲表演", + "350204": "舞台艺术设计", + "350400": "文化服务类", + "350401": "文物修复与保护", + "360100": "新闻出版类", + "360101": "网络与新媒体", + "360200": "广播影视类", + "360201": "播音与主持", + "360202": "影视摄影与制作", + "360203": "数字广播电视技术", + "360204": "影视编导", + "360205": "全媒体新闻采编与制作", + "360206": "数字动画", + "370100": "教育类", + "370101": "学前教育", + "370200": "语言类", + "370201": "应用英语", + "370202": "应用日语", + "370203": "应用韩语", + "370204": "应用俄语", + "370205": "应用泰语", + "370206": "应用外语", + "370207": "应用西班牙语", + "370208": "中文国际教育", + "370300": "体育类", + "370301": "社会体育指导与管理", + "370302": "休闲体育", + "370303": "体能训练", + "370304": "电子竞技技术与管理", + "380200": "公安技术类", + "380201": "刑事科学技术", + "380202": "网络安全与执法", + "380300": "侦查类", + "380301": "刑事侦查", + "380400": "法律实务类", + "380401": "法律", + "380500": "法律执行类", + "380501": "刑事矫正与管理", + "380502": "司法警务管理", + "380503": "综合行政执法", + "380600": "司法技术类", + "380601": "智慧司法技术与应用", + "380700": "安全防范类", + "380701": "数字安防技术", + "380702": "国际安保服务与管理", + "390100": "公共事业类", + "390101": "社会工作", + "390102": "党务工作", + "390103": "智慧社区管理", + "390200": "公共管理类", + "390201": "民政管理", + "390202": "人力资源管理", + "390203": "行政管理", + "390204": "外事实务", + "390300": "公共服务类", + "390301": "现代家政管理", + "390302": "智慧健康养老管理", + "410100": "农业类", + "410101": "种子生产与经营", + "410102": "作物生产与经营管理", + "410103": "现代农业技术", + "410104": "生态农业技术", + "410105": "园艺技术", + "410106": "植物保护与检疫技术", + "410107": "茶叶生产与加工技术", + "410108": "中草药栽培与加工技术", + "410109": "烟草栽培与加工技术", + "410110": "饲草生产技术", + "410111": "食用菌生产与加工技术", + "410112": "设施农业与装备", + "410113": "现代农业装备应用技术", + "410114": "农产品加工与质量检测", + "410115": "绿色食品生产技术", + "410116": "农产品流通与管理", + "410117": "棉花加工与经营管理", + "410118": "休闲农业经营与管理", + "410119": "现代农业经济管理", + "410120": "农村新型经济组织管理", + "410200": "林业类", + "410201": "林业技术", + "410202": "园林技术", + "410203": "草业技术", + "410204": "花卉生产与花艺", + "410205": "经济林培育与利用", + "410206": "森林和草原资源保护", + "410207": "林草生态保护与修复", + "410208": "野生动植物资源保护与利用", + "410209": "自然保护地建设与管理", + "410210": "森林生态旅游与康养", + "410211": "林业信息技术应用", + "410212": "木业智能装备应用技术", + "410213": "木业产品设计与制造", + "410300": "畜牧业类", + "410301": "动物医学", + "410302": "动物药学", + "410303": "畜牧兽医", + "410304": "中兽医", + "410305": "宠物医疗技术", + "410306": "动物防疫与检疫", + "410307": "畜禽智能化养殖", + "410308": "特种动物养殖技术", + "410309": "宠物养护与驯导", + "410310": "动物营养与饲料", + "410311": "蚕桑技术", + "410400": "渔业类", + "410401": "水产养殖技术", + "410402": "海洋渔业技术", + "410403": "水族科学与技术", + "410404": "水生动物医学", + "420100": "资源勘查类", + "420101": "国土资源调查与管理", + "420102": "地质调查与矿产普查", + "420103": "生态地质调查", + "420104": "矿产地质勘查", + "420105": "煤田地质勘查", + "420106": "岩矿分析与鉴定", + "420107": "宝玉石鉴定与加工", + "420200": "地质类", + "420201": "工程地质勘查", + "420202": "水文与工程地质", + "420203": "矿山地质", + "420204": "钻探工程技术", + "420205": "岩土工程技术", + "420206": "地球物理勘探技术", + "420207": "地质灾害调查与防治", + "420208": "环境地质工程", + "420209": "城市地质勘查", + "420300": "测绘地理信息类", + "420301": "工程测量技术", + "420302": "测绘工程技术", + "420303": "测绘地理信息技术", + "420304": "摄影测量与遥感技术", + "420305": "地籍测绘与土地管理", + "420306": "国土空间规划与测绘", + "420307": "无人机测绘技术", + "420308": "矿山测量", + "420309": "导航与位置服务", + "420310": "空间数字建模与应用技术", + "420400": "石油与天然气类", + "420401": "油气储运技术", + "420402": "油气地质勘探技术", + "420403": "钻井技术", + "420404": "油气智能开采技术", + "420405": "油田化学应用技术", + "420406": "石油工程技术", + "420500": "煤炭类", + "420501": "煤矿智能开采技术", + "420502": "矿井建设工程技术", + "420503": "通风技术与安全管理", + "420504": "矿山机电与智能装备", + "420505": "煤炭清洁利用技术", + "420506": "煤层气采输技术", + "420600": "金属与非金属矿类", + "420601": "矿山智能开采技术", + "420602": "矿物加工技术", + "420700": "气象类", + "420701": "大气科学技术", + "420702": "大气探测技术", + "420703": "应用气象技术", + "420704": "雷电防护技术", + "420800": "环境保护类", + "420801": "环境监测技术", + "420802": "环境工程技术", + "420803": "生态保护技术", + "420804": "生态环境大数据技术", + "420805": "环境管理与评价", + "420806": "生态环境修复技术", + "420807": "绿色低碳技术", + "420808": "资源综合利用技术", + "420809": "水净化与安全技术", + "420810": "核与辐射检测防护技术", + "420811": "智能环保装备技术", + "420900": "安全类", + "420901": "安全技术与管理", + "420902": "化工安全技术", + "420903": "工程安全评价与监理", + "420904": "安全智能监测技术", + "420905": "应急救援技术", + "420906": "消防救援技术", + "420907": "森林草原防火技术", + "420908": "职业健康安全技术", + "430100": "电力技术类", + "430101": "发电厂及电力系统", + "430102": "水电站机电设备与自动化", + "430103": "水电站与电力网技术", + "430104": "分布式发电与智能微电网技术", + "430105": "电力系统自动化技术", + "430106": "电力系统继电保护技术", + "430107": "输配电工程技术", + "430108": "供用电技术", + "430109": "农业电气化技术", + "430110": "机场电工技术", + "430111": "电力客户服务与管理", + "430200": "热能与发电工程类", + "430201": "热能动力工程技术", + "430202": "城市热能应用技术", + "430203": "地热开发技术", + "430204": "太阳能光热技术与应用", + "430205": "发电运行技术", + "430206": "热工自动化技术", + "430207": "核电站动力设备运行与维护", + "430208": "电厂化学与环保技术", + "430300": "新能源发电工程类", + "430301": "光伏工程技术", + "430302": "风力发电工程技术", + "430303": "生物质能应用技术", + "430304": "氢能技术应用", + "430305": "工业节能技术", + "430306": "节电技术与管理", + "430307": "新能源材料应用技术", + "430400": "黑色金属材料类", + "430401": "钢铁智能冶金技术", + "430402": "智能轧钢技术", + "430403": "钢铁冶金设备维护", + "430404": "金属材料检测技术", + "430500": "有色金属材料类", + "430501": "有色金属智能冶金技术", + "430502": "金属智能加工技术", + "430503": "金属精密成型技术", + "430504": "储能材料技术", + "430505": "稀土材料技术", + "430600": "非金属材料类", + "430601": "材料工程技术", + "430602": "高分子材料智能制造技术", + "430603": "复合材料智能制造技术", + "430604": "航空复合材料成型与加工技术", + "430605": "非金属矿物材料技术", + "430606": "光伏材料制备技术", + "430607": "硅材料制备技术", + "430608": "炭材料工程技术", + "430609": "橡胶智能制造技术", + "430700": "建筑材料类", + "430701": "建筑材料工程技术", + "430702": "新型建筑材料技术", + "430703": "建筑装饰材料技术", + "430704": "建筑材料检测技术", + "430705": "装配式建筑构件智能制造技术", + "440100": "建筑设计类", + "440101": "建筑设计", + "440102": "建筑装饰工程技术", + "440103": "古建筑工程技术", + "440104": "园林工程技术", + "440105": "风景园林设计", + "440106": "建筑室内设计", + "440107": "建筑动画技术", + "440200": "城乡规划与管理类", + "440201": "城乡规划", + "440202": "智慧城市管理技术", + "440203": "村镇建设与管理", + "440300": "土建施工类", + "440301": "建筑工程技术", + "440302": "装配式建筑工程技术", + "440303": "建筑钢结构工程技术", + "440304": "智能建造技术", + "440305": "地下与隧道工程技术", + "440306": "土木工程检测技术", + "440400": "建筑设备类", + "440401": "建筑设备工程技术", + "440402": "建筑电气工程技术", + "440403": "供热通风与空调工程技术", + "440404": "建筑智能化工程技术", + "440405": "工业设备安装工程技术", + "440406": "建筑消防技术", + "440500": "建设工程管理类", + "440501": "工程造价", + "440502": "建设工程管理", + "440503": "建筑经济信息化管理", + "440504": "建设工程监理", + "440600": "市政工程类", + "440601": "市政工程技术", + "440602": "给排水工程技术", + "440603": "城市燃气工程技术", + "440604": "市政管网智能检测与维护", + "440605": "城市环境工程技术", + "440700": "房地产类", + "440701": "房地产经营与管理", + "440702": "房地产智能检测与估价", + "440703": "现代物业管理", + "450100": "水文水资源类", + "450101": "水文与水资源技术", + "450102": "水政水资源管理", + "450200": "水利工程与管理类", + "450201": "水利工程", + "450202": "智慧水利技术", + "450203": "水利水电工程技术", + "450204": "水利水电工程智能管理", + "450205": "水利水电建筑工程", + "450206": "机电排灌工程技术", + "450207": "治河与航道工程技术", + "450208": "智能水务管理", + "450300": "水利水电设备类", + "450301": "水电站设备安装与管理", + "450302": "水电站运行与智能管理", + "450303": "水利机电设备智能管理", + "450400": "水土保持与水环境类", + "450401": "水土保持技术", + "450402": "水环境智能监测与治理", + "450403": "水生态修复技术", + "460100": "机械设计制造类", + "460101": "机械设计与制造", + "460102": "数字化设计与制造技术", + "460103": "数控技术", + "460104": "机械制造及自动化", + "460105": "工业设计", + "460106": "工业工程技术", + "460107": "材料成型及控制技术", + "460108": "现代铸造技术", + "460109": "现代锻压技术", + "460110": "智能焊接技术", + "460111": "工业材料表面处理技术", + "460112": "增材制造技术", + "460113": "模具设计与制造", + "460114": "特种加工技术", + "460115": "智能光电制造技术", + "460116": "电线电缆制造技术", + "460117": "内燃机制造与应用技术", + "460118": "机械装备制造技术", + "460119": "工业产品质量检测技术", + "460120": "理化测试与质检技术", + "460200": "机电设备类", + "460201": "智能制造装备技术", + "460202": "机电设备技术", + "460203": "电机与电器技术", + "460204": "新能源装备技术", + "460205": "制冷与空调技术", + "460206": "电梯工程技术", + "460300": "自动化类", + "460301": "机电一体化技术", + "460302": "智能机电技术", + "460303": "智能控制技术", + "460304": "智能机器人技术", + "460305": "工业机器人技术", + "460306": "电气自动化技术", + "460307": "工业过程自动化技术", + "460308": "工业自动化仪表技术", + "460309": "液压与气动技术", + "460310": "工业互联网应用", + "460311": "计量测试与应用技术", + "460400": "轨道装备类", + "460401": "铁道机车车辆制造与维护", + "460402": "高速铁路动车组制造与维护", + "460403": "城市轨道交通车辆制造与维护", + "460404": "轨道交通通信信号设备制造与维护", + "460405": "轨道交通工程机械制造与维护", + "460500": "船舶与海洋工程装备类", + "460501": "船舶工程技术", + "460502": "船舶动力工程技术", + "460503": "船舶电气工程技术", + "460504": "船舶智能焊接技术", + "460505": "船舶舾装工程技术", + "460506": "船舶涂装工程技术", + "460507": "船舶通信装备技术", + "460508": "游艇设计与制造", + "460509": "邮轮内装技术", + "460510": "海洋工程装备技术", + "460600": "航空装备类", + "460601": "飞行器数字化制造技术", + "460602": "飞行器数字化装配技术", + "460603": "航空发动机制造技术", + "460604": "航空发动机装配调试技术", + "460605": "飞机机载设备装配调试技术", + "460606": "航空装备表面处理技术", + "460607": "飞行器维修技术", + "460608": "航空发动机维修技术", + "460609": "无人机应用技术", + "460610": "航空材料精密成型技术", + "460611": "导弹维修技术", + "460700": "汽车制造类", + "460701": "汽车制造与试验技术", + "460702": "新能源汽车技术", + "460703": "汽车电子技术", + "460704": "智能网联汽车技术", + "460705": "汽车造型与改装技术", + "470100": "生物技术类", + "470101": "食品生物技术", + "470102": "药品生物技术", + "470103": "农业生物技术", + "470104": "化工生物技术", + "470105": "生物产品检验检疫", + "470106": "绿色生物制造技术", + "470107": "生物信息技术", + "470200": "化工技术类", + "470201": "应用化工技术", + "470202": "石油炼制技术", + "470203": "精细化工技术", + "470204": "石油化工技术", + "470205": "煤化工技术", + "470206": "高分子合成技术", + "470207": "海洋化工技术", + "470208": "分析检验技术", + "470209": "化工智能制造技术", + "470210": "化工装备技术", + "470211": "化工自动化技术", + "470212": "涂装防护技术", + "470213": "烟花爆竹技术与管理", + "480100": "轻化工类", + "480101": "化妆品技术", + "480102": "现代造纸技术", + "480103": "家具设计与制造", + "480104": "鞋类设计与工艺", + "480105": "陶瓷制造技术与工艺", + "480106": "珠宝首饰技术与管理", + "480107": "皮革加工技术", + "480108": "皮具制作与工艺", + "480109": "乐器制造与维护", + "480110": "香料香精技术与工艺", + "480111": "表面精饰工艺", + "480200": "包装类", + "480201": "包装工程技术", + "480202": "包装策划与设计", + "480300": "印刷类", + "480301": "数字印刷技术", + "480302": "印刷媒体技术", + "480303": "印刷数字图文技术", + "480304": "印刷设备应用技术", + "480400": "纺织服装类", + "480401": "现代纺织技术", + "480402": "服装设计与工艺", + "480403": "丝绸技术", + "480404": "针织技术与针织服装", + "480405": "数字化染整技术", + "480406": "纺织品设计", + "480407": "现代家用纺织品设计", + "480408": "纺织材料与应用", + "480409": "现代非织造技术", + "480410": "纺织机电技术", + "480411": "纺织品检验与贸易", + "480412": "皮革服装制作与工艺", + "490100": "食品类", + "490101": "食品智能加工技术", + "490102": "食品质量与安全", + "490103": "食品营养与健康", + "490104": "食品检验检测技术", + "490105": "酿酒技术", + "490106": "食品贮运与营销", + "490200": "药品与医疗器械类", + "490201": "药品生产技术", + "490202": "生物制药技术", + "490203": "药物制剂技术", + "490204": "化学制药技术", + "490205": "兽药制药技术", + "490206": "药品质量与安全", + "490207": "制药设备应用技术", + "490208": "药品经营与管理", + "490209": "食品药品监督管理", + "490210": "智能医疗装备技术", + "490211": "医用电子仪器技术", + "490212": "医用材料与应用", + "490213": "医疗器械维护与管理", + "490214": "医疗器械经营与服务", + "490215": "康复工程技术", + "490216": "保健食品质量与管理", + "490217": "化妆品经营与管理", + "490218": "化妆品质量与安全", + "490300": "粮食类", + "490301": "粮食工程技术与管理", + "490302": "粮食储运与质量安全", + "500100": "铁道运输类", + "500101": "铁道工程技术", + "500102": "高速铁路施工与维护", + "500103": "铁道桥梁隧道工程技术", + "500104": "铁道养路机械应用技术", + "500105": "铁道机车运用与维护", + "500106": "铁道车辆技术", + "500107": "铁道供电技术", + "500108": "动车组检修技术", + "500109": "高速铁路综合维修技术", + "500110": "铁道信号自动控制", + "500111": "铁道通信与信息化技术", + "500112": "铁道交通运营管理", + "500113": "高速铁路客运服务", + "500200": "道路运输类", + "500201": "道路与桥梁工程技术", + "500202": "道路机械化施工技术", + "500203": "智能工程机械运用技术", + "500204": "道路工程检测技术", + "500205": "道路工程造价", + "500206": "道路养护与管理", + "500207": "智能交通技术", + "500208": "道路运输管理", + "500209": "交通运营管理", + "500210": "汽车技术服务与营销", + "500211": "汽车检测与维修技术", + "500212": "新能源汽车检测与维修技术", + "500300": "水上运输类", + "500301": "航海技术", + "500302": "港口与航道工程技术", + "500303": "轮机工程技术", + "500304": "国际邮轮乘务管理", + "500305": "水路运输安全管理", + "500306": "港口机械与智能控制", + "500307": "港口与航运管理", + "500308": "船舶电子电气技术", + "500309": "船舶检验", + "500310": "集装箱运输管理", + "500400": "航空运输类", + "500401": "民航运输服务", + "500402": "民航通信技术", + "500403": "定翼机驾驶技术", + "500404": "直升机驾驶技术", + "500405": "空中乘务", + "500406": "民航安全技术管理", + "500407": "民航空中安全保卫", + "500408": "机场运行服务与管理", + "500409": "飞机机电设备维修", + "500410": "飞机电子设备维修", + "500411": "飞机部件修理", + "500412": "通用航空器维修", + "500413": "飞机结构修理", + "500414": "航空地面设备维修", + "500415": "机场场务技术与管理", + "500416": "通用航空航务技术", + "500417": "航空油料", + "500500": "管道运输类", + "500501": "管道工程技术", + "500502": "管道运输管理", + "500600": "城市轨道交通类", + "500601": "城市轨道交通工程技术", + "500602": "城市轨道车辆应用技术", + "500603": "城市轨道交通机电技术", + "500604": "城市轨道交通通信信号技术", + "500605": "城市轨道交通供配电技术", + "500606": "城市轨道交通运营管理", + "500700": "邮政类", + "500701": "邮政快递运营管理", + "500702": "邮政快递智能技术", + "500703": "邮政通信管理", + "502100": "语言学", + "502101": "塔玛齐格特语", + "502102": "爪哇语", + "502103": "旁遮普语", + "510100": "农业类", + "510101": "作物生产技术", + "510102": "种子生产与经营", + "510103": "设施农业与装备", + "510104": "现代农业技术", + "510105": "休闲农业", + "510106": "生态农业技术", + "510107": "园艺技术", + "510108": "植物保护与检疫技术", + "510109": "茶树栽培与茶叶加工", + "510110": "中草药栽培技术", + "510111": "烟草栽培与加工", + "510112": "棉花加工与经营管理", + "510113": "农产品加工与质量检测", + "510114": "绿色食品生产与检验", + "510115": "农资营销与服务", + "510116": "农产品流通与管理", + "510117": "农业装备应用技术", + "510118": "农业经济管理", + "510119": "农村经营管理", + "510120": "食用菌生产与加工", + "510200": "林业类", + "510201": "林业技术", + "510202": "园林技术", + "510203": "森林资源保护", + "510204": "经济林培育与利用", + "510205": "野生植物资源保护与利用", + "510206": "野生动物资源保护与利用", + "510207": "森林生态旅游", + "510208": "森林防火指挥与通讯", + "510209": "自然保护区建设与管理", + "510210": "木工设备应用技术", + "510211": "木材加工技术", + "510212": "林业调查与信息处理", + "510213": "林业信息技术与管理", + "510214": "工业软件开发技术", + "510215": "动漫制作技术", + "510216": "密码技术应用", + "510300": "畜牧业类", + "510301": "畜牧兽医", + "510302": "动物医学", + "510303": "动物药学", + "510304": "动物防疫与检疫", + "510305": "动物医学检验技术", + "510306": "宠物养护与驯导", + "510307": "实验动物技术", + "510308": "饲料与动物营养", + "510309": "特种动物养殖", + "510310": "畜牧工程技术", + "510311": "蚕桑技术", + "510312": "草业技术", + "510313": "养蜂与蜂产品加工", + "510314": "畜牧业经济管理", + "510315": "宠物临床诊疗技术", + "510400": "渔业类", + "510401": "水产养殖技术", + "510402": "海洋渔业技术", + "510403": "水族科学与技术", + "510404": "水生动物医学", + "510405": "渔业经济管理", + "520100": "资源勘查类", + "520101": "国土资源调查与管理", + "520102": "地质调查与矿产普查", + "520103": "矿产地质与勘查", + "520104": "岩矿分析与鉴定", + "520105": "宝玉石鉴定与加工", + "520106": "煤田地质与勘查技术", + "520107": "权籍信息化管理", + "520200": "地质类", + "520201": "工程地质勘查", + "520202": "水文与工程地质", + "520203": "钻探技术", + "520204": "矿山地质", + "520205": "地球物理勘探技术", + "520206": "地质灾害调查与防治", + "520207": "环境地质工程", + "520208": "岩土工程技术", + "520300": "测绘地理信息类", + "520301": "工程测量技术", + "520302": "摄影测量与遥感技术", + "520303": "测绘工程技术", + "520304": "测绘地理信息技术", + "520305": "地籍测绘与土地管理", + "520306": "矿山测量", + "520307": "测绘与地质工程技术", + "520308": "导航与位置服务", + "520309": "地图制图与数字传播技术", + "520310": "地理国情监测技术", + "520311": "国土测绘与规划", + "520400": "石油与天然气类", + "520401": "钻井技术", + "520402": "油气开采技术", + "520403": "油气储运技术", + "520404": "油气地质勘探技术", + "520405": "油田化学应用技术", + "520406": "石油工程技术", + "520407": "傣医学", + "520408": "哈医学", + "520409": "朝医学", + "520410": "中药学", + "520411": "蒙药学", + "520412": "维药学", + "520413": "藏药学", + "520414": "中药材生产与加工", + "520415": "中药制药", + "520416": "中医康复技术", + "520417": "中医养生保健", + "520418": "药膳与食疗", + "520500": "煤炭类", + "520501": "煤矿开采技术", + "520502": "矿井建设", + "520503": "矿山机电技术", + "520504": "矿井通风与安全", + "520505": "综合机械化采煤", + "520506": "选煤技术", + "520507": "煤炭深加工与利用", + "520508": "煤化分析与检验", + "520509": "煤层气采输技术", + "520510": "矿井运输与提升", + "520600": "金属与非金属矿类", + "520601": "金属与非金属矿开采技术", + "520602": "矿物加工技术", + "520603": "矿业装备维护技术", + "520700": "气象类", + "520701": "大气科学技术", + "520702": "大气探测技术", + "520703": "应用气象技术", + "520704": "防雷技术", + "520800": "环境保护类", + "520801": "环境监测与控制技术", + "520802": "农村环境保护", + "520803": "室内环境检测与控制技术", + "520804": "环境工程技术", + "520805": "环境信息技术", + "520806": "核与辐射检测防护技术", + "520807": "环境规划与管理", + "520808": "环境评价与咨询服务", + "520809": "污染修复与生态工程技术", + "520810": "清洁生产与减排技术", + "520811": "资源综合利用与管理技术", + "520812": "水净化与安全技术", + "520900": "安全类", + "520901": "安全健康与环保", + "520902": "化工安全技术", + "520903": "救援技术", + "520904": "安全技术与管理", + "520905": "工程安全评价与监理", + "520906": "安全生产监测监控", + "520907": "职业卫生技术与管理", + "530100": "电力技术类", + "530101": "发电厂及电力系统", + "530102": "供用电技术", + "530103": "电力系统自动化技术", + "530104": "高压输配电线路施工运行与维护", + "530105": "电力系统继电保护与自动化技术", + "530106": "水电站机电设备与自动化", + "530107": "电网监控技术", + "530108": "电力客户服务与管理", + "530109": "水电站与电力网", + "530110": "电源变换技术与应用", + "530111": "农业电气化技术", + "530112": "分布式发电与微电网技术", + "530113": "机场电工技术", + "530200": "热能与发电工程类", + "530201": "电厂热能动力装置", + "530202": "城市热能应用技术", + "530203": "核电站动力设备运行与维护", + "530204": "火电厂集控运行", + "530205": "电厂化学与环保技术", + "530206": "电厂热工自动化技术", + "530207": "国际金融", + "530208": "农村金融", + "530300": "新能源发电工程类", + "530301": "风力发电工程技术", + "530302": "风电系统运行与维护", + "530303": "生物质能应用技术", + "530304": "光伏发电技术与应用", + "530305": "工业节能技术", + "530306": "节电技术与管理", + "530307": "太阳能光热技术与应用", + "530308": "农村能源与环境技术", + "530309": "氢能技术应用", + "530400": "黑色金属材料类", + "530401": "黑色冶金技术", + "530402": "轧钢工程技术", + "530403": "钢铁冶金设备应用技术", + "530404": "金属材料质量检测", + "530405": "铁矿资源综合利用", + "530500": "有色金属材料类", + "530501": "有色冶金技术", + "530502": "有色冶金设备应用技术", + "530503": "金属压力加工", + "530504": "金属精密成型技术", + "530505": "储能材料技术", + "530600": "非金属材料类", + "530601": "材料工程技术", + "530602": "高分子材料工程技术", + "530603": "复合材料工程技术", + "530604": "非金属矿物材料技术", + "530605": "光伏材料制备技术", + "530606": "炭素加工技术", + "530607": "硅材料制备技术", + "530608": "橡胶工程技术", + "530700": "建筑材料类", + "530701": "建筑材料工程技术", + "530702": "建筑材料检测技术", + "530703": "建筑装饰材料技术", + "530704": "建筑材料设备应用", + "530705": "新型建筑材料技术", + "530706": "建筑材料生产与管理", + "530800": "物流类", + "530801": "物流工程技术", + "530802": "现代物流管理", + "530803": "航空物流管理", + "530804": "铁路物流管理", + "530805": "冷链物流技术与管理", + "530806": "港口物流管理", + "530807": "工程物流管理", + "530808": "采购与供应管理", + "530809": "智能物流技术", + "530810": "供应链运营", + "540100": "建筑设计类", + "540101": "建筑设计", + "540102": "建筑装饰工程技术", + "540103": "古建筑工程技术", + "540104": "建筑室内设计", + "540105": "风景园林设计", + "540106": "园林工程技术", + "540107": "建筑动画与模型制作", + "540108": "葡萄酒文化与营销", + "540109": "茶艺与茶文化", + "540110": "智慧景区开发与管理", + "540111": "智慧旅游技术应用", + "540112": "会展策划与管理", + "540113": "休闲服务与管理", + "540200": "城乡规划与管理类", + "540201": "城乡规划", + "540202": "村镇建设与管理", + "540203": "城市信息化管理", + "540204": "西式烹饪工艺", + "540205": "营养配餐", + "540300": "土建施工类", + "540301": "建筑工程技术", + "540302": "地下与隧道工程技术", + "540303": "土木工程检测技术", + "540304": "建筑钢结构工程技术", + "540400": "建筑设备类", + "540401": "建筑设备工程技术", + "540402": "供热通风与空调工程技术", + "540403": "建筑电气工程技术", + "540404": "建筑智能化工程技术", + "540405": "工业设备安装工程技术", + "540406": "消防工程技术", + "540500": "建设工程管理类", + "540501": "建设工程管理", + "540502": "工程造价", + "540503": "建筑经济管理", + "540504": "建设项目信息化管理", + "540505": "建设工程监理", + "540600": "市政工程类", + "540601": "市政工程技术", + "540602": "城市燃气工程技术", + "540603": "给排水工程技术", + "540604": "环境卫生工程技术", + "540700": "房地产类", + "540701": "房地产经营与管理", + "540702": "房地产检测与估价", + "540703": "物业管理", + "550100": "水文水资源类", + "550101": "水文与水资源工程", + "550102": "水文测报技术", + "550103": "水政水资源管理", + "550104": "产品艺术设计", + "550105": "服装与服饰设计", + "550106": "环境艺术设计", + "550107": "书画艺术", + "550108": "公共艺术设计", + "550109": "游戏艺术设计", + "550110": "展示艺术设计", + "550111": "美容美体艺术", + "550112": "工艺美术品设计", + "550113": "广告艺术设计", + "550114": "室内艺术设计", + "550115": "家具艺术设计", + "550116": "动漫设计", + "550117": "人物形象设计", + "550118": "摄影与摄像艺术", + "550119": "雕刻艺术设计", + "550120": "皮具艺术设计", + "550121": "包装艺术设计", + "550122": "陶瓷设计与工艺", + "550123": "首饰设计与工艺", + "550124": "玉器设计与工艺", + "550125": "刺绣设计与工艺", + "550126": "雕塑设计", + "550127": "服装陈列与展示设计", + "550200": "水利工程与管理类", + "550201": "水利工程", + "550202": "水利水电工程技术", + "550203": "水利水电工程管理", + "550204": "水利水电建筑工程", + "550205": "机电排灌工程技术", + "550206": "港口航道与治河工程", + "550207": "水务管理", + "550208": "音乐剧表演", + "550209": "国际标准舞", + "550210": "现代流行音乐", + "550211": "戏曲音乐", + "550212": "音乐制作", + "550213": "钢琴伴奏", + "550214": "钢琴调律", + "550215": "舞蹈编导", + "550216": "音乐传播", + "550217": "时尚表演与传播", + "550218": "舞台艺术设计与制作", + "550219": "作曲技术", + "550220": "现代魔术设计与表演", + "550300": "水利水电设备类", + "550301": "水电站动力设备", + "550302": "水电站电气设备", + "550303": "水电站运行与管理", + "550304": "水利机电设备运行与管理", + "550305": "中国少数民族语言文化", + "550400": "水土保持与水环境类", + "550401": "水土保持技术", + "550402": "水环境监测与治理", + "550403": "公共文化服务与管理", + "550404": "文物修复与保护", + "550405": "文物考古技术", + "550406": "文物展示利用技术", + "550407": "图书档案管理", + "550408": "石窟寺保护技术", + "560100": "机械设计制造类", + "560101": "机械设计与制造", + "560102": "机械制造与自动化", + "560103": "数控技术", + "560104": "精密机械技术", + "560105": "特种加工技术", + "560106": "材料成型与控制技术", + "560107": "金属材料与热处理技术", + "560108": "铸造技术", + "560109": "锻压技术", + "560110": "焊接技术与自动化", + "560111": "机械产品检测检验技术", + "560112": "理化测试与质检技术", + "560113": "模具设计与制造", + "560114": "电机与电器技术", + "560115": "电线电缆制造技术", + "560116": "内燃机制造与维修", + "560117": "机械装备制造技术", + "560118": "工业设计", + "560119": "工业工程技术", + "560200": "机电设备类", + "560201": "自动化生产设备应用", + "560202": "机电设备安装技术", + "560203": "机电设备维修与管理", + "560204": "数控设备应用与维护", + "560205": "制冷与空调技术", + "560206": "光电制造与应用技术", + "560207": "新能源装备技术", + "560208": "影视多媒体技术", + "560209": "影视照明技术与艺术", + "560210": "音像技术", + "560211": "录音技术与艺术", + "560212": "摄影摄像技术", + "560213": "融媒体技术与运营", + "560214": "网络直播与运营", + "560215": "传播与策划", + "560216": "全媒体广告策划与营销", + "560300": "自动化类", + "560301": "机电一体化技术", + "560302": "电气自动化技术", + "560303": "工业过程自动化技术", + "560304": "智能控制技术", + "560305": "工业网络技术", + "560306": "工业自动化仪表", + "560307": "液压与气动技术", + "560308": "电梯工程技术", + "560309": "工业机器人技术", + "560400": "铁道装备类", + "560401": "铁道机车车辆制造与维护", + "560402": "铁道通信信号设备制造与维护", + "560403": "铁道施工和养路机械制造与维护", + "560500": "船舶与海洋工程装备类", + "560501": "船舶工程技术", + "560502": "船舶机械工程技术", + "560503": "船舶电气工程技术", + "560504": "船舶舾装工程技术", + "560505": "船舶涂装工程技术", + "560506": "游艇设计与制造", + "560507": "海洋工程技术", + "560508": "船舶通信与导航", + "560509": "船舶动力工程技术", + "560600": "航空装备类", + "560601": "飞行器制造技术", + "560602": "飞行器维修技术", + "560603": "航空发动机制造技术", + "560604": "航空发动机装试技术", + "560605": "航空发动机维修技术", + "560606": "飞机机载设备制造技术", + "560607": "飞机机载设备维修技术", + "560608": "航空电子电气技术", + "560609": "航空材料精密成型技术", + "560610": "无人机应用技术", + "560611": "导弹维修", + "560700": "汽车制造类", + "560701": "汽车制造与装配技术", + "560702": "汽车检测与维修技术", + "560703": "汽车电子技术", + "560704": "汽车造型技术", + "560705": "汽车试验技术", + "560706": "汽车改装技术", + "560707": "新能源汽车技术", + "570100": "生物技术类", + "570101": "食品生物技术", + "570102": "化工生物技术", + "570103": "药品生物技术", + "570104": "农业生物技术", + "570105": "生物产品检验检疫", + "570106": "小学英语教育", + "570107": "小学科学教育", + "570108": "音乐教育", + "570109": "美术教育", + "570110": "体育教育", + "570111": "小学道德与法治教育", + "570112": "舞蹈教育", + "570113": "艺术教育", + "570114": "特殊教育", + "570115": "现代教育技术", + "570116": "心理健康教育", + "570200": "化工技术类", + "570201": "应用化工技术", + "570202": "石油炼制技术", + "570203": "石油化工技术", + "570204": "高分子合成技术", + "570205": "精细化工技术", + "570206": "海洋化工技术", + "570207": "工业分析技术", + "570208": "化工装备技术", + "570209": "化工自动化技术", + "570210": "涂装防护技术", + "570211": "烟花爆竹技术与管理", + "570212": "煤化工技术", + "570213": "应用德语", + "570214": "应用泰语", + "570215": "应用越南语", + "570216": "应用阿拉伯语", + "570300": "体育类", + "570301": "社会体育", + "570302": "休闲体育", + "570303": "运动训练", + "570304": "民族传统体育", + "570305": "运动防护", + "570306": "体育保健与康复", + "570307": "健身指导与管理", + "570308": "运动健康指导", + "570309": "运动数据分析", + "570310": "体能训练", + "570311": "体育运营与管理", + "570312": "电子竞技运动与管理", + "570313": "高尔夫球运动与管理", + "570314": "冰雪运动与管理", + "570315": "冰雪设施运维与管理", + "570316": "体育艺术表演", + "580100": "轻化工类", + "580101": "高分子材料加工技术", + "580102": "制浆造纸技术", + "580103": "香料香精工艺", + "580104": "表面精饰工艺", + "580105": "家具设计与制造", + "580106": "化妆品技术", + "580107": "皮革加工技术", + "580108": "皮具制作与工艺", + "580109": "鞋类设计与工艺", + "580110": "乐器制造与维护", + "580111": "陶瓷制造工艺", + "580112": "珠宝首饰技术与管理", + "580200": "包装类", + "580201": "包装工程技术", + "580202": "包装策划与设计", + "580203": "包装设备应用技术", + "580204": "食品包装技术", + "580300": "印刷类", + "580301": "数字图文信息技术", + "580302": "印刷设备应用技术", + "580303": "印刷媒体设计与制作", + "580304": "印刷媒体技术", + "580305": "数字印刷技术", + "580400": "纺织服装类", + "580401": "现代纺织技术", + "580402": "丝绸技术", + "580403": "染整技术", + "580404": "纺织机电技术", + "580405": "纺织品检验与贸易", + "580406": "纺织品设计", + "580407": "家用纺织品设计", + "580408": "纺织材料与应用", + "580409": "针织技术与针织服装", + "580410": "服装设计与工艺", + "580411": "皮革服装制作与工艺", + "580412": "服装陈列与展示设计", + "580500": "法律执行类", + "580501": "刑事执行", + "580502": "民事执行", + "580503": "行政执行", + "580504": "司法警务", + "580505": "社区矫正", + "580600": "司法技术类", + "580601": "刑事侦查技术", + "580602": "司法信息技术", + "580603": "司法鉴定技术", + "580604": "司法信息安全", + "580605": "罪犯心理测量与矫正技术", + "580606": "戒毒矫治技术", + "580700": "安全防范类", + "580701": "安全防范技术", + "580702": "安全保卫管理", + "580703": "智能安防运营管理", + "590100": "食品工业类", + "590101": "食品加工技术", + "590102": "酿酒技术", + "590103": "食品质量与安全", + "590104": "食品贮运与营销", + "590105": "食品检测技术", + "590106": "食品营养与卫生", + "590107": "食品营养与检测", + "590200": "药品制造类", + "590201": "中药生产与加工", + "590202": "药品生产技术", + "590203": "兽药制药技术", + "590204": "药品质量与安全", + "590205": "制药设备应用技术", + "590206": "化学制药技术", + "590207": "生物制药技术", + "590208": "中药制药技术", + "590209": "药物制剂技术", + "590210": "标准化技术", + "590300": "食品药品管理类", + "590301": "药品经营与管理", + "590302": "药品服务与管理", + "590303": "保健品开发与管理", + "590304": "化妆品经营与管理", + "590305": "食品药品监督管理", + "590306": "殡葬设备维护技术", + "590307": "陵园服务与管理", + "590400": "粮食工业类", + "590401": "粮食工程技术", + "590500": "粮食储检类", + "590501": "粮油储藏与检测技术", + "600100": "铁道运输类", + "600101": "铁道机车", + "600102": "铁道车辆", + "600103": "铁道供电技术", + "600104": "铁道工程技术", + "600105": "铁道机械化维修技术", + "600106": "铁道信号自动控制", + "600107": "铁道通信与信息化技术", + "600108": "铁道交通运营管理", + "600109": "铁路物流管理", + "600110": "铁路桥梁与隧道工程技术", + "600111": "高速铁道工程技术", + "600112": "高速铁路客运乘务", + "600113": "动车组检修技术", + "600114": "高铁综合维修技术", + "600200": "道路运输类", + "600201": "智能交通技术运用", + "600202": "道路桥梁工程技术", + "600203": "道路运输与路政管理", + "600204": "道路养护与管理", + "600205": "公路机械化施工技术", + "600206": "工程机械运用技术", + "600207": "交通运营管理", + "600208": "交通枢纽运营管理", + "600209": "汽车运用与维修技术", + "600210": "汽车车身维修技术", + "600211": "汽车运用安全管理", + "600212": "新能源汽车运用与维修", + "600300": "水上运输类", + "600301": "航海技术", + "600302": "国际邮轮乘务管理", + "600303": "船舶电子电气技术", + "600304": "船舶检验", + "600305": "港口机械与自动控制", + "600306": "港口电气技术", + "600307": "港口与航道工程技术", + "600308": "港口与航运管理", + "600309": "港口物流管理", + "600310": "轮机工程技术", + "600311": "水上救捞技术", + "600312": "水路运输与海事管理", + "600313": "集装箱运输管理", + "600400": "航空运输类", + "600401": "民航运输", + "600402": "民航通信技术", + "600403": "定翼机驾驶技术", + "600404": "直升机驾驶技术", + "600405": "空中乘务", + "600406": "民航安全技术管理", + "600407": "民航空中安全保卫", + "600408": "机场运行", + "600409": "飞机机电设备维修", + "600410": "飞机电子设备维修", + "600411": "飞机部件修理", + "600412": "航空地面设备维修", + "600413": "机场场务技术与管理", + "600414": "航空油料", + "600415": "航空物流", + "600416": "通用航空器维修", + "600417": "通用航空航务技术", + "600418": "飞机结构修理", + "600500": "管道运输类", + "600501": "管道工程技术", + "600502": "管道运输管理", + "600600": "城市轨道交通类", + "600601": "城市轨道交通车辆技术", + "600602": "城市轨道交通机电技术", + "600603": "城市轨道交通通信信号技术", + "600604": "城市轨道交通供配电技术", + "600605": "城市轨道交通工程技术", + "600606": "城市轨道交通运营管理", + "600700": "邮政类", + "600701": "邮政通信管理", + "600702": "快递运营管理", + "610100": "电子信息类", + "610101": "电子信息工程技术", + "610102": "应用电子技术", + "610103": "微电子技术", + "610104": "智能产品开发", + "610105": "智能终端技术与应用", + "610106": "智能监控技术应用", + "610107": "汽车智能技术", + "610108": "电子产品质量检测", + "610109": "电子产品营销与服务", + "610110": "电子电路设计与工艺", + "610111": "电子制造技术与设备", + "610112": "电子测量技术与仪器", + "610113": "电子工艺与管理", + "610114": "声像工程技术", + "610115": "移动互联应用技术", + "610116": "光电技术应用", + "610117": "光伏工程技术", + "610118": "光电显示技术", + "610119": "物联网应用技术", + "610120": "集成电路技术应用", + "610200": "计算机类", + "610201": "计算机应用技术", + "610202": "计算机网络技术", + "610203": "计算机信息管理", + "610204": "计算机系统与维护", + "610205": "软件技术", + "610206": "软件与信息服务", + "610207": "动漫制作技术", + "610208": "嵌入式技术与应用", + "610209": "数字展示技术", + "610210": "数字媒体应用技术", + "610211": "信息安全与管理", + "610212": "移动应用开发", + "610213": "云计算技术与应用", + "610214": "电子商务技术", + "610215": "大数据技术与应用", + "610216": "虚拟现实应用技术", + "610217": "人工智能技术服务", + "610300": "通信类", + "610301": "通信技术", + "610302": "移动通信技术", + "610303": "通信系统运行管理", + "610304": "通信工程设计与监理", + "610305": "电信服务与管理", + "610306": "光通信技术", + "610307": "物联网工程技术", + "620100": "临床医学类", + "620101": "临床医学", + "620102": "口腔医学", + "620103": "中医学", + "620104": "中医骨伤", + "620105": "针灸推拿", + "620106": "蒙医学", + "620107": "藏医学", + "620108": "维医学", + "620109": "傣医学", + "620110": "哈医学", + "620111": "朝医学", + "620200": "护理类", + "620201": "护理", + "620202": "助产", + "620300": "药学类", + "620301": "药学", + "620302": "中药学", + "620303": "蒙药学", + "620304": "维药学", + "620305": "藏药学", + "620400": "医学技术类", + "620401": "医学检验技术", + "620402": "医学生物技术", + "620403": "医学影像技术", + "620404": "医学美容技术", + "620405": "口腔医学技术", + "620406": "卫生检验与检疫技术", + "620407": "眼视光技术", + "620408": "放射治疗技术", + "620409": "呼吸治疗技术", + "620500": "康复治疗类", + "620501": "康复治疗技术", + "620502": "言语听觉康复技术", + "620503": "中医康复技术", + "620600": "公共卫生与卫生管理类", + "620601": "预防医学", + "620602": "公共卫生管理", + "620603": "卫生监督", + "620604": "卫生信息管理", + "620700": "人口与计划生育类", + "620701": "人口与家庭发展服务", + "620702": "生殖健康服务与管理", + "620800": "健康管理与促进类", + "620801": "健康管理", + "620802": "医学营养", + "620803": "中医养生保健", + "620804": "心理咨询", + "620805": "医疗设备应用技术", + "620806": "精密医疗器械技术", + "620807": "医疗器械维护与管理", + "620808": "康复工程技术", + "620809": "康复辅助器具技术", + "620810": "假肢与矫形器技术", + "620811": "老年保健与管理", + "620812": "医疗器械经营与管理", + "630100": "财政税务类", + "630101": "财政", + "630102": "税务", + "630103": "资产评估与管理", + "630104": "政府采购管理", + "630200": "金融类", + "630201": "金融管理", + "630202": "国际金融", + "630203": "证券与期货", + "630204": "信托与租赁", + "630205": "保险", + "630206": "投资与理财", + "630207": "信用管理", + "630208": "农村金融", + "630209": "互联网金融", + "630300": "财务会计类", + "630301": "财务管理", + "630302": "会计", + "630303": "审计", + "630304": "会计信息管理", + "630400": "统计类", + "630401": "信息统计与分析", + "630402": "统计与会计核算", + "630500": "经济贸易类", + "630501": "国际贸易实务", + "630502": "国际经济与贸易", + "630503": "国际商务", + "630504": "服务外包", + "630505": "经济信息管理", + "630506": "报关与国际货运", + "630507": "商务经纪与代理", + "630508": "国际文化贸易", + "630600": "工商管理类", + "630601": "工商企业管理", + "630602": "商务管理", + "630603": "商检技术", + "630604": "连锁经营管理", + "630605": "市场管理与服务", + "630606": "品牌代理经营", + "630607": "中小企业创业与经营", + "630700": "市场营销类", + "630701": "市场营销", + "630702": "汽车营销与服务", + "630703": "广告策划与营销", + "630704": "茶艺与茶叶营销", + "630800": "电子商务类", + "630801": "电子商务", + "630802": "移动商务", + "630803": "网络营销", + "630804": "商务数据分析与应用", + "630805": "跨境电子商务", + "630900": "物流类", + "630901": "物流工程技术", + "630902": "物流信息技术", + "630903": "物流管理", + "630904": "物流金融管理", + "630905": "工程物流管理", + "630906": "冷链物流技术与管理", + "630907": "采购与供应管理", + "640100": "旅游类", + "640101": "旅游管理", + "640102": "导游", + "640103": "旅行社经营管理", + "640104": "景区开发与管理", + "640105": "酒店管理", + "640106": "休闲服务与管理", + "640107": "研学旅行管理与服务", + "640108": "葡萄酒营销与服务", + "640200": "餐饮类", + "640201": "餐饮管理", + "640202": "烹调工艺与营养", + "640203": "营养配餐", + "640204": "中西面点工艺", + "640205": "西餐工艺", + "640300": "会展类", + "640301": "会展策划与管理", + "650100": "艺术设计类", + "650101": "艺术设计", + "650102": "视觉传播设计与制作", + "650103": "广告设计与制作", + "650104": "数字媒体艺术设计", + "650105": "产品艺术设计", + "650106": "家具艺术设计", + "650107": "皮具艺术设计", + "650108": "服装与服饰设计", + "650109": "室内艺术设计", + "650110": "展示艺术设计", + "650111": "环境艺术设计", + "650112": "公共艺术设计", + "650113": "雕刻艺术设计", + "650114": "包装艺术设计", + "650115": "陶瓷设计与工艺", + "650116": "刺绣设计与工艺", + "650117": "玉器设计与工艺", + "650118": "首饰设计与工艺", + "650119": "工艺美术品设计", + "650120": "动漫设计", + "650121": "游戏设计", + "650122": "人物形象设计", + "650123": "美容美体艺术", + "650124": "摄影与摄像艺术", + "650125": "美术", + "650200": "表演艺术类", + "650201": "表演艺术", + "650202": "戏剧影视表演", + "650203": "歌舞表演", + "650204": "戏曲表演", + "650205": "曲艺表演", + "650206": "音乐剧表演", + "650207": "舞蹈表演", + "650208": "国际标准舞", + "650209": "服装表演", + "650210": "模特与礼仪", + "650211": "现代流行音乐", + "650212": "作曲技术", + "650213": "音乐制作", + "650214": "钢琴伴奏", + "650215": "钢琴调律", + "650216": "舞蹈编导", + "650217": "戏曲导演", + "650218": "舞台艺术设计与制作", + "650219": "音乐表演", + "650220": "音乐传播", + "650300": "民族文化类", + "650301": "民族表演艺术", + "650302": "民族美术", + "650303": "民族服装与服饰", + "650304": "民族民居装饰", + "650305": "民族传统技艺", + "650306": "少数民族古籍修复", + "650307": "中国少数民族语言文化", + "650400": "文化服务类", + "650401": "文化创意与策划", + "650402": "文化市场经营管理", + "650403": "公共文化服务与管理", + "650404": "文物修复与保护", + "650405": "考古探掘技术", + "650406": "文物博物馆服务与管理", + "650407": "图书档案管理", + "660100": "新闻出版类", + "660101": "图文信息处理", + "660102": "网络新闻与传播", + "660103": "版面编辑与校对", + "660104": "出版商务", + "660105": "出版与电脑编辑技术", + "660106": "出版信息管理", + "660107": "数字出版", + "660108": "数字媒体设备管理", + "660200": "广播影视类", + "660201": "新闻采编与制作", + "660202": "播音与主持", + "660203": "广播影视节目制作", + "660204": "广播电视技术", + "660205": "影视制片管理", + "660206": "影视编导", + "660207": "影视美术", + "660208": "影视多媒体技术", + "660209": "影视动画", + "660210": "影视照明技术与艺术", + "660211": "音像技术", + "660212": "录音技术与艺术", + "660213": "摄影摄像技术", + "660214": "传播与策划", + "660215": "媒体营销", + "670100": "教育类", + "670101": "早期教育", + "670102": "学前教育", + "670103": "小学教育", + "670104": "语文教育", + "670105": "数学教育", + "670106": "英语教育", + "670107": "物理教育", + "670108": "化学教育", + "670109": "生物教育", + "670110": "历史教育", + "670111": "地理教育", + "670112": "音乐教育", + "670113": "美术教育", + "670114": "体育教育", + "670115": "思想政治教育", + "670116": "舞蹈教育", + "670117": "艺术教育", + "670118": "特殊教育", + "670119": "科学教育", + "670120": "现代教育技术", + "670121": "心理健康教育", + "670200": "语言类", + "670201": "汉语", + "670202": "商务英语", + "670203": "应用英语", + "670204": "旅游英语", + "670205": "商务日语", + "670206": "应用日语", + "670207": "旅游日语", + "670208": "应用韩语", + "670209": "应用俄语", + "670210": "应用法语", + "670211": "应用德语", + "670212": "应用西班牙语", + "670213": "应用越南语", + "670214": "应用泰语", + "670215": "应用阿拉伯语", + "670216": "应用外语", + "670300": "文秘类", + "670301": "文秘", + "670302": "文秘速录", + "670400": "体育类", + "670401": "运动训练", + "670402": "运动防护", + "670403": "社会体育", + "670404": "休闲体育", + "670405": "高尔夫球运动与管理", + "670406": "民族传统体育", + "670407": "体育艺术表演", + "670408": "体育运营与管理", + "670409": "体育保健与康复", + "670410": "健身指导与管理", + "670411": "电子竞技运动与管理", + "670412": "冰雪设施运维与管理", + "680100": "公安管理类", + "680101": "治安管理", + "680102": "交通管理", + "680103": "信息网络安全监察", + "680104": "防火管理", + "680105": "边防检查", + "680106": "边境管理", + "680107": "特警", + "680108": "警察管理", + "680109": "公共安全管理", + "680110": "森林消防", + "680111": "部队后勤管理", + "680112": "部队政治工作", + "680200": "公安指挥类", + "680201": "警察指挥与战术", + "680202": "边防指挥", + "680203": "船艇指挥", + "680204": "通信指挥", + "680205": "消防指挥", + "680206": "参谋业务", + "680207": "抢险救援", + "680300": "公安技术类", + "680301": "刑事科学技术", + "680302": "警犬技术", + "680400": "侦查类", + "680401": "刑事侦查", + "680402": "国内安全保卫", + "680403": "经济犯罪侦查", + "680404": "禁毒", + "680500": "法律实务类", + "680501": "司法助理", + "680502": "法律文秘", + "680503": "法律事务", + "680504": "检察事务", + "680600": "法律执行类", + "680601": "刑事执行", + "680602": "民事执行", + "680603": "行政执行", + "680604": "司法警务", + "680605": "社区矫正", + "680700": "司法技术类", + "680701": "刑事侦查技术", + "680702": "安全防范技术", + "680703": "司法信息技术", + "680704": "司法鉴定技术", + "680705": "司法信息安全", + "680706": "罪犯心理测量与矫正技术", + "680707": "戒毒矫治技术", + "680708": "职务犯罪预防与控制", + "690100": "公共事业类", + "690101": "社会工作", + "690102": "社会福利事业管理", + "690103": "青少年工作与管理", + "690104": "社区管理与服务", + "690105": "公共关系", + "690106": "人民武装", + "690200": "公共管理类", + "690201": "民政管理", + "690202": "人力资源管理", + "690203": "劳动与社会保障", + "690204": "网络舆情监测", + "690205": "公共事务管理", + "690206": "行政管理", + "690207": "质量管理与认证", + "690208": "知识产权管理", + "690209": "公益慈善事业管理", + "690300": "公共服务类", + "690301": "老年服务与管理", + "690302": "家政服务与管理", + "690303": "婚庆服务与管理", + "690304": "社区康复", + "690305": "现代殡葬技术与管理", + "690306": "幼儿发展与健康管理", + "690307": "陵园服务与管理", + "720300": "测绘地理信息类", + "720301": "导航工程", + "720400": "石油与天然气类", + "720401": "油气储运工程", + "720500": "煤炭类", + "720501": "采矿工程", + "730300": "新能源发电工程类", + "730301": "新能源工程", + "740100": "城乡规划与管理类", + "740101": "土木工程", + "740200": "城乡规划与管理类", + "740201": "工程造价", + "740202": "工程管理", + "740300": "土建施工类", + "740301": "建筑设计", + "740302": "风景园林", + "760100": "机械设计制造类", + "760101": "机械设计制造及其自动化", + "760102": "材料成型及控制工程", + "760103": "智能制造工程", + "760300": "自动化类", + "760301": "机械电子工程", + "760302": "电气工程及其自动化", + "760303": "智能控制技术", + "760304": "工业机器人技术", + "760305": "电梯工程技术", + "760306": "自动化技术与应用", + "760700": "汽车制造类", + "760701": "车辆工程", + "760702": "汽车服务工程", + "760703": "新能源汽车工程", + "770200": "化工技术类", + "770201": "化学工程与工艺", + "780300": "印刷类", + "780301": "印刷工程", + "790100": "食品工业类", + "790101": "食品质量与安全", + "790200": "药品制造类", + "790201": "制药工程", + "800200": "道路运输类", + "800201": "道路桥梁工程", + "800300": "水上运输类", + "800301": "航海技术", + "800302": "水路运输与海事管理", + "800600": "城市轨道交通类", + "800601": "轨道交通信号与控制", + "800602": "城市轨道交通设备与控制", + "810100": "电子信息类", + "810101": "电子信息工程", + "810102": "物联网工程", + "810103": "集成电路技术与应用", + "810200": "计算机类", + "810201": "计算机应用工程", + "810202": "网络工程", + "810203": "软件工程", + "810204": "数字媒体技术", + "810205": "信息安全与管理", + "810206": "大数据技术与应用", + "810207": "区块链技术与应用", + "810208": "虚拟现实技术与应用", + "810300": "通信类", + "810301": "通信工程", + "820200": "护理类", + "820201": "护理", + "820500": "康复治疗类", + "820501": "康复治疗", + "820800": "健康管理与促进类", + "820801": "健康服务与管理", + "830200": "金融类", + "830201": "金融管理", + "830202": "互联网金融", + "830300": "财务会计类", + "830301": "财务管理", + "830302": "会计", + "830500": "经济贸易类", + "830501": "国际经济与贸易", + "830700": "市场营销类", + "830701": "市场营销", + "830800": "电子商务类", + "830801": "电子商务", + "830802": "跨境电子商务", + "830900": "物流类", + "830901": "物流管理", + "830902": "物流工程", + "840100": "旅游类", + "840101": "旅游管理", + "840102": "酒店管理", + "850100": "艺术设计类", + "850101": "视觉传达设计", + "850102": "数字媒体艺术", + "850103": "服装与服饰设计", + "850104": "环境艺术设计", + "850105": "工艺美术", + "850106": "美术", + "850107": "产品设计", + "850108": "公共艺术设计", + "850200": "表演艺术类", + "850201": "舞蹈表演", + "850202": "音乐表演", + "860100": "新闻出版类", + "860101": "网络与新媒体", + "860200": "广播影视类", + "860201": "播音与主持", + "860202": "影视编导", + "860203": "影视摄影与制作", + "870100": "教育类", + "870101": "学前教育", + "870200": "语言类", + "870201": "商务英语", + "870202": "商务日语", + "870203": "应用韩语", + "870204": "应用俄语", + "870205": "应用泰语", + "870400": "体育类", + "870401": "社会体育指导与管理", + "870402": "休闲体育", + "890300": "公共服务类", + "890301": "家政管理", + "999999": "未知", + "01SY00": "人文科学试验班类", + "01SY01": "人文科学试验班", + "02SY00": "经济试验班类", + "02SY01": "经济试验班", + "02SY02": "经济管理试验班", + "03SY00": "社会科学试验班", + "03SY01": "社会科学试验班", + "050200A": "桑戈语", + "05SY00": "文科试验班类", + "07SY00": "理科试验班类", + "07SY01": "理科试验班", + "07SY02": "自然科学试验班", + "08SY00": "工科试验班类", + "08SY01": "工科试验班", + "08SY02": "科技与创意设计试验班", + "08SY03": "技术科学试验班", + "10SY00": "医学试验班类", + "10SY01": "医学试验班" + }, + "schools": { + "10001": "北京大学", + "10002": "中国人民大学", + "10003": "清华大学", + "10004": "北京交通大学", + "10005": "北京工业大学", + "10006": "北京航空航天大学", + "10007": "北京理工大学", + "10008": "北京科技大学", + "10009": "北方工业大学", + "10010": "北京化工大学", + "10011": "北京工商大学", + "10012": "北京服装学院", + "10013": "北京邮电大学", + "10015": "北京印刷学院", + "10016": "北京建筑大学", + "10017": "北京石油化工学院", + "10018": "北京电子科技学院", + "10019": "中国农业大学", + "10020": "北京农学院", + "10022": "北京林业大学", + "10023": "北京协和医学院(清华大学医学部)", + "10025": "首都医科大学", + "10026": "北京中医药大学", + "10027": "北京师范大学", + "10028": "首都师范大学", + "10029": "首都体育学院", + "10030": "北京外国语大学", + "10031": "北京第二外国语学院", + "10032": "北京语言大学", + "10033": "中国传媒大学", + "10034": "中央财经大学", + "10035": "桂林生命与健康职业技术学院", + "10036": "对外经济贸易大学", + "10037": "北京物资学院", + "10038": "首都经济贸易大学", + "10039": "中国消防救援学院", + "10040": "外交学院", + "10041": "中国人民公安大学", + "10042": "国际关系学院", + "10043": "北京体育大学", + "10045": "中央音乐学院", + "10046": "中国音乐学院", + "10047": "中央美术学院", + "10048": "中央戏剧学院", + "10049": "中国戏曲学院", + "10050": "北京电影学院", + "10051": "北京舞蹈学院", + "10052": "中央民族大学", + "10053": "中国政法大学", + "10054": "华北电力大学", + "10055": "南开大学", + "10056": "天津大学", + "10057": "天津科技大学", + "10058": "天津工业大学", + "10059": "中国民航大学", + "10060": "天津理工大学", + "10061": "天津农学院", + "10062": "天津医科大学", + "10063": "天津中医药大学", + "10065": "天津师范大学", + "10066": "天津职业技术师范大学", + "10068": "天津外国语大学", + "10069": "天津商业大学", + "10070": "天津财经大学", + "10071": "天津体育学院", + "10072": "天津音乐学院", + "10073": "天津美术学院", + "10075": "河北大学", + "10076": "河北工程大学", + "10077": "河北地质大学", + "10078": "华北水利水电大学", + "10079": "华北电力大学(保定)", + "10080": "河北工业大学", + "10081": "华北理工大学", + "10082": "河北科技大学", + "10084": "河北建筑工程学院", + "10085": "河北水利电力学院", + "10086": "河北农业大学", + "10089": "河北医科大学", + "10092": "河北北方学院", + "10093": "承德医学院", + "10094": "河北师范大学", + "10096": "保定学院", + "10098": "河北民族师范学院", + "10099": "唐山师范学院", + "10100": "廊坊师范学院", + "10101": "衡水学院", + "10102": "石家庄学院", + "10103": "邯郸学院", + "10104": "邢台学院", + "10105": "沧州师范学院", + "10107": "石家庄铁道大学", + "10108": "山西大学", + "10109": "太原科技大学", + "10110": "中北大学", + "10112": "太原理工大学", + "10113": "山西农业大学", + "10114": "山西医科大学", + "10117": "长治医学院", + "10118": "山西师范大学", + "10119": "太原师范学院", + "10120": "山西大同大学", + "10121": "晋中学院", + "10122": "长治学院", + "10123": "运城学院", + "10124": "忻州师范学院", + "10125": "山西财经大学", + "10126": "内蒙古大学", + "10127": "内蒙古科技大学", + "10128": "内蒙古工业大学", + "10129": "内蒙古农业大学", + "10132": "内蒙古医科大学", + "10135": "内蒙古师范大学", + "10136": "内蒙古民族大学", + "10138": "赤峰学院", + "10139": "内蒙古财经大学", + "10140": "辽宁大学", + "10141": "大连理工大学", + "10142": "沈阳工业大学", + "10143": "沈阳航空航天大学", + "10144": "沈阳理工大学", + "10145": "东北大学", + "10146": "辽宁科技大学", + "10147": "辽宁工程技术大学", + "10148": "辽宁石油化工大学", + "10149": "沈阳化工大学", + "10150": "大连交通大学", + "10151": "大连海事大学", + "10152": "大连工业大学", + "10153": "沈阳建筑大学", + "10154": "辽宁工业大学", + "10157": "沈阳农业大学", + "10158": "大连海洋大学", + "10159": "中国医科大学", + "10160": "锦州医科大学", + "10161": "大连医科大学", + "10162": "辽宁中医药大学", + "10163": "沈阳药科大学", + "10164": "沈阳医学院", + "10165": "辽宁师范大学", + "10166": "沈阳师范大学", + "10167": "渤海大学", + "10169": "鞍山师范学院", + "10171": "朝阳师范高等专科学校", + "10172": "大连外国语大学", + "10173": "东北财经大学", + "10175": "中国刑事警察学院", + "10176": "沈阳体育学院", + "10177": "沈阳音乐学院", + "10178": "鲁迅美术学院", + "10179": "抚顺师范高等专科学校", + "10180": "锦州师范高等专科学校", + "10181": "营口职业技术学院", + "10182": "铁岭师范高等专科学校", + "10183": "吉林大学", + "10184": "延边大学", + "10186": "长春理工大学", + "10188": "东北电力大学", + "10190": "长春工业大学", + "10191": "吉林建筑大学", + "10192": "吉林化工学院", + "10193": "吉林农业大学", + "10199": "长春中医药大学", + "10200": "东北师范大学", + "10201": "北华大学", + "10202": "通化师范学院", + "10203": "吉林师范大学", + "10204": "吉林工程技术师范学院", + "10205": "长春师范大学", + "10206": "白城师范学院", + "10207": "吉林财经大学", + "10208": "吉林体育学院", + "10209": "吉林艺术学院", + "10212": "黑龙江大学", + "10213": "哈尔滨工业大学", + "10214": "哈尔滨理工大学", + "10216": "燕山大学", + "10217": "哈尔滨工程大学", + "10219": "黑龙江科技大学", + "10220": "东北石油大学", + "10222": "佳木斯大学", + "10223": "黑龙江八一农垦大学", + "10224": "东北农业大学", + "10225": "东北林业大学", + "10226": "哈尔滨医科大学", + "10228": "黑龙江中医药大学", + "10229": "牡丹江医学院", + "10231": "哈尔滨师范大学", + "10232": "齐齐哈尔大学", + "10233": "牡丹江师范学院", + "10234": "哈尔滨学院", + "10235": "大庆师范学院", + "10236": "绥化学院", + "10238": "齐齐哈尔高等师范专科学校", + "10240": "哈尔滨商业大学", + "10242": "哈尔滨体育学院", + "10245": "哈尔滨金融学院", + "10246": "复旦大学", + "10247": "同济大学", + "10248": "上海交通大学", + "10251": "华东理工大学", + "10252": "上海理工大学", + "10254": "上海海事大学", + "10255": "东华大学", + "10256": "上海电力大学", + "10259": "上海应用技术大学", + "10262": "上海健康医学院", + "10264": "上海海洋大学", + "10268": "上海中医药大学", + "10269": "华东师范大学", + "10270": "上海师范大学", + "10271": "上海外国语大学", + "10272": "上海财经大学", + "10273": "上海对外经贸大学", + "10274": "上海海关学院", + "10275": "上海旅游高等专科学校", + "10276": "华东政法大学", + "10277": "上海体育大学", + "10278": "上海音乐学院", + "10279": "上海戏剧学院", + "10280": "上海大学", + "10283": "上海公安学院", + "10284": "南京大学", + "10285": "苏州大学", + "10286": "东南大学", + "10287": "南京航空航天大学", + "10288": "南京理工大学", + "10289": "江苏科技大学", + "10290": "中国矿业大学", + "10291": "南京工业大学", + "10292": "常州大学", + "10293": "南京邮电大学", + "10294": "河海大学", + "10295": "江南大学", + "10298": "南京林业大学", + "10299": "江苏大学", + "10300": "南京信息工程大学", + "10304": "南通大学", + "10305": "盐城工学院", + "10307": "南京农业大学", + "10312": "南京医科大学", + "10313": "徐州医科大学", + "10315": "南京中医药大学", + "10316": "中国药科大学", + "10319": "南京师范大学", + "10320": "江苏师范大学", + "10323": "淮阴师范学院", + "10324": "盐城师范学院", + "10327": "南京财经大学", + "10329": "江苏警官学院", + "10330": "南京体育学院", + "10331": "南京艺术学院", + "10332": "苏州科技大学", + "10333": "常熟理工学院", + "10335": "浙江大学", + "10336": "杭州电子科技大学", + "10337": "浙江工业大学", + "10338": "浙江理工大学", + "10340": "浙江海洋大学", + "10341": "浙江农林大学", + "10343": "温州医科大学", + "10344": "浙江中医药大学", + "10345": "浙江师范大学", + "10346": "杭州师范大学", + "10347": "湖州师范学院", + "10349": "绍兴文理学院", + "10350": "台州学院", + "10351": "温州大学", + "10352": "丽水学院", + "10353": "浙江工商大学", + "10354": "嘉兴学院", + "10355": "中国美术学院", + "10356": "中国计量大学", + "10357": "安徽大学", + "10358": "中国科学技术大学", + "10359": "合肥工业大学", + "10360": "安徽工业大学", + "10361": "安徽理工大学", + "10363": "安徽工程大学", + "10364": "安徽农业大学", + "10366": "安徽医科大学", + "10367": "蚌埠医学院", + "10368": "皖南医学院", + "10369": "安徽中医药大学", + "10370": "安徽师范大学", + "10371": "阜阳师范大学", + "10372": "安庆师范大学", + "10373": "淮北师范大学", + "10375": "黄山学院", + "10376": "皖西学院", + "10377": "滁州学院", + "10378": "安徽财经大学", + "10379": "宿州学院", + "10380": "巢湖学院", + "10381": "淮南师范学院", + "10383": "铜陵学院", + "10384": "厦门大学", + "10385": "华侨大学", + "10386": "福州大学", + "10388": "福建理工大学", + "10389": "福建农林大学", + "10390": "集美大学", + "10392": "福建医科大学", + "10393": "福建中医药大学", + "10394": "福建师范大学", + "10395": "闽江学院", + "10397": "武夷学院", + "10398": "宁德师范学院", + "10399": "泉州师范学院", + "10402": "闽南师范大学", + "10403": "南昌大学", + "10404": "华东交通大学", + "10405": "东华理工大学", + "10406": "南昌航空大学", + "10407": "江西理工大学", + "10408": "景德镇陶瓷大学", + "10410": "江西农业大学", + "10412": "江西中医药大学", + "10413": "赣南医学院", + "10414": "江西师范大学", + "10416": "上饶师范学院", + "10417": "宜春学院", + "10418": "赣南师范大学", + "10419": "井冈山大学", + "10421": "江西财经大学", + "10422": "山东大学", + "10423": "中国海洋大学", + "10424": "山东科技大学", + "10425": "中国石油大学(华东)", + "10426": "青岛科技大学", + "10427": "济南大学", + "10429": "青岛理工大学", + "10430": "山东建筑大学", + "10431": "齐鲁工业大学", + "10433": "山东理工大学", + "10434": "山东农业大学", + "10435": "青岛农业大学", + "10438": "潍坊医学院", + "10439": "山东第一医科大学", + "10440": "滨州医学院", + "10441": "山东中医药大学", + "10442": "山东医学高等专科学校", + "10443": "济宁医学院", + "10444": "菏泽医学专科学校", + "10445": "山东师范大学", + "10446": "曲阜师范大学", + "10447": "聊城大学", + "10448": "德州学院", + "10449": "滨州学院", + "10451": "鲁东大学", + "10452": "临沂大学", + "10453": "泰山学院", + "10454": "济宁学院", + "10455": "菏泽学院", + "10456": "山东财经大学", + "10457": "山东体育学院", + "10458": "山东艺术学院", + "10459": "郑州大学", + "10460": "河南理工大学", + "10462": "郑州轻工业大学", + "10463": "河南工业大学", + "10464": "河南科技大学", + "10465": "中原工学院", + "10466": "河南农业大学", + "10467": "河南科技学院", + "10469": "河南牧业经济学院", + "10471": "河南中医药大学", + "10472": "新乡医学院", + "10475": "河南大学", + "10476": "河南师范大学", + "10477": "信阳师范学院", + "10478": "周口师范学院", + "10479": "安阳师范学院", + "10480": "许昌学院", + "10481": "南阳师范学院", + "10482": "洛阳师范学院", + "10483": "商丘师范学院", + "10484": "河南财经政法大学", + "10485": "郑州航空工业管理学院", + "10486": "武汉大学", + "10487": "华中科技大学", + "10488": "武汉科技大学", + "10489": "长江大学", + "10490": "武汉工程大学", + "10491": "中国地质大学(武汉)", + "10495": "武汉纺织大学", + "10496": "武汉轻工大学", + "10497": "武汉理工大学", + "10500": "湖北工业大学", + "10504": "华中农业大学", + "10507": "湖北中医药大学", + "10511": "华中师范大学", + "10512": "湖北大学", + "10513": "湖北师范大学", + "10514": "黄冈师范学院", + "10517": "湖北民族大学", + "10518": "汉江师范学院", + "10519": "湖北文理学院", + "10520": "中南财经政法大学", + "10522": "武汉体育学院", + "10523": "湖北美术学院", + "10524": "中南民族大学", + "10525": "湖北汽车工业学院", + "10528": "湖北工程学院", + "10530": "湘潭大学", + "10531": "吉首大学", + "10532": "湖南大学", + "10533": "中南大学", + "10534": "湖南科技大学", + "10536": "长沙理工大学", + "10537": "湖南农业大学", + "10538": "中南林业科技大学", + "10541": "湖南中医药大学", + "10542": "湖南师范大学", + "10543": "湖南理工学院", + "10545": "湘南学院", + "10546": "衡阳师范学院", + "10547": "邵阳学院", + "10548": "怀化学院", + "10549": "湖南文理学院", + "10551": "湖南科技学院", + "10553": "湖南人文科技学院", + "10554": "湖南工商大学", + "10555": "南华大学", + "10558": "中山大学", + "10559": "暨南大学", + "10560": "汕头大学", + "10561": "华南理工大学", + "10564": "华南农业大学", + "10566": "广东海洋大学", + "10570": "广州医科大学", + "10571": "广东医科大学", + "10572": "广州中医药大学", + "10573": "广东药科大学", + "10574": "华南师范大学", + "10576": "韶关学院", + "10577": "惠州学院", + "10578": "韩山师范学院", + "10579": "岭南师范学院", + "10580": "肇庆学院", + "10582": "嘉应学院", + "10585": "广州体育学院", + "10586": "广州美术学院", + "10587": "星海音乐学院", + "10588": "广东技术师范大学", + "10589": "海南大学", + "10590": "深圳大学", + "10592": "广东财经大学", + "10593": "广西大学", + "10594": "广西科技大学", + "10595": "桂林电子科技大学", + "10596": "桂林理工大学", + "10598": "广西医科大学", + "10599": "右江民族医学院", + "10600": "广西中医药大学", + "10601": "桂林医学院", + "10602": "广西师范大学", + "10603": "南宁师范大学", + "10604": "广西民族师范学院", + "10605": "河池学院", + "10606": "玉林师范学院", + "10607": "广西艺术学院", + "10608": "广西民族大学", + "10609": "百色学院", + "10610": "四川大学", + "10611": "重庆大学", + "10613": "西南交通大学", + "10614": "电子科技大学", + "10615": "西南石油大学", + "10616": "成都理工大学", + "10617": "重庆邮电大学", + "10618": "重庆交通大学", + "10619": "西南科技大学", + "10621": "成都信息工程大学", + "10622": "四川轻化工大学", + "10623": "西华大学", + "10624": "中国民用航空飞行学院", + "10626": "四川农业大学", + "10628": "西昌学院", + "10631": "重庆医科大学", + "10632": "西南医科大学", + "10633": "成都中医药大学", + "10634": "川北医学院", + "10635": "西南大学", + "10636": "四川师范大学", + "10637": "重庆师范大学", + "10638": "西华师范大学", + "10639": "绵阳师范学院", + "10640": "内江师范学院", + "10641": "宜宾学院", + "10642": "重庆文理学院", + "10643": "重庆三峡学院", + "10644": "四川文理学院", + "10646": "阿坝师范学院", + "10647": "长江师范学院", + "10649": "乐山师范学院", + "10650": "四川外国语大学", + "10651": "西南财经大学", + "10652": "西南政法大学", + "10653": "成都体育学院", + "10654": "四川音乐学院", + "10655": "四川美术学院", + "10656": "西南民族大学", + "10657": "贵州大学", + "10660": "贵州医科大学", + "10661": "遵义医科大学", + "10662": "贵州中医药大学", + "10663": "贵州师范大学", + "10664": "遵义师范学院", + "10665": "铜仁学院", + "10666": "兴义民族师范学院", + "10667": "安顺学院", + "10668": "贵州工程应用技术学院", + "10669": "凯里学院", + "10670": "黔南民族师范学院", + "10671": "贵州财经大学", + "10672": "贵州民族大学", + "10673": "云南大学", + "10674": "昆明理工大学", + "10676": "云南农业大学", + "10677": "西南林业大学", + "10678": "昆明医科大学", + "10679": "大理大学", + "10680": "云南中医药大学", + "10681": "云南师范大学", + "10683": "昭通学院", + "10684": "曲靖师范学院", + "10685": "普洱学院", + "10686": "保山学院", + "10687": "红河学院", + "10689": "云南财经大学", + "10690": "云南艺术学院", + "10691": "云南民族大学", + "10692": "西藏警官高等专科学校", + "10693": "西藏农牧学院", + "10694": "西藏大学", + "10695": "西藏民族大学", + "10696": "西藏藏医药大学", + "10697": "西北大学", + "10698": "西安交通大学", + "10699": "西北工业大学", + "10700": "西安理工大学", + "10701": "西安电子科技大学", + "10702": "西安工业大学", + "10703": "西安建筑科技大学", + "10704": "西安科技大学", + "10705": "西安石油大学", + "10708": "陕西科技大学", + "10709": "西安工程大学", + "10710": "长安大学", + "10712": "西北农林科技大学", + "10716": "陕西中医药大学", + "10718": "陕西师范大学", + "10719": "延安大学", + "10720": "陕西理工大学", + "10721": "宝鸡文理学院", + "10722": "咸阳师范学院", + "10723": "渭南师范学院", + "10724": "西安外国语大学", + "10726": "西北政法大学", + "10727": "西安体育学院", + "10728": "西安音乐学院", + "10729": "西安美术学院", + "10730": "兰州大学", + "10731": "兰州理工大学", + "10732": "兰州交通大学", + "10733": "甘肃农业大学", + "10735": "甘肃中医药大学", + "10736": "西北师范大学", + "10737": "兰州城市学院", + "10738": "陇东学院", + "10739": "天水师范学院", + "10740": "河西学院", + "10741": "兰州财经大学", + "10742": "西北民族大学", + "10743": "青海大学", + "10746": "青海师范大学", + "10748": "青海民族大学", + "10749": "宁夏大学", + "10752": "宁夏医科大学", + "10753": "宁夏师范学院", + "10755": "新疆大学", + "10757": "塔里木大学", + "10758": "新疆农业大学", + "10759": "石河子大学", + "10760": "新疆医科大学", + "10762": "新疆师范大学", + "10763": "喀什大学", + "10764": "伊犁师范大学", + "10765": "和田师范专科学校", + "10766": "新疆财经大学", + "10768": "新疆艺术学院", + "10792": "天津城建大学", + "10798": "河北科技师范学院", + "10809": "山西中医药大学", + "10812": "吕梁学院", + "10819": "呼伦贝尔学院", + "10822": "广东白云学院", + "10823": "长沙医学院", + "10824": "河南职业技术学院", + "10825": "齐鲁医药学院", + "10826": "明达职业技术学院", + "10827": "长沙民政职业技术学院", + "10828": "陕西工业职业技术学院", + "10829": "公安海警学院", + "10830": "湖南工业职业技术学院", + "10831": "顺德职业技术学院", + "10832": "山东商业职业技术学院", + "10833": "广东轻工职业技术学院", + "10834": "武汉职业技术学院", + "10835": "漯河职业技术学院", + "10836": "株洲师范高等专科学校", + "10838": "兰州石化职业技术学院", + "10839": "江西工业职业技术学院", + "10841": "辽宁对外经贸学院", + "10842": "三门峡职业技术学院", + "10843": "郑州铁路职业技术学院", + "10845": "大连职业技术学院", + "10846": "江西科技学院", + "10847": "辽源职业技术学院", + "10848": "无锡职业技术学院", + "10849": "江苏建筑职业技术学院", + "10850": "南京工业职业技术大学", + "10851": "上海东海职业技术学院", + "10852": "上海工商职业技术学院", + "10853": "北京工业职业技术学院", + "10856": "上海工程技术大学", + "10857": "北京信息职业技术学院", + "10858": "北京电子科技职业学院", + "10859": "天津天狮学院", + "10861": "广东交通职业技术学院", + "10862": "广东水利电力职业技术学院", + "10863": "宁波职业技术学院", + "10864": "温州职业技术学院", + "10865": "湖南信息职业技术学院", + "10866": "福建船政交通职业学院", + "10867": "广西机电职业技术学院", + "10868": "青岛滨海学院", + "10869": "安徽职业技术学院", + "10870": "重庆航天职业技术学院", + "10871": "内蒙古建筑职业技术学院", + "10872": "伊春职业学院", + "10873": "河北工业职业技术学院", + "10876": "浙江万里学院", + "10878": "安徽建筑大学", + "10879": "安徽科技学院", + "10888": "江西医学高等专科学校", + "10894": "景德镇学院", + "10895": "萍乡学院", + "10904": "枣庄学院", + "10908": "山东工艺美术学院", + "10918": "黄淮学院", + "10919": "平顶山学院", + "10920": "湖北理工学院", + "10927": "湖北科技学院", + "10929": "湖北医药学院", + "10955": "黄冈职业技术学院", + "10956": "长江职业学院", + "10957": "辽宁农业职业技术学院", + "10958": "江苏工程职业技术学院", + "10959": "安徽三联学院", + "10960": "苏州工艺美术职业技术学院", + "10963": "淮北职业技术学院", + "10964": "吉林外国语大学", + "10965": "潮汕职业技术学院", + "10966": "杨凌职业技术学院", + "10976": "贵阳学院", + "10977": "六盘水师范学院", + "10994": "新疆工程学院", + "10995": "新疆农业职业技术学院", + "10997": "昌吉学院", + "11032": "天津市职业大学", + "11033": "唐山学院", + "11034": "邯郸职业技术学院", + "11035": "沈阳大学", + "11037": "抚顺职业技术学院", + "11044": "四平职业大学", + "11046": "牡丹江大学", + "11047": "上海立信会计金融学院", + "11049": "淮阴工学院", + "11050": "连云港职业技术学院", + "11051": "镇江市高等专科学校", + "11052": "南通职业大学", + "11054": "苏州市职业大学", + "11055": "常州工学院", + "11057": "浙江科技学院", + "11058": "宁波工程学院", + "11059": "合肥学院", + "11061": "芜湖职业技术学院", + "11062": "厦门理工学院", + "11065": "青岛大学", + "11066": "烟台大学", + "11067": "潍坊学院", + "11068": "郑州工程技术学院", + "11069": "开封大学", + "11070": "洛阳理工学院", + "11071": "新乡学院", + "11072": "江汉大学", + "11074": "荆州理工职业学院", + "11075": "三峡大学", + "11077": "长沙学院", + "11078": "广州大学", + "11079": "成都大学", + "11080": "西安文理学院", + "11084": "北京科技大学延庆分校", + "11090": "北京京北职业技术学院", + "11092": "北京交通职业技术学院", + "11097": "首都经济贸易大学密云分校", + "11099": "北京工业大学通州分校", + "11100": "海南热带海洋学院", + "11104": "华北科技学院", + "11105": "中国人民警察大学", + "11106": "广州航海学院", + "11110": "广东警官学院", + "11113": "深圳职业技术学院", + "11114": "广东南华工商职业学院", + "11116": "成都工业学院", + "11117": "扬州大学", + "11121": "私立华联学院", + "11122": "三江学院", + "11149": "中华女子学院", + "11230": "齐齐哈尔医学院", + "11232": "北京信息科技大学", + "11236": "河北体育学院", + "11238": "石家庄职业技术学院", + "11242": "太原学院", + "11249": "辽阳职业技术学院", + "11250": "阜新高等专科学校", + "11258": "大连大学", + "11261": "吉林工商学院", + "11276": "南京工程学院", + "11287": "南京审计大学", + "11288": "沙洲职业工学院", + "11305": "蚌埠学院", + "11306": "池州学院", + "11308": "淮南联合大学", + "11311": "三明学院", + "11312": "龙岩学院", + "11313": "福建商学院", + "11314": "漳州职业技术学院", + "11315": "闽西职业技术学院", + "11317": "黎明职业大学", + "11318": "江西科技师范大学", + "11319": "南昌工程学院", + "11324": "山东警察学院", + "11326": "信阳农林学院", + "11329": "河南工学院", + "11330": "安阳工学院", + "11332": "湖北警官学院", + "11334": "湖北工业职业技术学院", + "11335": "鄂州职业大学", + "11336": "荆楚理工学院", + "11342": "湖南工程学院", + "11347": "仲恺农业工程学院", + "11349": "五邑大学", + "11350": "广西体育高等专科学校", + "11354": "梧州学院", + "11355": "南宁职业技术学院", + "11360": "攀枝花学院", + "11390": "玉溪师范学院", + "11391": "楚雄师范学院", + "11392": "云南警官学院", + "11393": "昆明学院", + "11395": "榆林学院", + "11396": "商洛学院", + "11397": "安康学院", + "11400": "西安培华学院", + "11406": "甘肃政法大学", + "11407": "北方民族大学", + "11413": "中国矿业大学(北京)", + "11414": "中国石油大学(北京)", + "11415": "中国地质大学(北京)", + "11417": "北京联合大学", + "11418": "北京城市学院", + "11420": "河北金融学院", + "11423": "张家口职业技术学院", + "11427": "集宁师范学院", + "11429": "内蒙古丰州职业学院", + "11430": "辽宁科技学院", + "11432": "辽宁警察学院", + "11436": "长春汽车工业高等专科学校", + "11437": "长春工程学院", + "11439": "吉林农业科技学院", + "11440": "长春金融高等专科学校", + "11441": "吉林警察学院", + "11445": "黑龙江工业学院", + "11446": "黑龙江东方学院", + "11449": "黑龙江职业学院", + "11458": "上海电机学院", + "11460": "南京晓庄学院", + "11462": "扬州市职业大学", + "11463": "江苏理工学院", + "11481": "浙江水利水电学院", + "11482": "浙江财经大学", + "11483": "浙江警察学院", + "11488": "衢州学院", + "11495": "福建警察学院", + "11498": "莆田学院", + "11499": "福建华南女子职业学院", + "11500": "辽宁省交通高等专科学校", + "11502": "福州职业技术学院", + "11504": "江西警察学院", + "11505": "九江职业大学", + "11508": "新余学院", + "11510": "山东交通学院", + "11517": "河南工程学院", + "11522": "焦作大学", + "11524": "武汉音乐学院", + "11527": "湖南城市学院", + "11528": "湖南工学院", + "11532": "湖南财政经济学院", + "11534": "湖南警察学院", + "11535": "湖南工业大学", + "11538": "湖南女子学院", + "11540": "广东金融学院", + "11545": "电子科技大学中山学院", + "11546": "广西科技师范学院", + "11548": "广西财经学院", + "11549": "南宁学院", + "11551": "重庆科技学院", + "11552": "四川旅游学院", + "11553": "成都纺织高等专科学校", + "11556": "文山学院", + "11557": "昆明冶金高等专科学校", + "11560": "西安财经大学", + "11561": "甘肃民族师范学院", + "11562": "兰州文理学院", + "11565": "乌鲁木齐职业大学", + "11585": "连云港师范高等专科学校", + "11600": "湖北经济学院", + "11607": "北部湾大学", + "11608": "广西水利电力职业技术学院", + "11625": "中国青年政治学院", + "11626": "北京青年政治学院", + "11629": "北华航天工业学院", + "11630": "山西省财政税务专科学校", + "11631": "河套学院", + "11632": "沈阳工程学院", + "11635": "哈尔滨信息工程学院", + "11641": "江苏海洋大学", + "11646": "宁波大学", + "11647": "浙江传媒学院", + "11652": "河南财政金融学院", + "11653": "南阳理工学院", + "11654": "武汉商学院", + "11656": "广东石油化工学院", + "11658": "海南师范大学", + "11660": "重庆理工大学", + "11661": "四川民族学院", + "11663": "黔南民族医学高等专科学校", + "11664": "西安邮电大学", + "11671": "桂林师范高等专科学校", + "11688": "山东工商学院", + "11709": "呼和浩特民族学院", + "11726": "长春大学", + "11731": "贵州商学院", + "11733": "上海出版印刷高等专科学校", + "11736": "西安航空学院", + "11765": "河南城建学院", + "11773": "广西职业技术学院", + "11775": "防灾科技学院", + "11777": "承德石油高等专科学校", + "11779": "辽东学院", + "11784": "仰恩大学", + "11785": "九江职业技术学院", + "11787": "濮阳职业技术学院", + "11788": "河南警察学院", + "11796": "武汉城市职业学院", + "11798": "武汉东湖学院", + "11799": "重庆工商大学", + "11800": "汉口学院", + "11802": "黑龙江工程学院", + "11805": "甘肃医学院", + "11806": "陇南师范高等专科学校", + "11807": "兰州工业学院", + "11808": "定西师范高等专科学校", + "11810": "海南医学院", + "11818": "新疆维吾尔医学专科学校", + "11819": "东莞理工学院", + "11821": "邢台职业技术学院", + "11823": "长春医学高等专科学校", + "11825": "桂林航天工业学院", + "11826": "西安电力高等专科学校", + "11827": "山东电力高等专科学校", + "11828": "郑州电力高等专科学校", + "11831": "首钢工学院", + "11832": "河北经贸大学", + "11833": "上海杉达学院", + "11834": "黄河科技学院", + "11835": "上海政法学院", + "11837": "桂林旅游学院", + "11838": "贺州学院", + "11840": "西安医学院", + "11841": "民办四川天一学院", + "11842": "浙江树人学院", + "11843": "九江学院", + "11845": "广东工业大学", + "11846": "广东外语外贸大学", + "11847": "佛山科学技术学院", + "11848": "重庆电力高等专科学校", + "11903": "中央司法警官学院", + "11998": "徐州工程学院", + "11999": "海南职业技术学院", + "12026": "大连民族大学", + "12034": "湖南第一师范学院", + "12036": "浙江交通职业技术学院", + "12040": "广州民航职业技术学院", + "12044": "上海第二工业大学", + "12046": "广州番禺职业技术学院", + "12047": "江苏经贸职业技术学院", + "12048": "南京特殊教育师范学院", + "12049": "吉林交通职业技术学院", + "12050": "上海商学院", + "12051": "湖北职业技术学院", + "12052": "武汉船舶职业技术学院", + "12053": "黑龙江建筑职业技术学院", + "12054": "九州职业技术学院", + "12055": "长沙航空职业技术学院", + "12056": "南通理工学院", + "12057": "包头职业技术学院", + "12058": "黄河水利职业技术学院", + "12059": "广东培正学院", + "12060": "广东松山职业技术学院", + "12061": "金华职业技术学院", + "12062": "日照职业技术学院", + "12063": "盘锦职业技术学院", + "12064": "成都航空职业技术学院", + "12065": "四川电力职业技术学院", + "12067": "许昌职业技术学院", + "12070": "曲阜远东职业技术学院", + "12072": "安徽商贸职业技术学院", + "12073": "安徽水利水电职业技术学院", + "12074": "阜阳职业技术学院", + "12078": "硅湖职业技术学院", + "12104": "柳州职业技术学院", + "12105": "天津中德应用技术大学", + "12106": "泰州职业技术学院", + "12107": "贵州警察学院", + "12111": "山西警察学院", + "12121": "南方医科大学", + "12212": "四川警察学院", + "12213": "南京森林警察学院", + "12214": "湖南医药学院", + "12215": "重庆工业职业技术学院", + "12216": "安徽新华学院", + "12217": "铜陵职业技术学院", + "12218": "民办万博科技职业学院", + "12219": "安徽警官职业学院", + "12220": "淮南职业技术学院", + "12222": "贵州交通职业技术学院", + "12223": "贵州航天职业技术学院", + "12300": "湖南大众传媒职业技术学院", + "12301": "永州职业技术学院", + "12302": "湖南铁道职业技术学院", + "12303": "湖南涉外经济学院", + "12304": "湖南科技职业学院", + "12306": "长春东方职业学院", + "12308": "海口经济学院", + "12309": "武昌首义学院", + "12310": "武昌理工学院", + "12317": "常州信息职业技术学院", + "12322": "广东农工商职业技术学院", + "12324": "青岛职业技术学院", + "12325": "广东新安职业技术学院", + "12326": "威海职业学院", + "12327": "佛山职业技术学院", + "12328": "山东职业学院", + "12329": "山东劳动职业技术学院", + "12330": "莱芜职业技术学院", + "12331": "山东女子学院", + "12332": "烟台南山学院", + "12334": "安徽工业经济职业技术学院", + "12335": "济宁职业技术学院", + "12336": "贵州电子信息职业技术学院", + "12343": "湖南生物机电职业技术学院", + "12344": "广西生态工程职业技术学院", + "12347": "恩施职业技术学院", + "12349": "云南国土资源职业学院", + "12352": "河北软件职业技术学院", + "12354": "襄阳职业技术学院", + "12356": "广西交通职业技术学院", + "12357": "云南交通职业技术学院", + "12362": "武汉生物工程学院", + "12364": "广西工业职业技术学院", + "12367": "河北石油职业技术学院", + "12369": "武汉工贸职业学院", + "12379": "广西国际商务职业技术学院", + "12382": "广西农业职业技术学院", + "12388": "长治职业技术学院", + "12389": "河北建材职业技术学院", + "12391": "潍坊职业学院", + "12392": "柳州铁道职业技术学院", + "12393": "昆明工业职业技术学院", + "12396": "烟台职业学院", + "12397": "湖南交通职业技术学院", + "12401": "湖南商务职业技术学院", + "12408": "河北政法职业学院", + "12410": "合肥通用职业技术学院", + "12415": "沧州职业技术学院", + "12418": "河北能源职业技术学院", + "12423": "湖南体育职业学院", + "12424": "石家庄铁路职业技术学院", + "12425": "湖南工程职业技术学院", + "12440": "东营职业学院", + "12441": "聊城职业技术学院", + "12443": "兴安职业技术学院", + "12448": "北京农业职业学院", + "12451": "北京政法职业学院", + "12453": "中国劳动关系学院", + "12481": "拉萨师范高等专科学校", + "12482": "克拉玛依职业技术学院", + "12484": "天津滨海职业学院", + "12487": "天津工程职业技术学院", + "12490": "黑龙江艺术职业学院", + "12493": "上海行健职业学院", + "12495": "上海城建职业学院", + "12497": "上海交通职业技术学院", + "12498": "上海海事职业技术学院", + "12499": "上海电子信息职业技术学院", + "12510": "陕西能源职业技术学院", + "12511": "甘肃建筑职业技术学院", + "12514": "新疆轻工职业技术学院", + "12539": "酒泉职业技术学院", + "12543": "保定职业技术学院", + "12544": "宁夏理工学院", + "12555": "云南农业职业技术学院", + "12556": "云南司法警官职业学院", + "12558": "云南文化艺术职业学院", + "12559": "云南体育运动职业技术学院", + "12560": "云南经济管理学院", + "12561": "北京财贸职业学院", + "12562": "青海卫生职业技术学院", + "12564": "北京北大方正软件职业技术学院", + "12565": "北京经贸职业学院", + "12566": "北京经济技术职业学院", + "12567": "北京戏曲艺术职业学院", + "12568": "北京汇佳职业学院", + "12569": "北京现代职业技术学院", + "12570": "新疆能源职业技术学院", + "12572": "广东科学技术职业学院", + "12573": "广东食品药品职业学院", + "12574": "广东东软学院", + "12575": "广州康大职业技术学院", + "12576": "珠海艺术职业学院", + "12577": "广东行政职业学院", + "12578": "广东体育职业技术学院", + "12581": "河南工业和信息化职业学院", + "12582": "河南水利与环境职业学院", + "12583": "上海震旦职业学院", + "12584": "上海民远职业技术学院", + "12586": "上海思博职业技术学院", + "12587": "上海立达学院", + "12588": "上海工艺美术职业学院", + "12591": "辽宁体育运动职业技术学院", + "12592": "辽宁职业学院", + "12593": "辽宁生态工程职业学院", + "12594": "沈阳职业技术学院", + "12595": "辽宁理工职业大学", + "12596": "保险职业学院", + "12597": "湖南外贸职业学院", + "12598": "湖南网络工程职业学院", + "12599": "湘潭大学兴湘学院", + "12600": "邵阳职业技术学院", + "12601": "湖南司法警官职业学院", + "12603": "长沙商贸旅游职业技术学院", + "12604": "湖南工业大学科技学院", + "12605": "重庆三峡职业学院", + "12606": "重庆工贸职业技术学院", + "12607": "重庆机电职业技术大学", + "12608": "重庆工程学院", + "12609": "重庆电子工程职业学院", + "12616": "重庆城市科技学院", + "12617": "华南理工大学广州学院", + "12618": "广州大学华软软件学院", + "12619": "广州南方学院", + "12620": "广东外语外贸大学南国商学院", + "12621": "广东财经大学华商学院", + "12622": "湛江科技学院", + "12623": "华南农业大学珠江学院", + "12625": "福建林业职业技术学院", + "12626": "福建信息职业技术学院", + "12627": "福建水利电力职业技术学院", + "12628": "福建电力职业技术学院", + "12629": "厦门海洋职业技术学院", + "12630": "福建农业职业技术学院", + "12631": "厦门医学院", + "12633": "福建卫生职业技术学院", + "12634": "泉州医学高等专科学校", + "12635": "成都职业技术学院", + "12636": "成都东软学院", + "12637": "四川化工职业技术学院", + "12638": "四川水利职业技术学院", + "12639": "南充职业技术学院", + "12640": "内江职业技术学院", + "12641": "四川航天职业技术学院", + "12642": "四川邮电职业技术学院", + "12645": "宁波城市职业技术学院", + "12647": "浙江同济科技职业学院", + "12649": "湖南科技大学潇湘学院", + "12650": "南华大学船山学院", + "12651": "湘潭理工学院", + "12652": "湖南师范大学树达学院", + "12653": "湖南农业大学东方科技学院", + "12656": "中南林业科技大学涉外学院", + "12657": "湖南文理学院芙蓉学院", + "12658": "湖南理工学院南湖学院", + "12659": "衡阳师范学院南岳学院", + "12660": "湖南工程学院应用技术学院", + "12661": "湖南中医药大学湘杏学院", + "12662": "吉首大学张家界学院", + "12664": "辽宁省残疾人中等职业技术学校", + "12668": "广州理工学院", + "12670": "呼和浩特职业学院", + "12671": "包头轻工职业技术学院", + "12673": "内蒙古电子信息职业技术学院", + "12674": "内蒙古机电职业技术学院", + "12675": "内蒙古化工职业学院", + "12676": "内蒙古商贸职业学院", + "12677": "锡林郭勒职业学院", + "12678": "江苏联合职业技术学院", + "12679": "江苏海事职业技术学院", + "12680": "应天职业技术学院", + "12681": "无锡科技职业学院", + "12682": "江苏医药职业学院", + "12683": "扬州环境资源职业技术学院", + "12684": "南通科技职业学院", + "12685": "苏州经贸职业技术学院", + "12686": "苏州工业职业技术学院", + "12687": "苏州托普信息职业技术学院", + "12688": "苏州卫生职业技术学院", + "12689": "东南大学成贤学院", + "12702": "无锡商业职业技术学院", + "12703": "江苏航运职业技术学院", + "12704": "山西艺术职业学院", + "12708": "福州英华职业学院", + "12709": "厦门华厦学院", + "12710": "闽南理工学院", + "12711": "泉州纺织服装职业学院", + "12712": "西安欧亚学院", + "12713": "西安外事学院", + "12714": "西安翻译学院", + "12715": "西京学院", + "12716": "宁夏民族职业技术学院", + "12717": "三亚城市职业学院", + "12718": "大庆职业学院", + "12719": "天津渤海职业技术学院", + "12720": "天津电子信息职业技术学院", + "12721": "天津机电职业技术学院", + "12722": "天津现代职业技术学院", + "12723": "天津公安警官职业学院", + "12724": "黑龙江林业职业技术学院", + "12725": "黑龙江农业职业技术学院", + "12726": "黑龙江农业工程职业学院", + "12727": "黑龙江农垦职业学院", + "12728": "黑龙江司法警官职业学院", + "12729": "齐齐哈尔工程学院", + "12730": "大连商务职业学院", + "12732": "天津轻工职业技术学院", + "12733": "北京科技经营管理学院", + "12734": "新疆警察学院", + "12735": "铁道警察学院", + "12736": "广东职业技术学院", + "12737": "荆州职业技术学院", + "12738": "武汉工程职业技术学院", + "12739": "湖南环境生物职业技术学院", + "12740": "仙桃职业学院", + "12741": "广东建设职业技术学院", + "12742": "广东女子职业技术学院", + "12743": "广东机电职业技术学院", + "12744": "湖北轻工职业技术学院", + "12745": "商丘职业技术学院", + "12746": "郑州科技学院", + "12747": "郑州工业应用技术学院", + "12748": "平顶山工业职业技术学院", + "12749": "广东岭南职业技术学院", + "12750": "周口职业技术学院", + "12751": "四川机电职业技术学院", + "12752": "湖北交通职业技术学院", + "12753": "绵阳职业技术学院", + "12754": "重庆海联职业技术学院", + "12755": "重庆信息技术职业学院", + "12756": "重庆传媒职业学院", + "12757": "重庆警察学院", + "12758": "重庆城市管理职业学院", + "12759": "重庆工程职业技术学院", + "12761": "四川交通职业技术学院", + "12762": "四川工商职业技术学院", + "12763": "四川工程职业技术学院", + "12764": "四川建筑职业技术学院", + "12765": "汕尾职业技术学院", + "12766": "江西工程学院", + "12767": "达州职业技术学院", + "12768": "济源职业技术学院", + "12770": "罗定职业技术学院", + "12771": "阳江职业技术学院", + "12772": "河源职业技术学院", + "12773": "秦皇岛职业技术学院", + "12774": "晋城职业技术学院", + "12775": "山西建筑职业技术学院", + "12776": "山西药科职业学院", + "12778": "山西交通职业技术学院", + "12779": "山西应用科技学院", + "12780": "大同煤炭职业技术学院", + "12781": "河南司法警官职业学院", + "12782": "石家庄工程职业学院", + "12783": "石家庄城市经济职业学院", + "12784": "河北传媒学院", + "12785": "唐山职业技术学院", + "12786": "衡水职业技术学院", + "12787": "唐山工业职业技术学院", + "12788": "天津商务职业学院", + "12789": "浙江工商职业技术学院", + "12790": "台州职业技术学院", + "12791": "浙江工贸职业技术学院", + "12792": "浙江越秀外国语学院", + "12793": "鹤壁职业技术学院", + "12794": "河南工业职业技术学院", + "12795": "南昌理工学院", + "12796": "河北工程技术学院", + "12797": "内蒙古警察职业学院", + "12798": "上海济光职业技术学院", + "12799": "上海建桥学院", + "12800": "上海工商外国语职业学院", + "12801": "上海科学技术职业学院", + "12802": "吉利学院", + "12803": "天津国土资源和房屋职业学院", + "12804": "南京交通职业技术学院", + "12805": "江苏电子信息职业学院", + "12806": "江苏农牧科技职业学院", + "12807": "常州纺织服装职业技术学院", + "12808": "苏州农业职业技术学院", + "12809": "苏州工业园区职业技术学院", + "12810": "安徽文达信息工程学院", + "12811": "安徽工贸职业技术学院", + "12812": "宿州职业技术学院", + "12813": "六安职业技术学院", + "12814": "安徽电子信息职业技术学院", + "12815": "民办合肥经济技术职业学院", + "12816": "安徽交通职业技术学院", + "12817": "安徽体育运动职业技术学院", + "12818": "滨州职业学院", + "12819": "山东科技职业学院", + "12820": "重庆建筑科技职业学院", + "12821": "安顺职业技术学院", + "12822": "黔东南民族职业技术学院", + "12823": "黔南民族职业技术学院", + "12824": "遵义职业技术学院", + "12825": "云南科技信息职业学院", + "12826": "西双版纳职业技术学院", + "12827": "陕西国防工业职业技术学院", + "12828": "西安航空职业技术学院", + "12829": "陕西财经职业技术学院", + "12830": "陕西交通职业技术学院", + "12831": "陕西职业技术学院", + "12832": "兰州外语职业学院", + "12833": "兰州职业技术学院", + "12834": "甘肃警察职业学院", + "12835": "甘肃林业职业技术学院", + "12836": "甘肃工业职业技术学院", + "12837": "宁夏工业职业学院", + "12838": "昌吉职业技术学院", + "12841": "山东服装职业学院", + "12842": "德州科技职业学院", + "12843": "潍坊科技学院", + "12844": "山东力明科技职业学院", + "12845": "湖南邮电职业技术学院", + "12846": "湘潭医卫职业技术学院", + "12847": "郴州职业技术学院", + "12848": "娄底职业技术学院", + "12849": "张家界航空工业职业技术学院", + "12850": "贵州城市职业学院", + "12851": "昆明艺术职业学院", + "12852": "青海警官职业学院", + "12860": "浙江医药高等专科学校", + "12861": "浙江机电职业技术学院", + "12862": "浙江建设职业技术学院", + "12863": "浙江艺术职业学院", + "12864": "浙江经贸职业技术学院", + "12865": "浙江商业职业技术学院", + "12866": "浙江经济职业技术学院", + "12867": "浙江旅游职业学院", + "12868": "浙江育英职业技术学院", + "12869": "浙江警官职业学院", + "12870": "浙江金融职业学院", + "12871": "浙江工业职业技术学院", + "12872": "杭州职业技术学院", + "12874": "嘉兴职业技术学院", + "12875": "湖州职业技术学院", + "12876": "绍兴职业技术学院", + "12877": "衢州职业技术学院", + "12878": "丽水职业技术学院", + "12880": "天津医学高等专科学校", + "12881": "天津开发区职业技术学院", + "12882": "天津艺术职业学院", + "12883": "天津交通职业学院", + "12884": "邢台医学高等专科学校", + "12885": "河北艺术职业学院", + "12887": "河北旅游职业学院", + "12888": "山西机电职业技术学院", + "12890": "山西财贸职业技术学院", + "12891": "山西林业职业技术学院", + "12892": "山西水利职业技术学院", + "12893": "阳泉职业技术学院", + "12894": "内蒙古体育职业学院", + "12895": "辽宁金融职业学院", + "12896": "辽宁轨道交通职业学院", + "12897": "辽宁广告职业学院", + "12898": "辽宁机电职业技术学院", + "12899": "辽宁经济职业技术学院", + "12900": "辽宁石化职业技术学院", + "12901": "吉林司法警官职业学院", + "12902": "吉林电子信息职业技术学院", + "12903": "吉林工业职业技术学院", + "12904": "吉林工程职业学院", + "12905": "鹤岗师范高等专科学校", + "12906": "哈尔滨电力职业技术学院", + "12907": "哈尔滨铁道职业技术学院", + "12908": "大兴安岭职业学院", + "12910": "黑龙江农业经济职业学院", + "12911": "哈尔滨职业技术学院", + "12912": "上海农林职业技术学院", + "12913": "上海邦德职业技术学院", + "12914": "上海兴伟学院", + "12915": "上海中侨职业技术大学", + "12917": "泰州学院", + "12918": "太湖创意职业技术学院", + "12919": "炎黄职业技术学院", + "12920": "南京科技职业学院", + "12921": "正德职业技术学院", + "12922": "钟山职业技术学院", + "12923": "无锡南洋职业技术学院", + "12924": "安徽中医药高等专科学校", + "12925": "安徽医学高等专科学校", + "12926": "亳州学院", + "12927": "泉州华光职业学院", + "12928": "泉州职业技术大学", + "12929": "江西司法警官职业学院", + "12930": "江西陶瓷工艺美术职业技术学院", + "12931": "渤海船舶职业学院", + "12932": "江西旅游商贸职业学院", + "12933": "江西电力职业技术学院", + "12934": "江西环境工程职业学院", + "12936": "江西艺术职业学院", + "12937": "鹰潭职业技术学院", + "12938": "江西应用科技学院", + "12939": "江西信息应用职业技术学院", + "12940": "江西交通职业技术学院", + "12941": "江西财经职业学院", + "12942": "江西应用技术职业学院", + "12943": "江西现代职业技术学院", + "12944": "江西工业工程职业技术学院", + "12945": "山东圣翰财贸职业学院", + "12946": "山东水利职业学院", + "12947": "山东畜牧兽医职业学院", + "12948": "郑州澍青医学高等专科学校", + "12949": "郑州师范学院", + "12950": "焦作师范高等专科学校", + "12951": "湖北中医药高等专科学校", + "12952": "武汉航海职业技术学院", + "12953": "广东邮电职业技术学院", + "12954": "汕头职业技术学院", + "12956": "揭阳职业技术学院", + "12957": "深圳信息职业技术学院", + "12958": "清远职业技术学院", + "12959": "广东工贸职业技术学院", + "12960": "广东司法警官职业学院", + "12961": "广东亚视演艺职业学院", + "12962": "广东省外语艺术职业学院", + "12963": "四川托普信息技术职业学院", + "12964": "四川国际标榜职业学院", + "12965": "成都农业科技职业学院", + "12966": "宜宾职业技术学院", + "12967": "泸州职业技术学院", + "12968": "眉山职业技术学院", + "12969": "成都艺术职业大学", + "12970": "四川职业技术学院", + "12971": "玉溪农业职业技术学院", + "12972": "青海畜牧兽医职业技术学院", + "12973": "青海交通职业技术学院", + "12974": "青海建筑职业技术学院", + "12975": "伊犁职业技术学院", + "12976": "江西机电职业技术学院", + "12977": "武汉铁路职业技术学院", + "12978": "武汉软件工程职业学院", + "12979": "湖北三峡职业技术学院", + "12980": "随州职业技术学院", + "12981": "武汉电力职业技术学院", + "12982": "湖北水利水电职业技术学院", + "12983": "湖北城市建设职业技术学院", + "12984": "武汉警官职业学院", + "12985": "湖北生物科技职业学院", + "12986": "湖北开放职业学院", + "12987": "武汉科技职业学院", + "12988": "武汉外语外事职业学院", + "12989": "武汉信息传播职业技术学院", + "12990": "武昌职业学院", + "12991": "武汉商贸职业学院", + "12992": "闽南科技学院", + "12993": "福州工商学院", + "13001": "宁波财经学院", + "13002": "浙江东方职业技术学院", + "13003": "义乌工商职业技术学院", + "13005": "青岛飞洋职业技术学院", + "13006": "山东英才学院", + "13007": "东营科技职业学院", + "13008": "山东交通职业学院", + "13009": "淄博职业学院", + "13010": "山东外贸职业学院", + "13011": "青岛酒店管理职业技术学院", + "13012": "山东信息职业技术学院", + "13014": "青岛港湾职业技术学院", + "13015": "青岛恒星科技学院", + "13017": "江南影视艺术职业学院", + "13021": "浙大城市学院", + "13022": "浙大宁波理工学院", + "13023": "杭州医学院", + "13025": "浙江纺织服装职业技术学院", + "13026": "杭州科技职业技术学院", + "13027": "浙江长征职业技术学院", + "13028": "嘉兴南洋职业技术学院", + "13029": "浙江广厦建设职业技术大学", + "13030": "杭州万向职业技术学院", + "13031": "长沙环境保护职业技术学院", + "13032": "湖南艺术职业学院", + "13033": "湖南机电职业技术学院", + "13036": "长沙职业技术学院", + "13037": "怀化职业技术学院", + "13038": "岳阳职业技术学院", + "13039": "常德职业技术学院", + "13041": "长沙南方职业学院", + "13042": "潇湘职业学院", + "13043": "湖南化工职业技术学院", + "13044": "湖南城建职业技术学院", + "13045": "湖南石油化工职业技术学院", + "13048": "乐山职业技术学院", + "13049": "雅安职业技术学院", + "13052": "贵州工业职业技术学院", + "13053": "贵州电力职业技术学院", + "13054": "六盘水职业技术学院", + "13055": "铜仁职业技术学院", + "13058": "合肥职业技术学院", + "13059": "滁州职业技术学院", + "13060": "池州职业技术学院", + "13061": "宣城职业技术学院", + "13062": "安徽广播影视职业技术学院", + "13064": "民办合肥滨湖职业技术学院", + "13065": "安徽外国语学院", + "13070": "石家庄财经职业学院", + "13071": "河北交通职业技术学院", + "13072": "河北化工医药职业技术学院", + "13073": "石家庄信息工程职业学院", + "13074": "河北对外经贸职业学院", + "13075": "河北美术学院", + "13086": "宁夏职业技术学院", + "13087": "宁夏工商职业技术学院", + "13088": "宁夏财经职业技术学院", + "13089": "宁夏警官职业学院", + "13093": "阿克苏职业技术学院", + "13094": "巴音郭楞职业技术学院", + "13100": "金肯职业技术学院", + "13101": "常州工业职业技术学院", + "13102": "常州工程职业技术学院", + "13103": "江苏农林职业技术学院", + "13104": "江苏食品药品职业技术学院", + "13105": "建东职业技术学院", + "13106": "南京铁道职业技术学院", + "13107": "徐州工业职业技术学院", + "13108": "江苏信息职业技术学院", + "13110": "宿迁职业技术学院", + "13112": "南京信息职业技术学院", + "13113": "江海职业技术学院", + "13114": "常州机电职业技术学院", + "13115": "厦门工学院", + "13121": "西安思源学院", + "13122": "西安高新科技职业学院", + "13123": "陕西国际商贸学院", + "13124": "西安城市建设职业学院", + "13125": "陕西服装工程学院", + "13136": "云南能源职业技术学院", + "13137": "江阴职业技术学院", + "13138": "广西建设职业技术学院", + "13151": "宁夏建设职业技术学院", + "13161": "长春职业技术学院", + "13171": "临汾职业技术学院", + "13177": "北京师范大学珠海分校", + "13188": "武汉晴川学院", + "13198": "大连理工大学城市学院", + "13201": "沈阳工学院", + "13203": "大连工业大学艺术与信息工程学院", + "13207": "大连科技学院", + "13208": "沈阳城市建设学院", + "13212": "大连医科大学中山学院", + "13213": "锦州医科大学医疗学院", + "13215": "辽宁师范大学海华学院", + "13217": "辽宁理工学院", + "13218": "大连财经学院", + "13220": "沈阳城市学院", + "13234": "湖北大学知行学院", + "13235": "武汉科技大学城市学院", + "13236": "三峡大学科技学院", + "13237": "武汉文理学院", + "13238": "湖北工业大学工程技术学院", + "13239": "武汉工程大学邮电与信息工程学院", + "13240": "武汉纺织大学外经贸学院", + "13241": "武昌工学院", + "13242": "武汉工商学院", + "13245": "长江大学工程技术学院", + "13246": "长江大学文理学院", + "13247": "湖北商贸学院", + "13248": "湖北汽车工业学院科技学院", + "13249": "湖北医药学院药护学院", + "13250": "湖北民族大学科技学院", + "13251": "湖北经济学院法商学院", + "13253": "武汉体育学院体育科技学院", + "13256": "湖北师范大学文理学院", + "13257": "湖北文理学院理工学院", + "13258": "湖北工程学院新技术学院", + "13262": "文华学院", + "13263": "湖北艺术职业学院", + "13264": "武汉交通职业学院", + "13265": "咸宁职业技术学院", + "13266": "长江工程职业技术学院", + "13275": "浙江工业大学之江学院", + "13276": "浙江师范大学行知学院", + "13277": "宁波大学科学技术学院", + "13279": "杭州电子科技大学信息工程学院", + "13280": "浙江理工大学科技与艺术学院", + "13282": "浙江海洋大学东海科学技术学院", + "13283": "浙江农林大学暨阳学院", + "13284": "温州医科大学仁济学院", + "13285": "浙江中医药大学滨江学院", + "13286": "杭州师范大学钱江学院", + "13287": "湖州学院", + "13288": "绍兴文理学院元培学院", + "13289": "温州理工学院", + "13290": "浙江工商大学杭州商学院", + "13291": "嘉兴南湖学院", + "13292": "中国计量大学现代科技学院", + "13294": "浙江财经大学东方学院", + "13296": "黑龙江外国语学院", + "13298": "黑龙江财经学院", + "13299": "哈尔滨石油学院", + "13300": "黑龙江工商学院", + "13301": "哈尔滨远东理工学院", + "13302": "哈尔滨传媒职业学院", + "13303": "哈尔滨剑桥学院", + "13304": "黑龙江工程学院昆仑旅游学院", + "13306": "哈尔滨广厦学院", + "13307": "哈尔滨华德学院", + "13316": "山东胜利职业学院", + "13317": "山东经贸职业学院", + "13318": "山东工业职业学院", + "13319": "山东化工职业学院", + "13320": "青岛黄海学院", + "13321": "青岛求实职业技术学院", + "13322": "山东现代学院", + "13323": "济南职业学院", + "13324": "山东协和学院", + "13325": "宁夏大学新华学院", + "13326": "云南大学滇池学院", + "13328": "云南大学旅游文化学院", + "13329": "昆明理工大学津桥学院", + "13330": "云南师范大学商学院", + "13331": "昆明文理学院", + "13332": "昆明医科大学海源学院", + "13333": "云南艺术学院文华学院", + "13336": "安徽电气工程职业技术学院", + "13337": "安徽冶金科技职业学院", + "13338": "安徽城市管理职业学院", + "13339": "安徽机电职业技术学院", + "13340": "安徽工商职业学院", + "13341": "安徽中澳科技职业学院", + "13342": "阜阳科技职业学院", + "13343": "亳州职业技术学院", + "13344": "安徽国防科技职业学院", + "13345": "安庆职业技术学院", + "13346": "安徽艺术职业学院", + "13355": "烟台工程职业技术学院", + "13356": "山东工程职业技术大学", + "13359": "烟台理工学院", + "13373": "聊城大学东昌学院", + "13378": "青岛城市学院", + "13379": "潍坊理工学院", + "13383": "山东财经大学燕山学院", + "13386": "山东石油化工学院", + "13387": "山东外国语职业技术大学", + "13388": "潍坊工商职业学院", + "13389": "德州职业技术学院", + "13390": "枣庄科技职业学院", + "13391": "河北科技学院", + "13392": "保定电力职业技术学院", + "13393": "河北机电职业技术学院", + "13394": "渤海石油职业学院", + "13395": "廊坊职业技术学院", + "13396": "唐山科技职业技术学院", + "13397": "石家庄邮电职业技术学院", + "13398": "河北公安警察职业学院", + "13399": "石家庄工商职业学院", + "13400": "石家庄理工职业学院", + "13401": "石家庄医学高等专科学校", + "13402": "河北外国语学院", + "13403": "石家庄科技信息职业学院", + "13404": "河北大学工商学院", + "13408": "华北理工大学轻工学院", + "13409": "河北科技大学理工学院", + "13411": "河北师范大学汇华学院", + "13414": "河北经贸大学经济管理学院", + "13415": "河北医科大学临床学院", + "13417": "华北电力大学科技学院", + "13418": "江西服装学院", + "13419": "江西科技职业学院", + "13420": "南昌职业大学", + "13421": "南昌工学院", + "13422": "江西外语外贸职业学院", + "13423": "江西工业贸易职业技术学院", + "13424": "宜春职业技术学院", + "13425": "江西应用工程职业学院", + "13426": "江西生物科技职业学院", + "13427": "江西建设职业技术学院", + "13428": "抚州职业技术学院", + "13429": "南昌大学科学技术学院", + "13430": "南昌大学共青学院", + "13431": "华东交通大学理工学院", + "13432": "东华理工大学长江学院", + "13433": "南昌航空大学科技学院", + "13434": "江西理工大学应用科学学院", + "13435": "景德镇艺术职业大学", + "13436": "江西农业大学南昌商学院", + "13437": "江西中医药大学科技学院", + "13438": "江西师范大学科学技术学院", + "13439": "赣南师范大学科技学院", + "13440": "江西科技师范大学理工学院", + "13441": "江西财经大学现代经济管理学院", + "13447": "黑龙江生物科技职业学院", + "13448": "黑龙江商业职业学院", + "13449": "黑龙江公安警官职业学院", + "13450": "黑龙江信息技术职业学院", + "13451": "哈尔滨城市职业学院", + "13453": "黑龙江农垦科技职业学院", + "13468": "阳光学院", + "13469": "厦门大学嘉庚学院", + "13470": "福州大学至诚学院", + "13471": "集美大学诚毅学院", + "13472": "福建师范大学协和学院", + "13497": "郑州财经学院", + "13498": "黄河交通学院", + "13499": "河南检察职业学院", + "13500": "商丘工学院", + "13501": "河南大学民生学院", + "13502": "中原科技学院", + "13503": "信阳学院", + "13504": "安阳学院", + "13505": "新乡医学院三全学院", + "13506": "新乡工程学院", + "13507": "郑州工商学院", + "13508": "郑州经贸学院", + "13510": "西北师范大学知行学院", + "13511": "兰州工商学院", + "13512": "兰州财经大学长青学院", + "13514": "兰州博文科技学院", + "13515": "兰州信息科技学院", + "13518": "武威职业学院", + "13519": "甘肃交通职业技术学院", + "13520": "广西警察学院", + "13522": "广西现代职业技术学院", + "13523": "北海职业学院", + "13524": "北海艺术设计学院", + "13526": "桂林山水职业学院", + "13528": "山西职业技术学院", + "13530": "山西金融职业学院", + "13532": "太原城市职业技术学院", + "13533": "山西大学商务学院", + "13534": "山西工学院", + "13535": "山西农业大学信息学院", + "13537": "山西师范大学现代文理学院", + "13538": "中北大学信息商务学院", + "13541": "山西信息职业技术学院", + "13548": "重庆人文科技学院", + "13558": "新疆理工学院", + "13559": "新疆农业大学科学技术学院", + "13560": "新疆第二医学院", + "13561": "新疆科技学院", + "13562": "新疆建设职业技术学院", + "13564": "河南质量工程职业学院", + "13565": "郑州信息科技职业学院", + "13566": "陕西铁路工程职业技术学院", + "13567": "宝鸡职业技术学院", + "13568": "陕西航空职业技术学院", + "13569": "西安交通工程学院", + "13570": "陕西电子信息职业技术学院", + "13571": "无锡太湖学院", + "13573": "金陵科技学院", + "13575": "海南软件职业技术学院", + "13576": "海南政法职业学院", + "13577": "海南外国语职业学院", + "13578": "河北工程大学科信学院", + "13579": "中国矿业大学徐海学院", + "13584": "河北工业大学城市学院", + "13588": "重庆外语外事学院", + "13589": "重庆对外经贸学院", + "13590": "重庆财经学院", + "13591": "重庆工商大学派斯学院", + "13592": "燕山大学里仁学院", + "13593": "石家庄铁道大学四方学院", + "13594": "河北地质大学华信学院", + "13595": "河北农业大学现代科技学院", + "13596": "华北理工大学冀唐学院", + "13597": "太原科技大学华科学院", + "13598": "山西医科大学晋祠学院", + "13599": "大连艺术学院", + "13600": "长春光华学院", + "13601": "长春工业大学人文信息学院", + "13602": "长春理工大学光电信息学院", + "13603": "长春财经学院", + "13604": "吉林建筑科技学院", + "13605": "长春建筑学院", + "13606": "长春科技学院", + "13607": "吉林动画学院", + "13608": "山西财经大学华商学院", + "13609": "辽宁中医药大学杏林学院", + "13610": "辽宁何氏医学院", + "13611": "蚌埠工商学院", + "13612": "安徽大学江淮学院", + "13613": "安徽信息工程学院", + "13614": "马鞍山学院", + "13615": "合肥城市学院", + "13616": "合肥经济学院", + "13617": "安徽师范大学皖江学院", + "13618": "安徽医科大学临床医学院", + "13619": "阜阳师范大学信息工程学院", + "13620": "淮北理工学院", + "13621": "沈阳科技学院", + "13622": "吉林师范大学博达学院", + "13623": "长春大学旅游学院", + "13624": "泰山科技学院", + "13627": "重庆移通学院", + "13628": "新疆政法学院", + "13629": "首都师范大学科德学院", + "13630": "北京工商大学嘉华学院", + "13631": "大连东软信息学院", + "13632": "上海视觉艺术学院", + "13634": "武汉学院", + "13635": "长沙理工大学城南学院", + "13636": "上海外国语大学贤达经济人文学院", + "13637": "温州商学院", + "13638": "广西大学行健文理学院", + "13639": "柳州工学院", + "13640": "广西民族大学相思湖学院", + "13641": "广西师范大学漓江学院", + "13642": "南宁师范大学师园学院", + "13643": "广西中医药大学赛恩斯新医药学院", + "13644": "桂林电子科技大学信息科技学院", + "13645": "桂林理工大学博文管理学院", + "13646": "南京大学金陵学院", + "13647": "贵州中医药大学时珍学院", + "13648": "贵州财经大学商务学院", + "13649": "贵州大学科技学院", + "13650": "贵州大学明德学院", + "13651": "贵州民族大学人文科技学院", + "13652": "贵州师范大学求是学院", + "13653": "遵义医科大学医学与科技学院", + "13654": "南京理工大学紫金学院", + "13655": "南京航空航天大学金城学院", + "13656": "广州华立学院", + "13657": "广州大学松田学院", + "13658": "天津外国语大学滨海外事学院", + "13659": "天津体育学院运动与文化艺术学院", + "13660": "天津商业大学宝德学院", + "13661": "天津医科大学临床医学院", + "13662": "东北师范大学人文学院", + "13663": "南开大学滨海学院", + "13664": "武汉工程科技学院", + "13665": "电子科技大学成都学院", + "13666": "武汉华夏理工学院", + "13667": "广州商学院", + "13668": "成都理工大学工程技术学院", + "13669": "四川传媒学院", + "13670": "成都银杏酒店管理学院", + "13671": "成都文理学院", + "13672": "四川工商学院", + "13673": "四川外国语大学成都学院", + "13674": "青海大学昆仑学院", + "13675": "北京理工大学珠海学院", + "13676": "贵州医科大学神奇民族医药学院", + "13677": "西安交通大学城市学院", + "13678": "西北大学现代学院", + "13679": "西安建筑科技大学华清学院", + "13680": "西安财经大学行知学院", + "13681": "陕西科技大学镐京学院", + "13682": "西安工商学院", + "13683": "延安大学西安创新学院", + "13684": "珠海科技学院", + "13685": "西安电子科技大学长安学院", + "13686": "武汉传媒学院", + "13687": "南京传媒学院", + "13688": "浙江邮电职业技术学院", + "13690": "河北司法警官职业学院", + "13691": "山西工商学院", + "13692": "山西体育职业学院", + "13693": "山西警官职业学院", + "13694": "山西国际商务职业学院", + "13695": "潞安职业技术学院", + "13696": "太原旅游职业学院", + "13697": "山西旅游职业学院", + "13698": "山西管理职业学院", + "13699": "乌兰察布职业学院", + "13700": "天津工业职业学院", + "13701": "天津石油职业技术学院", + "13702": "天津城市职业学院", + "13703": "北京科技职业学院", + "13705": "成都医学院", + "13706": "吉林医药学院", + "13707": "广东文艺职业学院", + "13708": "广州体育职业技术学院", + "13709": "广州工程技术职业学院", + "13710": "中山火炬职业技术学院", + "13711": "江门职业技术学院", + "13712": "茂名职业技术学院", + "13713": "珠海城市职业技术学院", + "13714": "广州工商学院", + "13715": "广州涉外经济职业技术学院", + "13716": "广州南洋理工职业学院", + "13717": "广州科技职业技术大学", + "13718": "惠州经济职业技术学院", + "13719": "广东科技学院", + "13720": "广东理工学院", + "13721": "广东工商职业技术大学", + "13726": "新疆现代职业技术学院", + "13727": "新疆天山职业技术大学", + "13728": "北京培黎职业学院", + "13729": "黑龙江旅游职业技术学院", + "13730": "黑龙江三江美术职业学院", + "13731": "黑龙江生态工程职业学院", + "13732": "黑龙江能源职业学院", + "13734": "重庆城市职业学院", + "13735": "重庆水利电力职业技术学院", + "13736": "陕西邮电职业技术学院", + "13737": "西安海棠职业学院", + "13738": "西安汽车职业大学", + "13739": "西安健康工程职业学院", + "13740": "通辽职业学院", + "13741": "科尔沁艺术职业学院", + "13742": "宁波卫生职业技术学院", + "13743": "白城医学高等专科学校", + "13744": "黑河学院", + "13745": "山西电力职业技术学院", + "13746": "台州科技职业学院", + "13747": "上海电影艺术职业学院", + "13748": "无锡城市职业技术学院", + "13749": "无锡工艺职业技术学院", + "13750": "金山职业技术学院", + "13751": "苏州健雄职业技术学院", + "13752": "盐城工业职业技术学院", + "13753": "江苏财经职业技术学院", + "13754": "扬州工业职业技术学院", + "13756": "云南国防工业职业技术学院", + "13757": "云南机电职业技术学院", + "13758": "云南林业职业技术学院", + "13759": "云南城市建设职业学院", + "13760": "马鞍山师范高等专科学校", + "13761": "云南工程职业学院", + "13762": "福州外语外贸学院", + "13763": "福建江夏学院", + "13764": "闽北职业技术学院", + "13765": "福州黎明职业技术学院", + "13766": "泉州信息工程学院", + "13767": "厦门演艺职业学院", + "13768": "厦门华天涉外职业技术学院", + "13769": "福州科技职业技术学院", + "13770": "泉州经贸职业技术学院", + "13772": "湄洲湾职业技术学院", + "13773": "福州理工学院", + "13774": "豫章师范学院", + "13775": "江西中医药高等专科学校", + "13776": "江西软件职业技术大学", + "13777": "淄博师范高等专科学校", + "13778": "山东中医药高等专科学校", + "13779": "沧州医学高等专科学校", + "13780": "漯河医学高等专科学校", + "13781": "南阳医学高等专科学校", + "13782": "商丘医学高等专科学校", + "13783": "郑州电子信息职业技术学院", + "13784": "信阳职业技术学院", + "13785": "嵩山少林武术职业学院", + "13786": "郑州工业安全职业学院", + "13787": "永城职业学院", + "13788": "河南经贸职业学院", + "13789": "河南交通职业技术学院", + "13790": "河南农业职业学院", + "13791": "郑州旅游职业学院", + "13792": "郑州职业技术学院", + "13793": "江汉艺术职业学院", + "13795": "武汉工业职业技术学院", + "13796": "武汉民政职业学院", + "13797": "湖北黄冈应急管理职业技术学院", + "13798": "湖北财税职业学院", + "13799": "黄冈科技职业学院", + "13800": "湖北国土资源职业学院", + "13801": "湖北生态工程职业技术学院", + "13802": "湖南中医药高等专科学校", + "13804": "湖南民族职业学院", + "13805": "湘西民族职业技术学院", + "13806": "长沙师范学院", + "13807": "湖南财经工业职业技术学院", + "13808": "益阳职业技术学院", + "13809": "湖南应用技术学院", + "13810": "肇庆医学高等专科学校", + "13811": "琼台师范学院", + "13812": "四川商务职业学院", + "13813": "四川司法警官职业学院", + "13814": "广安职业技术学院", + "13815": "四川信息职业技术学院", + "13816": "四川工业科技学院", + "13817": "黔西南民族职业技术学院", + "13818": "贵州轻工职业技术学院", + "13819": "陕西警官职业学院", + "13820": "银川能源学院", + "13821": "忻州职业技术学院", + "13822": "河北女子职业技术学院", + "13824": "内蒙古交通职业技术学院", + "13827": "广西经贸职业技术学院", + "13828": "广西工商职业技术学院", + "13829": "广西演艺职业学院", + "13830": "广西外国语学院", + "13831": "广西电力职业技术学院", + "13836": "湖南信息学院", + "13842": "南京理工大学泰州科技学院", + "13843": "南京师范大学泰州学院", + "13844": "东莞城市学院", + "13845": "安徽财贸职业学院", + "13846": "安徽国际商务职业学院", + "13847": "安徽公安职业学院", + "13848": "安徽林业职业技术学院", + "13849": "安徽审计职业学院", + "13850": "安徽新闻出版职业技术学院", + "13851": "安徽邮电职业技术学院", + "13852": "安徽工业职业技术学院", + "13853": "浙江国际海运职业技术学院", + "13854": "浙江体育职业技术学院", + "13855": "济南工程职业技术学院", + "13856": "山东电子职业技术学院", + "13857": "山东华宇工学院", + "13858": "山东旅游职业学院", + "13859": "山东铝业职业学院", + "13860": "山东杏林科技职业学院", + "13861": "泰山职业技术学院", + "13862": "山西同文职业技术学院", + "13863": "天津铁道职业技术学院", + "13864": "包头钢铁职业技术学院", + "13866": "江西经济管理职业学院", + "13867": "江西制造职业技术学院", + "13868": "江西工程职业学院", + "13869": "江西青年职业学院", + "13870": "上饶职业技术学院", + "13871": "江西航空职业技术学院", + "13872": "江西农业工程职业学院", + "13873": "赣西科技职业学院", + "13874": "山东外事职业大学", + "13875": "海南经贸职业技术学院", + "13876": "海南工商职业学院", + "13885": "河南信息统计职业学院", + "13889": "河南林业职业学院", + "13891": "保定理工学院", + "13892": "三亚学院", + "13893": "上海师范大学天华学院", + "13894": "西安明德理工学院", + "13895": "燕京理工学院", + "13896": "天津师范大学津沽学院", + "13897": "天津理工大学中环信息学院", + "13898": "北京科技大学天津学院", + "13899": "北京中医药大学东方学院", + "13900": "辽宁财贸学院", + "13901": "北京邮电大学世纪学院", + "13902": "广州新华学院", + "13903": "四川大学锦城学院", + "13904": "北京工业大学耿丹学院", + "13905": "南京工业大学浦江学院", + "13906": "南京师范大学中北学院", + "13909": "云南工商学院", + "13911": "天津工艺美术职业学院", + "13912": "广州现代信息工程职业技术学院", + "13913": "晋中职业技术学院", + "13914": "山西华澳商贸职业学院", + "13915": "乌海职业技术学院", + "13916": "长春信息技术职业学院", + "13917": "松原职业技术学院", + "13918": "七台河职业学院", + "13919": "广东理工职业学院", + "13920": "广西城市职业大学", + "13921": "湖南工艺美术职业学院", + "13922": "湖南九嶷职业技术学院", + "13923": "湖南理工职业技术学院", + "13924": "湖南交通工程学院", + "13925": "湖南软件职业技术大学", + "13926": "新疆交通职业技术学院", + "13927": "广州华南商贸职业学院", + "13928": "广州华立科技职业学院", + "13929": "广州城市职业学院", + "13930": "广东工程职业技术学院", + "13931": "三亚航空旅游职业学院", + "13932": "陕西经济管理职业技术学院", + "13933": "兰州资源环境职业技术学院", + "13934": "山西运城农业职业技术学院", + "13935": "黑龙江民族职业学院", + "13936": "河南工业贸易职业学院", + "13937": "湖南汽车工程职业学院", + "13938": "长沙电力职业技术学院", + "13939": "湖南水利水电职业技术学院", + "13940": "湖南现代物流职业技术学院", + "13941": "湖南高速铁路职业技术学院", + "13942": "湖南铁路科技职业技术学院", + "13943": "广州铁路职业技术学院", + "13945": "西安铁路职业技术学院", + "13946": "咸阳职业技术学院", + "13947": "西安职业技术学院", + "13948": "商洛职业技术学院", + "13949": "汉中职业技术学院", + "13950": "延安职业技术学院", + "13951": "渭南职业技术学院", + "13952": "安康职业技术学院", + "13953": "铜川职业技术学院", + "13954": "甘肃农业职业技术学院", + "13955": "甘肃畜牧工程职业技术学院", + "13956": "新疆石河子职业技术学院", + "13957": "辽宁传媒学院", + "13958": "大连软件职业学院", + "13959": "大连翻译职业学院", + "13960": "辽宁商贸职业学院", + "13961": "大连枫叶职业技术学院", + "13962": "苏州百年职业学院", + "13963": "昆山登云科技职业学院", + "13964": "南京视觉艺术职业学院", + "13965": "江西卫生职业学院", + "13966": "山东药品食品职业学院", + "13967": "重庆工商职业学院", + "13968": "重庆应用技术职业学院", + "13969": "福建生物工程职业技术学院", + "13970": "福建艺术职业学院", + "13972": "福建幼儿师范高等专科学校", + "13973": "厦门城市职业学院", + "13975": "泉州工艺美术职业学院", + "13976": "三明医学科技职业学院", + "13977": "宁德职业技术学院", + "13978": "福州软件职业技术学院", + "13979": "厦门兴才职业技术学院", + "13980": "南京医科大学康达学院", + "13981": "南京中医药大学翰林学院", + "13982": "南京信息工程大学滨江学院", + "13983": "苏州大学文正学院", + "13984": "苏州大学应用技术学院", + "13985": "苏州科技大学天平学院", + "13986": "江苏大学京江学院", + "13987": "扬州大学广陵学院", + "13988": "江苏师范大学科文学院", + "13989": "南京邮电大学通达学院", + "13990": "南京财经大学红山学院", + "13991": "江苏科技大学苏州理工学院", + "13992": "常州大学怀德学院", + "13993": "南通大学杏林学院", + "13994": "南京审计大学金审学院", + "13995": "青岛工学院", + "13997": "青岛农业大学海都学院", + "13998": "齐鲁理工学院", + "13999": "山东财经大学东方学院", + "14000": "江苏城市职业学院", + "14001": "南京城市职业学院", + "14002": "烟台科技学院", + "14003": "商丘学院", + "14004": "四川文化传媒职业学院", + "14005": "四川华新现代职业学院", + "14006": "四川铁道职业学院", + "14007": "四川艺术职业学院", + "14008": "重庆三峡医药高等专科学校", + "14009": "重庆医药高等专科学校", + "14010": "四川中医药高等专科学校", + "14011": "遵义医药高等专科学校", + "14012": "曲靖医学高等专科学校", + "14013": "楚雄医药高等专科学校", + "14014": "保山中医药高等专科学校", + "14015": "丽江师范高等专科学校", + "14016": "德宏师范高等专科学校", + "14017": "大庆医学高等专科学校", + "14020": "天津城市建设管理职业技术学院", + "14021": "天津生物工程职业技术学院", + "14022": "天津海运职业学院", + "14025": "湖南安全技术职业学院", + "14026": "广西英华国际职业学院", + "14029": "陕西工商职业学院", + "14030": "西安信息职业大学", + "14031": "陕西旅游烹饪职业学院", + "14032": "云南新兴职业学院", + "14034": "长安大学兴华学院", + "14035": "武汉设计工程学院", + "14037": "西南财经大学天府学院", + "14038": "天津大学仁爱学院", + "14039": "四川大学锦江学院", + "14040": "郑州商学院", + "14041": "西安理工大学高科学院", + "14042": "西安科技大学高新学院", + "14043": "四川文化艺术学院", + "14045": "西南科技大学城市学院", + "14046": "福建农林大学金山学院", + "14047": "石家庄经济职业学院", + "14048": "内蒙古科技职业学院", + "14049": "内蒙古北方职业技术学院", + "14050": "赤峰职业技术学院", + "14051": "内蒙古经贸外语职业学院", + "14052": "吉林铁道职业技术学院", + "14053": "黑龙江交通职业技术学院", + "14055": "哈尔滨应用职业技术学院", + "14056": "南京机电职业技术学院", + "14058": "民办合肥财经职业学院", + "14059": "厦门软件职业技术学院", + "14060": "福建体育职业技术学院", + "14061": "三峡电力职业学院", + "14062": "郑州电力职业技术学院", + "14063": "广东科贸职业学院", + "14065": "广州科技贸易职业学院", + "14066": "中山职业技术学院", + "14067": "柳州城市职业学院", + "14068": "百色职业学院", + "14069": "重庆青年职业技术学院", + "14070": "四川科技职业学院", + "14071": "湖南电气职业技术学院", + "14072": "湖南外国语职业学院", + "14073": "北京经济管理职业学院", + "14075": "北京劳动保障职业学院", + "14076": "辽宁装备制造职业技术学院", + "14078": "山东商务职业学院", + "14079": "山东轻工职业学院", + "14080": "山东城市建设职业学院", + "14081": "烟台汽车工程职业学院", + "14082": "山东司法警官职业学院", + "14083": "贵阳护理职业学院", + "14085": "西藏职业技术学院", + "14086": "四川文化产业职业学院", + "14087": "天津财经大学珠江学院", + "14088": "温州科技职业学院", + "14089": "浙江汽车职业技术学院", + "14090": "浙江横店影视职业学院", + "14091": "四川财经职业学院", + "14092": "滇西科技师范学院", + "14093": "运城幼儿师范高等专科学校", + "14095": "黑龙江幼儿师范高等专科学校", + "14096": "安庆医药高等专科学校", + "14097": "益阳医学高等专科学校", + "14098": "合肥师范学院", + "14099": "湖北第二师范学院", + "14100": "山东政法学院", + "14101": "太原工业学院", + "14102": "天津广播影视职业学院", + "14103": "冀中职业学院", + "14105": "山西老区职业技术学院", + "14106": "辽宁地质工程职业学院", + "14107": "白城职业技术学院", + "14108": "哈尔滨科学技术职业学院", + "14110": "漳州城市职业学院", + "14111": "厦门南洋职业学院", + "14112": "厦门东海职业技术学院", + "14113": "漳州科技职业学院", + "14115": "漳州理工职业学院", + "14116": "武夷山职业学院", + "14117": "漳州卫生职业学院", + "14118": "菏泽家政职业学院", + "14119": "湖北科技职业学院", + "14120": "湖北青年职业学院", + "14121": "湖南都市职业学院", + "14122": "湖南电子科技职业学院", + "14123": "广州珠江职业技术学院", + "14125": "广州松田职业学院", + "14126": "广东文理职业学院", + "14127": "广西工程职业学院", + "14128": "重庆财经职业学院", + "14129": "贵阳职业技术学院", + "14130": "云南锡业职业技术学院", + "14131": "甘肃钢铁职业技术学院", + "14132": "安徽涉外经济职业学院", + "14133": "安徽绿海商务职业学院", + "14135": "合肥共达职业技术学院", + "14136": "广州城建职业学院", + "14137": "蚌埠经济技术职业学院", + "14138": "新疆职业大学", + "14139": "北京社会管理职业学院(民政部培训中心)", + "14140": "北京艺术传媒职业学院", + "14158": "石家庄人民医学高等专科学校", + "14160": "宿迁学院", + "14163": "苏州高博软件技术职业学院", + "14165": "民办安徽旅游职业学院", + "14166": "江西新能源科技职业学院", + "14167": "江西枫林涉外经贸职业学院", + "14168": "江西泰豪动漫职业学院", + "14169": "河南科技职业大学", + "14170": "广西理工职业技术学院", + "14171": "梧州职业学院", + "14172": "海南科技职业大学", + "14173": "重庆科创职业学院", + "14175": "四川城市职业学院", + "14176": "四川现代职业学院", + "14177": "山西经贸职业学院", + "14178": "佳木斯职业学院", + "14179": "上海体育职业学院", + "14180": "南京旅游职业学院", + "14181": "河南建筑职业技术学院", + "14182": "湖南国防工业职业技术学院", + "14183": "重庆建筑工程职业学院", + "14185": "河北正定师范高等专科学校", + "14186": "朔州职业技术学院", + "14187": "包头铁道职业技术学院", + "14188": "辽宁铁道职业技术学院", + "14189": "辽宁建筑职业学院", + "14190": "长白山职业技术学院", + "14191": "徽商职业学院", + "14192": "马鞍山职业技术学院", + "14193": "山东传媒职业学院", + "14195": "临沂职业学院", + "14196": "枣庄职业学院", + "14197": "湖北工程职业学院", + "14198": "毕节职业技术学院", + "14199": "内蒙古大学创业学院", + "14200": "银川科技学院", + "14201": "北京第二外国语学院中瑞酒店管理学院", + "14202": "沧州交通学院", + "14203": "皖江工学院", + "14205": "内蒙古师范大学鸿德学院", + "14206": "同济大学浙江学院", + "14207": "上海财经大学浙江学院", + "14208": "河北劳动关系职业学院", + "14209": "大连航运职业技术学院", + "14210": "安徽现代信息工程职业学院", + "14211": "广西经济职业学院", + "14212": "云南经贸外事职业学院", + "14213": "石家庄科技职业学院", + "14215": "北京体育职业学院", + "14219": "乌兰察布医学高等专科学校", + "14220": "广西幼儿师范高等专科学校", + "14221": "四川幼儿师范高等专科学校", + "14222": "西安医学高等专科学校", + "14223": "贵州师范学院", + "14225": "河北东方学院", + "14226": "运城职业技术大学", + "14227": "大连装备制造职业技术学院", + "14228": "大连汽车职业技术学院", + "14229": "安徽矿业职业技术学院", + "14230": "合肥信息技术职业学院", + "14231": "泉州海洋职业学院", + "14232": "泉州轻工职业学院", + "14233": "漯河食品职业学院", + "14235": "郑州城市职业学院", + "14236": "三亚理工职业学院", + "14237": "重庆电讯职业学院", + "14238": "重庆能源职业学院", + "14239": "云南三鑫职业技术学院", + "14240": "辽宁现代服务职业技术学院", + "14241": "江西冶金职业技术学院", + "14242": "山东理工职业学院", + "14243": "安阳职业技术学院", + "14245": "新乡职业技术学院", + "14246": "重庆商务职业学院", + "14247": "山西铁道职业技术学院", + "14248": "鄂尔多斯职业学院", + "14249": "江西管理职业学院", + "14250": "江西传媒职业学院", + "14251": "驻马店职业技术学院", + "14252": "贵州职业技术学院", + "14253": "德宏职业学院", + "14255": "江苏卫生健康职业学院", + "14256": "苏州信息职业技术学院", + "14257": "厦门安防科技职业学院", + "14258": "三峡旅游职业技术学院", + "14259": "沧州幼儿师范高等专科学校", + "14260": "宣化科技职业学院", + "14261": "山东文化产业职业学院", + "14262": "西南交通大学希望学院", + "14263": "东莞职业技术学院", + "14265": "广东南方职业学院", + "14266": "广州华商职业学院", + "14267": "重庆交通职业学院", + "14268": "广州华夏职业学院", + "14269": "浙江农业商贸职业学院", + "14270": "晋中师范高等专科学校", + "14271": "阳泉师范高等专科学校", + "14272": "黑龙江护理高等专科学校", + "14273": "桐城师范高等专科学校", + "14275": "浙江外国语学院", + "14276": "齐鲁师范学院", + "14277": "山东青年政治学院", + "14278": "广东第二师范学院", + "14279": "北京交通运输职业学院", + "14280": "廊坊燕京职业技术学院", + "14281": "承德护理职业学院", + "14282": "内蒙古工业职业学院", + "14283": "呼伦贝尔职业技术学院", + "14285": "满洲里俄语职业学院", + "14286": "辽宁冶金职业技术学院", + "14287": "辽宁工程职业学院", + "14288": "辽宁城市建设职业技术学院", + "14289": "辽宁医药职业学院", + "14290": "铁岭卫生职业学院", + "14291": "吉林科技职业技术学院", + "14293": "宿迁泽达职业技术学院", + "14295": "苏州工业园区服务外包职业学院", + "14296": "黄山职业技术学院", + "14297": "滁州城市职业学院", + "14298": "安徽汽车职业技术学院", + "14299": "皖西卫生职业学院", + "14300": "焦作工贸职业学院", + "14301": "许昌陶瓷职业学院", + "14302": "郑州理工职业学院", + "14303": "郑州信息工程职业学院", + "14305": "长垣烹饪职业技术学院", + "14306": "开封文化艺术职业学院", + "14307": "河南应用技术职业学院", + "14308": "河南艺术职业学院", + "14309": "湖南高尔夫旅游职业学院", + "14310": "湖南工商职业学院", + "14311": "广东环境保护工程职业学院", + "14312": "广西科技职业学院", + "14313": "广西卫生职业技术学院", + "14315": "重庆化工职业学院", + "14316": "重庆旅游职业学院", + "14317": "云南商务职业学院", + "14318": "榆林职业技术学院", + "14319": "甘肃机电职业技术学院", + "14320": "青岛远洋船员职业学院", + "14321": "江西工商职业技术学院", + "14322": "湖南三一工业职业技术学院", + "14323": "四川长江职业学院", + "14325": "南方科技大学", + "14327": "青岛电影学院", + "14328": "石家庄幼儿师范高等专科学校", + "14329": "徐州幼儿师范高等专科学校", + "14330": "合肥幼儿师范高等专科学校", + "14331": "泉州幼儿师范高等专科学校", + "14332": "济南幼儿师范高等专科学校", + "14333": "郑州升达经贸管理学院", + "14335": "廊坊卫生职业学院", + "14336": "山西青年职业学院", + "14337": "内蒙古能源职业学院", + "14338": "赤峰工业职业技术学院", + "14339": "阿拉善职业技术学院", + "14340": "延边职业技术学院", + "14342": "安徽扬子职业技术学院", + "14343": "济南护理职业学院", + "14345": "泰山护理职业学院", + "14346": "山东海事职业学院", + "14347": "潍坊护理职业学院", + "14348": "河南机电职业学院", + "14349": "河南护理职业学院", + "14350": "许昌电气职业学院", + "14351": "信阳涉外职业技术学院", + "14352": "鹤壁汽车工程职业学院", + "14353": "南阳职业学院", + "14355": "天门职业学院", + "14356": "湖北体育职业学院", + "14357": "襄阳汽车职业技术学院", + "14358": "长沙卫生职业学院", + "14359": "湖南食品药品职业学院", + "14360": "湖南有色金属职业技术学院", + "14361": "广东青年职业学院", + "14362": "广州东华职业学院", + "14363": "广东创新科技职业学院", + "14365": "重庆安全技术职业学院", + "14366": "重庆公共运输职业学院", + "14367": "重庆艺术工程职业学院", + "14368": "重庆轻工职业学院", + "14369": "重庆电信职业学院", + "14370": "重庆经贸职业学院", + "14371": "贵州盛华职业学院", + "14372": "昆明卫生职业学院", + "14373": "云南现代职业技术学院", + "14375": "甘肃有色冶金职业技术学院", + "14376": "白银矿冶职业技术学院", + "14377": "宁夏葡萄酒与防沙治沙职业技术学院", + "14378": "安徽黄梅戏艺术职业学院", + "14379": "潍坊工程职业学院", + "14380": "郑州商贸旅游职业学院", + "14381": "云南旅游职业学院", + "14382": "河南推拿职业学院", + "14383": "洛阳职业技术学院", + "14385": "沈阳北软信息职业技术学院", + "14386": "四川三河职业学院", + "14387": "内蒙古美术职业学院", + "14388": "重庆第二师范学院", + "14389": "成都师范学院", + "14390": "陕西学前师范学院", + "14391": "郑州幼儿师范高等专科学校", + "14392": "安阳幼儿师范高等专科学校", + "14393": "川北幼儿师范高等专科学校", + "14394": "上海民航职业技术学院", + "14395": "北京卫生职业学院", + "14396": "河北轨道运输职业技术学院", + "14397": "运城护理职业学院", + "14400": "齐齐哈尔理工职业学院", + "14401": "徐州生物工程职业技术学院", + "14402": "景德镇陶瓷职业技术学院", + "14403": "共青科技职业学院", + "14405": "郑州黄河护理职业学院", + "14406": "湖南吉利汽车职业技术学院", + "14407": "广东舞蹈戏剧职业学院", + "14408": "惠州卫生职业技术学院", + "14409": "四川卫生康复职业学院", + "14410": "四川电影电视学院", + "14411": "四川汽车职业技术学院", + "14412": "贵州工商职业学院", + "14413": "红河卫生职业学院", + "14415": "云南外事外语职业学院", + "14416": "新疆体育职业技术学院", + "14417": "新疆应用职业技术学院", + "14418": "安徽粮食工程职业学院", + "14419": "安徽卫生健康职业学院", + "14420": "合肥科技职业学院", + "14421": "新疆师范高等专科学校", + "14423": "上海科技大学", + "14425": "哈尔滨幼儿师范高等专科学校", + "14426": "吉林城市职业技术学院", + "14427": "广东信息工程职业学院", + "14428": "重庆幼儿师范高等专科学校", + "14430": "中国科学院大学", + "14431": "浙江特殊教育职业学院", + "14432": "河北中医学院", + "14434": "山西传媒学院", + "14435": "营口理工学院", + "14436": "江苏第二师范学院", + "14437": "南昌师范学院", + "14438": "山东管理学院", + "14439": "山东农业工程学院", + "14440": "贵州理工学院", + "14458": "张家口学院", + "14460": "保定幼儿师范高等专科学校", + "14461": "运城师范高等专科学校", + "14462": "朔州师范高等专科学校", + "14463": "内蒙古民族幼儿师范高等专科学校", + "14464": "辽宁民族师范高等专科学校", + "14465": "赣州师范高等专科学校", + "14466": "河南医学高等专科学校", + "14467": "湖北幼儿师范高等专科学校", + "14468": "湖南幼儿师范高等专科学校", + "14469": "贵阳幼儿师范高等专科学校", + "14470": "铜仁幼儿师范高等专科学校", + "14471": "河北工艺美术职业学院", + "14472": "渤海理工职业学院", + "14473": "辽宁轻工职业学院", + "14475": "江苏商贸职业学院", + "14476": "江西水利职业学院", + "14477": "菏泽职业学院", + "14478": "郑州财税金融职业学院", + "14479": "南阳农业职业学院", + "14480": "洛阳科技职业学院", + "14481": "广西培贤国际职业学院", + "14482": "重庆文化艺术职业学院", + "14483": "巴中职业技术学院", + "14484": "四川希望汽车职业学院", + "14485": "四川电子机械职业技术学院", + "14486": "四川文轩职业学院", + "14487": "大理农林职业技术学院", + "14488": "陕西艺术职业学院", + "14489": "新疆铁道职业技术学院", + "14490": "闽江师范高等专科学校", + "14491": "重庆科技职业学院", + "14492": "浙江安防职业技术学院", + "14493": "南通师范高等专科学校", + "14494": "宜春幼儿师范高等专科学校", + "14495": "湘南幼儿师范高等专科学校", + "14496": "川南幼儿师范高等专科学校", + "14497": "黔南民族幼儿师范高等专科学校", + "14498": "宁夏幼儿师范高等专科学校", + "14499": "毕节医学高等专科学校", + "14500": "吕梁职业技术学院", + "14501": "鄂尔多斯生态环境职业学院", + "14502": "皖北卫生职业学院", + "14503": "泉州工程职业技术学院", + "14504": "吉安职业技术学院", + "14505": "江西洪州职业学院", + "14506": "山东艺术设计职业学院", + "14507": "威海海洋职业学院", + "14508": "湖南劳动人事职业学院", + "14509": "广东生态工程职业学院", + "14510": "惠州城市职业学院", + "14511": "广东碧桂园职业学院", + "14512": "广西金融职业技术学院", + "14513": "四川护理职业学院", + "14514": "成都工业职业技术学院", + "14515": "四川西南航空职业学院", + "14516": "贵州建设职业技术学院", + "14517": "甘肃卫生职业学院", + "14518": "兰州科技职业学院", + "14519": "西宁城市职业技术学院", + "14520": "青海高等职业技术学院", + "14521": "青海柴达木职业技术学院", + "14522": "宁夏艺术职业学院", + "14523": "新疆生产建设兵团兴新职业技术学院", + "14524": "哈密职业技术学院", + "14525": "新疆科技职业技术学院", + "14526": "辽宁特殊教育师范高等专科学校", + "14527": "山西工程技术学院", + "14528": "扬州中瑞酒店职业学院", + "14529": "鹤壁能源化工职业学院", + "14530": "平顶山文化艺术职业学院", + "14531": "内蒙古艺术学院", + "14532": "鄂尔多斯应用技术学院", + "14534": "公安消防部队高等专科学校", + "14535": "浙江音乐学院", + "14536": "阜阳幼儿师范高等专科学校", + "14537": "江西师范高等专科学校", + "14538": "毕节幼儿师范高等专科学校", + "14539": "扎兰屯职业学院", + "14540": "黑龙江冰雪体育职业学院", + "14541": "江苏护理职业学院", + "14542": "江苏财会职业学院", + "14543": "江苏城乡建设职业学院", + "14544": "南昌影视传播职业学院", + "14545": "山东特殊教育职业学院", + "14546": "广西中远职业学院", + "14547": "成都工贸职业技术学院", + "14548": "四川应用技术职业学院", + "14549": "贵州农业职业学院", + "14550": "云南财经职业学院", + "14551": "庆阳职业技术学院", + "14552": "临夏现代职业学院", + "14553": "湖北铁道运输职业学院", + "14554": "武汉海事职业学院", + "14555": "长江艺术工程职业学院", + "14556": "广东茂名健康职业学院", + "14557": "重庆资源与环境保护职业学院", + "14558": "贵州工程职业学院", + "14559": "贵州工贸职业学院", + "14560": "哈尔滨音乐学院", + "14567": "吉林职业技术学院", + "14568": "江苏航空职业技术学院", + "14569": "赣南卫生健康职业学院", + "14570": "烟台黄金职业学院", + "14571": "荆门职业学院", + "14572": "广东酒店管理职业技术学院", + "14573": "玉柴职业技术学院", + "14574": "广西蓝天航空职业学院", + "14575": "海南体育职业技术学院", + "14576": "重庆护理职业学院", + "14577": "贵州水利水电职业技术学院", + "14578": "贵州电子商务职业技术学院", + "14579": "贵州应用技术职业学院", + "14580": "贵州电子科技职业学院", + "14581": "昆明铁道职业技术学院", + "14582": "昭通卫生职业学院", + "14583": "大理护理职业学院", + "14584": "云南水利水电职业学院", + "14585": "吐鲁番职业技术学院", + "14586": "唐山幼儿师范高等专科学校", + "14587": "广东茂名幼儿师范专科学校", + "14588": "北京网络职业学院", + "14589": "江苏安全技术职业学院", + "14590": "武汉铁路桥梁职业学院", + "14591": "武汉光谷职业学院", + "14592": "广州卫生职业技术学院", + "14594": "兰州现代职业学院", + "14595": "平凉职业技术学院", + "14596": "中国社会科学院大学", + "14597": "濮阳医学高等专科学校", + "14598": "驻马店幼儿师范高等专科学校", + "14599": "天津体育职业学院", + "14600": "天津滨海汽车工程职业学院", + "14601": "曹妃甸职业技术学院", + "14602": "吉林水利电力职业学院", + "14603": "长春健康职业学院", + "14604": "江苏旅游职业学院", + "14605": "日照航海工程职业学院", + "14606": "三门峡社会管理职业学院", + "14607": "河南轻工职业学院", + "14608": "河南测绘职业学院", + "14609": "惠州工程职业学院", + "14610": "广东江门中医药职业学院", + "14611": "广西安全工程职业技术学院", + "14612": "三亚中瑞酒店管理职业学院", + "14613": "贵州装备制造职业学院", + "14614": "贵州健康职业学院", + "14615": "贵州食品工程职业学院", + "14616": "贵州经贸职业技术学院", + "14617": "贵州护理职业技术学院", + "14618": "云南轻纺职业学院", + "14619": "云南特殊教育职业学院", + "14620": "云南工贸职业技术学院", + "14621": "云南交通运输职业学院", + "14622": "博尔塔拉职业技术学院", + "14623": "滇西应用技术大学", + "14624": "宁夏体育职业学院", + "14625": "茅台学院", + "14626": "西湖大学", + "14627": "大同师范高等专科学校", + "14628": "太原幼儿师范高等专科学校", + "14629": "西昌民族幼儿师范高等专科学校", + "14630": "六盘水幼儿师范高等专科学校", + "14631": "昆明幼儿师范高等专科学校", + "14632": "承德应用技术职业学院", + "14633": "哈尔滨北方航空职业技术学院", + "14634": "信阳航空职业学院", + "14635": "郑州卫生健康职业学院", + "14636": "河南物流职业学院", + "14637": "河南地矿职业学院", + "14638": "广东茂名农林科技职业学院", + "14639": "海南健康管理职业技术学院", + "14640": "眉山药科职业学院", + "14641": "天府新区信息职业学院", + "14642": "德阳城市轨道交通职业学院", + "14643": "德阳科贸职业学院", + "14644": "江阳城建职业学院", + "14645": "天府新区航空旅游职业学院", + "14646": "天府新区通用航空职业学院", + "14647": "阿坝职业学院", + "14648": "毕节工业职业技术学院", + "14649": "云南医药健康职业学院", + "14650": "神木职业技术学院", + "14651": "宝鸡三和职业学院", + "14652": "和田职业技术学院", + "14654": "郑州西亚斯学院", + "14655": "深圳技术大学", + "14656": "萍乡卫生职业学院", + "14657": "江西婺源茶业职业学院", + "14660": "铁门关职业技术学院", + "14661": "石河子工程职业技术学院", + "14662": "辽宁师范高等专科学校", + "14663": "怀化师范高等专科学校", + "14664": "广东江门幼儿师范高等专科学校", + "14665": "赣州职业技术学院", + "14666": "青岛工程职业学院", + "14667": "广东财贸职业学院", + "14668": "广西自然资源职业技术学院", + "14669": "达州中医药职业学院", + "14670": "内江卫生与健康职业学院", + "14671": "南充科技职业学院", + "14672": "攀枝花攀西职业学院", + "14673": "资阳口腔职业学院", + "14674": "资阳环境科技职业学院", + "14675": "云南理工职业学院", + "14676": "曲靖职业技术学院", + "14677": "喀什职业技术学院", + "14678": "克孜勒苏职业技术学院", + "14679": "新疆科信职业技术学院", + "14680": "阿勒泰职业技术学院", + "14681": "山西工程职业学院", + "14682": "安徽艺术学院", + "14683": "福建技术师范学院", + "14684": "广西职业师范学院", + "14685": "郑州亚欧交通职业学院", + "14686": "邯郸幼儿师范高等专科学校", + "14687": "长治幼儿师范高等专科学校", + "14688": "青岛幼儿师范高等专科学校", + "14689": "烟台幼儿师范高等专科学校", + "14690": "永州师范高等专科学校", + "14691": "衡阳幼儿师范高等专科学校", + "14692": "长沙幼儿师范高等专科学校", + "14693": "钦州幼儿师范高等专科学校", + "14694": "梧州医学高等专科学校", + "14695": "邯郸科技职业学院", + "14696": "唐山海运职业学院", + "14697": "山西通用航空职业技术学院", + "14698": "朔州陶瓷职业技术学院", + "14699": "赤峰应用技术职业学院", + "14700": "鞍山职业技术学院", + "14701": "长春早期教育职业学院", + "14702": "梅河口康美职业技术学院", + "14703": "浙江宇翔职业技术学院", + "14704": "黄山健康职业学院", + "14705": "南昌健康职业技术学院", + "14706": "九江理工职业学院", + "14707": "烟台文化旅游职业学院", + "14708": "临沂科技职业学院", + "14709": "青岛航空科技职业学院", + "14710": "潍坊环境工程职业学院", + "14711": "河南女子职业学院", + "14712": "河南对外经济贸易职业学院", + "14713": "濮阳石油化工职业技术学院", + "14714": "南阳科技职业学院", + "14715": "兰考三农职业学院", + "14716": "汝州职业技术学院", + "14717": "林州建筑职业技术学院", + "14718": "郑州电子商务职业学院", + "14719": "郑州轨道工程职业学院", + "14720": "郑州体育职业学院", + "14721": "湖北健康职业学院", + "14722": "广西制造工程职业技术学院", + "14723": "广西物流职业技术学院", + "14724": "海南卫生健康职业学院", + "14725": "重庆理工职业学院", + "14726": "重庆智能工程职业学院", + "14727": "重庆健康职业学院", + "14728": "南充文化旅游职业学院", + "14729": "南充电影工业职业学院", + "14730": "绵阳飞行职业学院", + "14731": "德阳农业科技职业学院", + "14732": "泸州医疗器械职业学院", + "14733": "贵州机电职业技术学院", + "14734": "贵州财经职业学院", + "14735": "贵州民用航空职业学院", + "14736": "红河职业技术学院", + "14737": "榆林能源科技职业学院", + "14738": "培黎职业学院", + "14739": "石嘴山工贸职业技术学院", + "14740": "塔城职业技术学院", + "14741": "塔里木职业技术学院", + "14742": "邢台应用技术职业学院", + "14743": "吉林通用航空职业技术学院", + "14744": "通化医药健康职业学院", + "14745": "上海南湖职业技术学院", + "14746": "浙江金华科贸职业技术学院", + "14747": "宿州航空职业学院", + "14748": "和君职业学院", + "14749": "滨州科技职业学院", + "14750": "洛阳文化旅游职业学院", + "14751": "周口文理职业学院", + "14752": "信阳艺术职业学院", + "14753": "郑州城建职业学院", + "14754": "郑州医药健康职业学院", + "14755": "湖北孝感美珈职业学院", + "14756": "广州幼儿师范高等专科学校", + "14757": "广东汕头幼儿师范高等专科学校", + "14758": "广东梅州职业技术学院", + "14759": "广东潮州卫生健康职业学院", + "14760": "广东云浮中医药职业学院", + "14761": "广东肇庆航空职业学院", + "14762": "防城港职业技术学院", + "14763": "广西信息职业技术学院", + "14764": "广西农业工程职业技术学院", + "14765": "北海康养职业学院", + "14766": "重庆工信职业学院", + "14767": "甘孜职业学院", + "14768": "自贡职业技术学院", + "14769": "贵州文化旅游职业学院", + "14770": "宝鸡中北职业学院", + "14771": "兰州航空职业技术学院", + "14772": "白银希望职业技术学院", + "15312": "上饶幼儿师范高等专科学校", + "15335": "长春师范高等专科学校", + "15466": "盐城幼儿师范高等专科学校", + "15496": "湘中幼儿师范高等专科学校", + "15519": "抚州幼儿师范高等专科学校", + "15583": "苏州幼儿师范高等专科学校", + "16201": "山西工程科技职业大学", + "16202": "河北石油职业技术大学", + "16203": "河北科技工程职业技术大学", + "16204": "河北工业职业技术大学", + "16205": "广西农业职业技术大学", + "16206": "贵阳康养职业大学", + "16207": "浙江药科职业大学", + "16208": "兰州资源环境职业技术大学", + "16209": "兰州石化职业技术大学", + "16301": "宁波诺丁汉大学", + "16401": "北京师范大学-香港浸会大学联合国际学院", + "16402": "长江商学院", + "16403": "西交利物浦大学", + "16404": "上海纽约大学", + "16405": "温州肯恩大学", + "16406": "昆山杜克大学", + "16407": "香港中文大学(深圳)", + "16408": "浙江舟山群岛新区旅游与健康职业学院", + "16409": "深圳北理莫斯科大学", + "16410": "广东以色列理工学院", + "16411": "福州墨尔本理工职业学院", + "18213": "哈尔滨工业大学(深圳)", + "19027": "北京师范大学(珠海校区)", + "19145": "东北大学秦皇岛分校", + "19213": "哈尔滨工业大学(威海)", + "19414": "中国石油大学(北京)克拉玛依校区", + "19422": "山东大学威海分校", + "19802": "北京吉利学院", + "50028": "北京警察学院", + "50083": "陕西航天职工大学", + "50084": "陕西机电职业技术学院", + "50085": "陕西青年职业学院", + "50139": "河北地质职工大学", + "50166": "山西卫生健康职业学院", + "50252": "吉林省教育学院", + "50337": "黑龙江农垦管理干部学院", + "50343": "黑龙江省政法管理干部学院", + "50344": "黑龙江省教育学院", + "50559": "宁波幼儿师范高等专科学校", + "50561": "金华教育学院", + "50581": "安徽经济管理干部学院", + "50591": "福建教育学院", + "50607": "南昌钢铁有限责任公司职工大学", + "50649": "山东省经济管理干部学院", + "50680": "第一拖拉机制造厂拖拉机学院", + "50709": "平顶山职业技术学院", + "50763": "荆州教育学院", + "50788": "株洲市职工大学", + "50793": "湖南航空工业职工工学院", + "50810": "长沙教育学院", + "50812": "湘潭教育学院", + "50853": "湛江幼儿师范专科学校", + "50870": "广西教育学院", + "50881": "广元中核职业技术学院", + "50963": "贵州航空职业技术学院", + "50966": "聊城教育学院", + "50990": "西安飞机工业公司职工工学院", + "51006": "西安铁路工程职工大学", + "51009": "西安电力机械制造公司机电学院", + "51010": "陕西省建筑工程总公司职工大学", + "51038": "兰州航空职业技术学院", + "51060": "新疆工业职业技术学院", + "51177": "河北广播电视大学", + "51180": "石家庄职工大学", + "51189": "山西能源学院", + "51243": "吉林省经济管理干部学院", + "51255": "江苏开放大学", + "51257": "江苏省省级机关管理干部学院", + "51283": "南昌教育学院", + "51285": "江西经济管理干部学院", + "51340": "广西政法管理干部学院", + "51351": "四川体育职业学院", + "51373": "陕西工运学院", + "51378": "甘肃财贸职业学院", + "51614": "上海工会管理职业学院", + "51675": "崇左幼儿师范高等专科学校", + "51721": "河北环境工程学院", + "51723": "河北管理干部学院", + "51787": "山西省政法管理干部学院", + "51802": "河北青年管理干部学院", + "51828": "江苏省青年管理干部学院", + "80000": "中共中央党校", + "80002": "中科院数学与系统科学研究院", + "80005": "中国科学院武汉岩土力学研究所", + "80007": "中国科学院力学研究所", + "80008": "中国科学院物理研究所", + "80009": "中科院高能物理所", + "80010": "中国科学院声学研究所", + "80012": "中科院理论物理所", + "80014": "中国科学院上海应用物理研究所", + "80017": "中科院近代物理研究所", + "80018": "中科院南京天文光学技术研究所", + "80020": "中国科学院武汉物理与数学研究所", + "80021": "中国科学院紫金山天文台", + "80022": "中国科学院上海天文台", + "80023": "中科院云南天文台", + "80024": "中国科学院国家授时中心", + "80025": "中国科学院国家天文台", + "80026": "中国科学院声学研究所东海研究站", + "80028": "中科院新疆理化技术研究所", + "80029": "中国科学院自然科学史研究所", + "80030": "中国科学院理化技术研究所", + "80032": "中科院化学研究所", + "80035": "中国科学院上海有机化学所", + "80036": "中国科学院成都有机化学研究所", + "80037": "中国科学院长春应用化学研究所", + "80038": "中科院大连化学物理所", + "80039": "中国科学院兰州化物所", + "80040": "中国科学院上海硅酸盐研究所", + "80041": "中科院过程工程所", + "80042": "中科院生态环境中心", + "80043": "中国科学院山西煤炭化学研究所", + "80045": "中国科学院福建物质结构研究所", + "80046": "中国科学院盐湖研究所", + "80047": "中国科学院青海盐湖研究所", + "80053": "中科院兰州地质研究所", + "80054": "中科院古脊椎所", + "80055": "中科院南京地质古生物研究所", + "80057": "中国科学院测量与地球物理研究所", + "80058": "中国科学院大气物理研究所", + "80060": "中国科学院地理科学与资源研究所", + "80061": "中科院南京地理与湖泊研究所", + "80062": "中国科学院东北地理与农业生态研究所", + "80063": "中科院成都山地灾害与环境研究所", + "80065": "中国科学院地球化学研究所", + "80068": "中国科学院海洋研究所", + "80070": "遥感应用研究所", + "80073": "空间科学与应用研究中心", + "80074": "中科院中国遥感卫星地面站", + "80075": "中科院地质与地球物理研究所", + "80076": "中科院寒区旱区环境与工程研究所", + "80080": "南京天文仪器研制中心", + "80102": "中国科学院新疆生态与地理研究所", + "80103": "中科院动物研究所", + "80104": "中国科学院昆明动物研究所", + "80105": "中科院植物研究所", + "80106": "中科院昆明植物研究所", + "80108": "中国科学院武汉植物园", + "80110": "中科院成都生物研究所", + "80112": "中国科学院生物物理研究所", + "80113": "中科院微生物所", + "80119": "中国科学院水生生物研究所", + "80121": "中国科学院遗传与发育生物学研究所", + "80122": "中国科学院西北高原生物研究所", + "80123": "中国科学院上海药物研究所", + "80124": "中国科学院武汉病毒研究所", + "80125": "中科院心理研究所", + "80126": "中国科学院南京土壤研究所", + "80127": "中科院沈阳应用生态所", + "80128": "中国科学院西双版纳热带植物园", + "80129": "中国科学院水土保持与生态环境研究中心", + "80132": "中国科学院计算技术研究所", + "80133": "中科院沈阳计算技术所", + "80135": "中国科学院工程热物理研究所", + "80136": "中科院半导体所", + "80137": "中科院电子学所", + "80138": "中科院上海微系统与信息技术所", + "80139": "中科院长春光学精密机械与物理研究所", + "80140": "中国科学院上海光学精密机械研究所", + "80142": "中科院西安光学精密机械研究所", + "80143": "中国科学院上海技术物理研究所", + "80144": "中科院金属研究所", + "80146": "中科院自动化所", + "80147": "中科院沈阳自动化所", + "80148": "中科院电工研究所", + "80150": "中科院软件研究所", + "80151": "中国科学院光电技术研究所", + "80153": "中科院成都计算机应用研究所", + "80155": "中科院文献情报中心", + "80156": "中科院遗传发育所农业资源中心", + "80158": "中科院地球环境研究所", + "80159": "中科院微电子研究所", + "80160": "中国科学院计算机网络信息中心", + "80162": "中国科学院亚热带农业生态研究所", + "80163": "中科院南京天文仪器研制中心", + "80164": "科技政策与管理科学研究所", + "80166": "中科院国家天文台乌鲁木齐天文站", + "80167": "中国科学院北京基因组研究所", + "80168": "中国科学院合肥物质科学研究院", + "80176": "中国科学院上海免疫与感染研究所", + "80177": "中国科学院深圳先进技术研究院", + "80184": "中国科学院上海高等研究院", + "80189": "中国科学院分子细胞科学卓越创新中心", + "80190": "中国科学院脑科学与智能技术卓越创新中心", + "80191": "中国科学院分子植物科学卓越创新中心", + "80192": "中国科学院上海营养与健康研究所", + "80193": "中国科学院微小卫星创新研究院", + "80201": "中国社会科学院研究生院", + "80202": "国家行政学院", + "80401": "北京国家会计学院", + "80402": "上海国家会计学院", + "80403": "厦门国家会计学院", + "80901": "中国科学技术信息研究所", + "81601": "中国财政科学研究院", + "82001": "商务部国际贸易经济合作研究院", + "82101": "中国农业科学院研究生院", + "82110": "中国兽医药品监察所", + "82201": "中国林业科学研究院", + "82301": "中国水利水电科学研究院", + "82302": "中国电力科学研究院", + "82303": "国网电力科学研究院", + "82304": "西安热工研究院", + "82305": "长江科学院", + "82306": "南京水利科学研究院", + "82401": "中国建筑科学研究院", + "82402": "中国城市规划设计研究院", + "82403": "中国建筑设计研究院", + "82405": "中国环境科学研究院", + "82501": "中国地质科学院", + "82601": "钢铁研究总院", + "82602": "中冶集团建筑研究总院", + "82603": "长沙矿冶研究院", + "82604": "中钢集团马鞍山矿山研究院", + "82605": "冶金自动化研究设计院", + "82606": "洛阳耐火材料研究院", + "82608": "中钢集团天津地质研究院有限公司", + "82609": "中钢集团武汉安全环保研究院", + "82701": "机械科学研究总院", + "82702": "北京机械工业自动化研究所", + "82703": "北京机电研究所", + "82705": "沈阳铸造研究所", + "82706": "机械科学研究院哈尔滨焊接研究所", + "82707": "上海材料研究所", + "82708": "郑州机械研究所", + "82709": "武汉材料保护研究所", + "82715": "中国农业机械化科学研究院", + "82717": "上海发电设备成套设计研究院", + "82718": "上海内燃机研究所", + "82720": "洛阳船舶材料研究所", + "82721": "郑州机电工程研究所", + "82801": "中国原子能科学研究院", + "82802": "中国核动力研究设计院", + "82803": "核工业第二研究设计院", + "82804": "核工业理化工程研究院", + "82805": "上海核工程研究设计院", + "82806": "核工业北京地质研究院", + "82807": "核工业北京化工冶金研究院", + "82808": "中国辐射防护研究院", + "82809": "核工业西南物理研究院", + "82818": "中国工程物理研究院", + "82901": "中国航空研究院", + "82902": "北京航空精密机械研究所", + "82903": "中国航空研究院 601 所", + "82904": "中国航空工业总公司第 603 研究所", + "82905": "中国航空研究院 606 所", + "82906": "中国航空研究院 611 研究所", + "82907": "中国空空导弹研究院", + "82908": "中国航空研究院 613 所", + "82909": "中国航空研究院 623 所", + "82910": "中国航空研究院第六二四研究所", + "82911": "中国飞行试验研究院", + "82912": "中国航空研究院 631 所", + "82913": "北京航空材料研究院", + "82914": "中国航空制造技术研究院", + "82920": "中国航空工业规划设计研究院", + "82925": "中国航发湖南动力机械研究所", + "82927": "中国航空研究院 609 所", + "82928": "中国航空研究院 627 研究所", + "82929": "中国航空研究院 626 所", + "82931": "中国航空工业总公司第 628 研究所", + "82932": "北京长城计量测试技术研究所", + "82936": "中国航空研究院 618 所", + "82937": "中国航空研究院 640 所", + "82938": "中国航空研究院 602 所", + "82961": "中国航空研究院 610 所", + "83000": "中国电子科技集团公司电子科学研究院", + "83001": "华北计算机系统工程研究所", + "83002": "华北计算技术研究所", + "83003": "北京真空电子技术研究所", + "83004": "河北半导体研究所", + "83005": "南京电子技术研究所", + "83006": "中国电波传播研究所", + "83007": "南京电子器件研究所", + "83008": "西南通信研究所", + "83009": "华东计算技术研究所", + "83010": "通信测控技术研究所", + "83011": "华北光电技术研究所", + "83101": "西安近代化学研究所", + "83102": "内蒙古金属材料研究所", + "83103": "西安应用光学研究所", + "83104": "昆明物理研究所", + "83105": "西南技术物理研究所", + "83106": "北方自动控制技术研究所", + "83107": "中国北方车辆研究所", + "83109": "西安机电信息技术研究所", + "83110": "陕西应用物理化学研究所", + "83111": "中国兵器工业第 202 研究所", + "83112": "中国兵器工业第 203 研究所", + "83113": "中国兵器工业第 206 研究所", + "83114": "西南自动化研究所", + "83115": "山东非金属材料研究所", + "83116": "中国兵器装备研究院", + "83201": "中国运载火箭技术研究院", + "83221": "中国航天科工集团第二研究院", + "83232": "中国航天系统科学与工程研究院", + "83233": "中国航天科技集团公司第十六研究所", + "83241": "中国航天科工集团第三研究院", + "83245": "中国航天科工集团三院 8357 研究所", + "83246": "中国航天科工集团三院 8358 研究所", + "83256": "航天动力技术研究院", + "83258": "中国航天科技集团公司第四研究院 42 所", + "83266": "中国空间技术研究院", + "83269": "中国空间技术研究院 504 所", + "83271": "中国空间技术研究院兰州空间技术物理研究所", + "83276": "中国航天工业总公司西安微电子技术研究所", + "83277": "中国航天空气动力技术研究院", + "83278": "中国航天科技集团有限公司第六研究院第十一研究所", + "83285": "上海航天技术研究院", + "83286": "中国航天科工集团第十研究院", + "83301": "煤炭科学研究总院", + "83303": "煤科院上海分院", + "83304": "煤科院抚顺分院", + "83306": "煤科院西安分院", + "83307": "煤科院唐山分院", + "83309": "煤科院北京建井研究所", + "83310": "煤科院北京煤化研究所", + "83311": "煤科院北京开采研究所", + "83401": "中国石油勘探开发研究院", + "83501": "北京化工研究院", + "83502": "上海化工研究院", + "83503": "沈阳化工研究院", + "83504": "北京橡胶工业研究设计院", + "83505": "天华化工机械及自动化研究设计院有限公司", + "83702": "北京市科学技术研究院资源环境研究所", + "83704": "中国日用化学工业研究院", + "83705": "中国食品发酵工业研究院", + "83706": "中国制浆造纸研究院有限公司", + "83801": "中国铁道科学研究院", + "83901": "上海船舶运输科学研究所", + "83902": "交通运输部公路科学研究所", + "84001": "电信科学技术研究院", + "84002": "电信科学技术第一研究所", + "84003": "电信科学技术第四研究所", + "84004": "电信科学技术第五研究所", + "84011": "武汉邮电科学研究院", + "84201": "中国艺术研究院", + "84202": "中国电影艺术研究中心", + "84501": "中国疾病预防控制中心", + "84502": "中国中医科学院", + "84503": "中国食品药品检定研究院", + "84504": "北京生物制品研究所", + "84505": "上海生物制品研究所", + "84506": "武汉生物制品研究所", + "84507": "兰州生物制品研究所", + "84508": "中日友好临床医学研究所", + "84509": "长春生物制品研究所", + "84512": "卫生部北京老年医学研究所", + "84601": "国家体育总局体育科学研究所", + "84901": "中国建筑材料科学研究总院", + "85101": "中国气象科学研究院", + "85301": "自然资源部第一海洋研究所", + "85302": "自然资源部第二海洋研究所", + "85303": "自然资源部第三海洋研究所", + "85304": "国家海洋环境预报中心", + "85305": "国家海洋技术中心", + "85401": "中国地震局地球物理研究所", + "85402": "中国地震局地质研究所", + "85403": "中国地震局兰州地震研究所", + "85404": "中国地震局地震研究所", + "85405": "中国地震局地震预测研究所", + "85406": "中国地震局工程力学研究所", + "85407": "应急管理部国家自然灾害防治研究院", + "85801": "中国计量科学研究院", + "85802": "中国测绘科学研究院", + "85901": "中国医药工业研究总院", + "85902": "四川抗菌素工业研究所", + "86201": "中国舰船研究院", + "86202": "武汉数字工程研究所", + "86203": "中国舰船研究设计中心", + "86204": "杭州应用声学研究所", + "86205": "中国船舶科学研究中心", + "86206": "中国船舶及海洋工程设计研究院", + "86207": "上海船舶设备研究所", + "86208": "上海船用柴油机研究所", + "86209": "哈尔滨船舶锅炉涡轮机研究所", + "86210": "江苏自动化研究所", + "86211": "天津航海仪器研究所", + "86212": "西安精密机械研究所", + "86215": "武汉船用电力推进装置研究所", + "86216": "武汉华中光电技术研究所", + "86217": "武汉船舶通信研究所", + "86218": "武汉第二船舶设计研究所", + "86219": "上海船舶电子设备研究所", + "86220": "大连测控技术研究所", + "86221": "中国舰船研究院邯郸净化设备研究所", + "86222": "中国舰船研究院宜昌测试技术研究所", + "86223": "扬州船用电子仪器研究所", + "86224": "南京船舶雷达研究所", + "86301": "中国石油化工股份有限公司石油化工科学研究院", + "86401": "昆明贵金属研究所", + "86402": "北京矿冶研究总院", + "86403": "北京有色金属研究总院", + "86404": "长沙矿山研究院", + "86406": "中共广东省委党校", + "86601": "郑州烟草研究院", + "87102": "北京市科学技术研究院城市安全与环境科学研究所", + "87103": "北京市生态环境保护科学研究院", + "87110": "北京市心肺血管疾病研究所", + "87111": "北京市市政工程研究院", + "87112": "北京市结核病胸部肿瘤研究所", + "87113": "北京市创伤骨科研究所", + "87120": "首都儿科研究所", + "87401": "山西省中医药研究院", + "87801": "黑龙江省中医药科学院", + "87802": "黑龙江省社会科学院", + "87804": "黑龙江省科学院", + "87901": "上海市计算技术研究所", + "87902": "上海国际问题研究院", + "87903": "上海社会科学院", + "88001": "江苏省植物研究所", + "88002": "江苏省血吸虫病防治研究所", + "88101": "浙江省医学科学院", + "88701": "湖北省社会科学院", + "88901": "广东省社会科学院", + "88911": "广东省心血管病研究所", + "89101": "四川省社会科学院", + "89611": "中共北京市委党校", + "89621": "中共辽宁省委党校", + "89622": "中共吉林省委党校", + "89623": "中共黑龙江省委党校", + "89631": "中共上海市委党校", + "89632": "中共江苏省委党校", + "89633": "中共浙江省委党校", + "89637": "中共山东省委党校", + "89642": "中共湖北省委党校", + "89643": "中共湖南省委党校", + "89651": "中共四川省委党校", + "89655": "中共重庆市委党校", + "89661": "中共陕西省委党校", + "90106": "军事医学科学院", + "91001": "国防大学", + "91002": "国防科技大学", + "91004": "陆军工程大学", + "91012": "陆军军医大学", + "91014": "中国人民解放军陆军勤务学院", + "91016": "海军工程大学", + "91020": "海军军医大学", + "91024": "中国人民解放军空军工程大学", + "91030": "空军军医大学", + "91034": "火箭军工程大学", + "91036": "航天工程大学", + "91037": "中国人民解放军战略支援部队信息工程大学", + "91101": "军事科学院", + "91102": "解放军医学院" + } +} \ No newline at end of file diff --git a/src/data/multiLoanHourlyDictionary.json b/src/data/multiLoanHourlyDictionary.json new file mode 100644 index 0000000..54d3cc0 --- /dev/null +++ b/src/data/multiLoanHourlyDictionary.json @@ -0,0 +1,11132 @@ +{ + ":-------------": { + "productName": ":-----------", + "labelCategory": ":-----------", + "description": ":------------------------------------------------------------", + "dataType": ":-------", + "length": "-------:" + }, + "BH_A001": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A002": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A003": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A004": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A005": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A006": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A007": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A008": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A009": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A010": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A011": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A012": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A013": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A014": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A015": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A016": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A017": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A018": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A019": { + "productName": "多头标签", + "labelCategory": "A", + "description": "最近银行查询时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_A029": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天汽车金融机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A030": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天汽车金融机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A031": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天汽车金融机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A032": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天汽车金融机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A033": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天汽车金融机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A035": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天汽车金融机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A036": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天汽车金融机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A037": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天汽车金融机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A038": { + "productName": "多头标签", + "labelCategory": "A", + "description": "最近汽车金融机构查询时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_A039": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天金融平台查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A040": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天金融平台查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A041": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天金融平台查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A042": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天金融平台查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A043": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天金融平台查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A048": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天金融平台查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A049": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天金融平台查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A050": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天金融平台查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A051": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天金融平台查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A052": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天金融平台查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A053": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天金融平台查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A054": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天金融平台查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A055": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天金融平台查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A056": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天金融平台查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A057": { + "productName": "多头标签", + "labelCategory": "A", + "description": "最近金融平台查询时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_A058": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天消金公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A059": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天消金公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A060": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天消金公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A061": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天消金公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A062": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天消金公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A063": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天消金公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A064": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天消金公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A065": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天消金公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A066": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天消金公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A067": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天消金公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A068": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天消金公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A069": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天消金公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A070": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天消金公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A071": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天消金公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A072": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天消金公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A073": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天消金公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A074": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天消金公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A075": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天消金公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A076": { + "productName": "多头标签", + "labelCategory": "A", + "description": "最近消金公司查询时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_A077": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A078": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A079": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A080": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A081": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A082": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A083": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A084": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A085": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A086": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A087": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A088": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A089": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A090": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A091": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A093": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A094": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A095": { + "productName": "多头标签", + "labelCategory": "A", + "description": "最近小额贷款公司查询时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_A096": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天网络小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A097": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天网络小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A098": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天网络小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A099": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天网络小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A100": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天网络小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A101": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天网络小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A102": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天网络小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A105": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天网络小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A106": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天网络小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A107": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天网络小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A108": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天网络小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A109": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天网络小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A110": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天网络小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A111": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天网络小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A112": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天网络小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A113": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天网络小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A114": { + "productName": "多头标签", + "labelCategory": "A", + "description": "最近网络小额贷款公司查询时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_A115": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天所有机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A116": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天所有机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A117": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天所有机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A118": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天所有机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A119": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天所有机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A120": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天所有机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A121": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天所有机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A122": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天所有机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A123": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天所有机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A124": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天所有机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A125": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天所有机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A126": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天所有机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A127": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天所有机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A128": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天所有机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A129": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天所有机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A130": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天所有机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A131": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天所有机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A132": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天所有机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A133": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天所有机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A134": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天所有机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A135": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天所有机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A136": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天所有机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A137": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天所有机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A138": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天所有机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A139": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天所有机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A140": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天所有机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A141": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天所有机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A142": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天所有机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A143": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天所有机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A144": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天所有机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A145": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天所有机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A146": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天所有机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A147": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天所有机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A148": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天所有机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A149": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天所有机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A150": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天所有机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A151": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天所有机构反欺诈产品命中次数", + "dataType": "string", + "length": "20" + }, + "BH_A152": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天所有机构反欺诈产品命中次数", + "dataType": "string", + "length": "20" + }, + "BH_A153": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天所有机构反欺诈产品命中次数", + "dataType": "string", + "length": "20" + }, + "BH_A154": { + "productName": "多头标签", + "labelCategory": "A", + "description": "历史所有机构反欺诈产品命中次数", + "dataType": "string", + "length": "20" + }, + "BH_A155": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天所有机构关注名单命中次数", + "dataType": "string", + "length": "20" + }, + "BH_A156": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天所有机构关注名单命中次数", + "dataType": "string", + "length": "20" + }, + "BH_A157": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天所有机构关注名单命中次数", + "dataType": "string", + "length": "20" + }, + "BH_A158": { + "productName": "多头标签", + "labelCategory": "A", + "description": "历史所有机构关注名单命中次数", + "dataType": "string", + "length": "20" + }, + "BH_A159": { + "productName": "多头标签", + "labelCategory": "A", + "description": "最近所有机构查询时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_A160": { + "productName": "多头标签", + "labelCategory": "A", + "description": "最近非银机构查询时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_A161": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天比近7天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A162": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天比近15天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A163": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天比近15天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A164": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天比近30天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A165": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天比近30天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A166": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天比近30天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A167": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天比近60天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A168": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天比近90天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A169": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天比近90天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A170": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天比近180天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A171": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天比近180天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A172": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天比近180天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A173": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天比近365天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A174": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天比近365天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A175": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天比近365天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A176": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天比近365天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A177": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天比近730天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A178": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天比近730天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A179": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天比近730天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A180": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天比近730天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A181": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天比近730天非银查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A182": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天比近7天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A183": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天比近15天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A184": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天比近15天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A185": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天比近30天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A186": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天比近30天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A187": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天比近30天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A188": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天比近60天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A189": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天比近90天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A190": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天比近90天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A191": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天比近180天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A192": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天比近180天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A193": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天比近180天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A194": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天比近365天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A195": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天比近365天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A196": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天比近365天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A197": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天比近365天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A198": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天比近730天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A199": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天比近730天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A200": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天比近730天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A201": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天比近730天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A202": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天比近730天非银查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A203": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天非银比所有机构查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A204": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天非银比所有机构查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A205": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天非银比所有机构查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A206": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天非银比所有机构查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A207": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天非银比所有机构查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A208": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天非银比所有机构查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A209": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天非银比所有机构查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A210": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天非银比所有机构查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A211": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天非银比所有机构查询次数比例", + "dataType": "string", + "length": "20" + }, + "BH_A212": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天非银比所有机构查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A213": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天非银比所有机构查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A214": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天非银比所有机构查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A215": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天非银比所有机构查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A216": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天非银比所有机构查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A217": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天非银比所有机构查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A218": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天非银比所有机构查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A219": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天非银比所有机构查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A220": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天非银比所有机构查询机构数比例", + "dataType": "string", + "length": "20" + }, + "BH_A221": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近1天大型商业银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A222": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天大型商业银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A223": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天大型商业银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A224": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天大型商业银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A225": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天大型商业银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A226": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天大型商业银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A227": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天大型商业银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A228": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天大型商业银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A229": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天大型商业银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A230": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天大型商业银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A231": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近1天大型商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A232": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天大型商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A233": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天大型商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A234": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天大型商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A235": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天大型商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A236": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天大型商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A237": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天大型商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A238": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天大型商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A239": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天大型商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A240": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天大型商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A241": { + "productName": "多头标签", + "labelCategory": "A", + "description": "大型商业银行最近1次查询距今天数", + "dataType": "string", + "length": "20" + }, + "BH_A242": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近1天大型商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A243": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天大型商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A244": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天大型商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A245": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天大型商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A246": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天大型商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A247": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天大型商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A248": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天大型商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A249": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天大型商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A250": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天大型商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A251": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天大型商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A252": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近1天大型商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A253": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天大型商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A254": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天大型商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A255": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天大型商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A256": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天大型商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A257": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天大型商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A258": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天大型商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A259": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天大型商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A260": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天大型商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A261": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天大型商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A262": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天大型商业银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A263": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天大型商业银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A264": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天大型商业银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A265": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天大型商业银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A266": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天大型商业银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A267": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天大型商业银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A268": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天大型商业银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A269": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天大型商业银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A270": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天大型商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A271": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天大型商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A272": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天大型商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A273": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天大型商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A274": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天大型商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A275": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天大型商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A276": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天大型商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A277": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天大型商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A278": { + "productName": "多头标签", + "labelCategory": "A", + "description": "大型商业银行非工作日最近1次查询距今天数", + "dataType": "string", + "length": "20" + }, + "BH_A289": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近1天城市商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A290": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天城市商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A291": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天城市商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A292": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天城市商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A293": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天城市商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A294": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天城市商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A296": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天城市商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A297": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天城市商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A298": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天城市商业银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A299": { + "productName": "多头标签", + "labelCategory": "A", + "description": "城市商业银行最近1次查询距今天数", + "dataType": "string", + "length": "20" + }, + "BH_A300": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近1天城市商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A301": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天城市商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A302": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天城市商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A303": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天城市商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A304": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天城市商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A305": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天城市商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A306": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天城市商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A307": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天城市商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A308": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天城市商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A309": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天城市商业银行夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A311": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天城市商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A312": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天城市商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A313": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天城市商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A314": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天城市商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A315": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天城市商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A316": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天城市商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A317": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天城市商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A318": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天城市商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A319": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天城市商业银行夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A328": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天城市商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A329": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天城市商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A330": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天城市商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A331": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天城市商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A333": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天城市商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A334": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天城市商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A335": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天城市商业银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A336": { + "productName": "多头标签", + "labelCategory": "A", + "description": "城市商业银行非工作日最近1次查询距今天数", + "dataType": "string", + "length": "20" + }, + "BH_A337": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近1天非银机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A338": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天非银机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A339": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天非银机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A340": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天非银机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A341": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天非银机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A342": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天非银机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A343": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天非银机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A344": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天非银机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A345": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天非银机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A346": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天非银机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A347": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近1天非银机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A348": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天非银机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A349": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天非银机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A350": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天非银机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A351": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天非银机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A352": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天非银机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A353": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天非银机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A354": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天非银机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A355": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天非银机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A356": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天非银机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A357": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近1天非银机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A358": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天非银机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A359": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天非银机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A360": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天非银机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A361": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天非银机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A362": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天非银机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A363": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天非银机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A364": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天非银机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A365": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天非银机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A366": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天非银机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A367": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近1天非银机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A368": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近3天非银机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A369": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天非银机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A370": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天非银机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A371": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天非银机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A372": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天非银机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A373": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天非银机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A374": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天非银机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A375": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天非银机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A376": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天非银机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A377": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天非银机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A378": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天非银机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A379": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天非银机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A380": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天非银机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A381": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天非银机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A382": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天非银机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A383": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天非银机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A384": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天非银机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_A385": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近7天非银机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A386": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近15天非银机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A387": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近30天非银机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A388": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近60天非银机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A389": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近90天非银机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A390": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近180天非银机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A391": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近365天非银机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A392": { + "productName": "多头标签", + "labelCategory": "A", + "description": "近730天非银机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_A393": { + "productName": "多头标签", + "labelCategory": "A", + "description": "非银机构非工作日最近1次查询距今天数", + "dataType": "string", + "length": "20" + }, + "BH_B001": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的最大逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B002": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B003": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的最大逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B004": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司曾逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B005": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司曾逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B006": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的最大逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B007": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B008": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的最大逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B009": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司曾逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B010": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司曾逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B011": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B012": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的最大逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B013": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的最大逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B014": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司曾逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B015": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司曾逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B016": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B017": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的最大逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B018": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的最大逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B019": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前银行逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B020": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前消金公司逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B021": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前小额贷款公司逾期≥1天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B022": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B023": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的累计逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B024": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的累计逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B025": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司曾逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B026": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司曾逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B027": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的累计逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B028": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B029": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的累计逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B030": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司曾逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B031": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司曾逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B032": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B033": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的累计逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B034": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的累计逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B035": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司曾逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B036": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司曾逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B037": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B038": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的累计逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B039": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的累计逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B040": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前银行逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B041": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前消金公司逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B042": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前小额贷款公司逾期≥1天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B043": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近所有机构逾期≥1天距今天数", + "dataType": "string", + "length": "20" + }, + "BH_B044": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近所有机构逾期≥1天距今天数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B045": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近所有机构逾期≥1天距今天数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B046": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近消金公司逾期≥1天距今天数", + "dataType": "string", + "length": "20" + }, + "BH_B047": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近金融平台逾期≥1天距今天数", + "dataType": "string", + "length": "20" + }, + "BH_B048": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近小额贷款公司逾期≥1天距今天数", + "dataType": "string", + "length": "20" + }, + "BH_B049": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的笔数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B050": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B051": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的笔数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B052": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司曾逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B053": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司曾逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B054": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的笔数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B055": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B056": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的笔数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B057": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司曾逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B058": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司曾逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B059": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的笔数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B060": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B061": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的笔数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B062": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司曾逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B063": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司曾逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B064": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B065": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的笔数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B066": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的笔数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B067": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前消金公司逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B068": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前小额贷款公司逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B069": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前银行逾期≥1天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B070": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的机构数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B071": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B072": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥1天的机构数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B073": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司曾逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B074": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司曾逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B075": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的机构数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B076": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B077": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥1天的机构数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B078": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司曾逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B079": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司曾逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B080": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的机构数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B081": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B082": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥1天的机构数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B083": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司曾逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B084": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司曾逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B085": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B086": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的机构数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B087": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥1天的机构数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B088": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前消金公司逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B089": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前小额贷款公司逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B090": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前银行逾期≥1天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B091": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的最大逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B092": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B093": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的最大逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B094": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天银行曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B095": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B096": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天网络小额贷款公司曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B097": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B098": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的最大逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B099": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B100": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的最大逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B101": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天银行曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B102": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B103": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天网络小额贷款公司曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B104": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B105": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B106": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的最大逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B107": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的最大逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B108": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天银行曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B109": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B110": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天网络小额贷款公司曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B111": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司曾逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B112": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B113": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的最大逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B114": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的最大逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B115": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前银行逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B116": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前消金公司逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B117": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前网络小额贷款公司逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B118": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前小额贷款公司逾期≥30天的最大逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B119": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的累计逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B120": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B121": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的累计逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B122": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天银行曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B123": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B124": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天网络小额贷款公司曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B125": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B126": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的累计逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B127": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B128": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的累计逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B129": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天银行曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B130": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B131": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天网络小额贷款公司曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B132": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B133": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B134": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的累计逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B135": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的累计逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B136": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天银行曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B137": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B138": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天网络小额贷款公司曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B139": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司曾逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B140": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B141": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的累计逾期金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B142": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的累计逾期金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B143": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前银行逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B144": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前消金公司逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B145": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前网络小额贷款公司逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B146": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前小额贷款公司逾期≥30天的累计逾期金额", + "dataType": "string", + "length": "20" + }, + "BH_B147": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近所有机构逾期≥30天距今天数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B148": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近所有机构逾期≥30天距今天数", + "dataType": "string", + "length": "20" + }, + "BH_B149": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近所有机构逾期≥30天距今天数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B150": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近银行逾期≥30天距今天数", + "dataType": "string", + "length": "20" + }, + "BH_B151": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近消金公司逾期≥30天距今天数", + "dataType": "string", + "length": "20" + }, + "BH_B152": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近网络小额贷款公司逾期≥30天距今天数", + "dataType": "string", + "length": "20" + }, + "BH_B153": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "最近小额贷款公司逾期≥30天距今天数", + "dataType": "string", + "length": "20" + }, + "BH_B154": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的笔数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B155": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B156": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的笔数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B157": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司曾逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B158": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司曾逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B159": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的笔数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B160": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B161": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的笔数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B162": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司曾逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B163": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司曾逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B164": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B165": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的笔数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B166": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的笔数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B167": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司曾逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B168": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司曾逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B169": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B170": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的笔数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B171": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的笔数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B172": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前消金公司逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B173": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前小额贷款公司逾期≥30天的笔数", + "dataType": "string", + "length": "20" + }, + "BH_B174": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的机构数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B175": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B176": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构曾逾期≥30天的机构数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B177": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司曾逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B178": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司曾逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B179": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的机构数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B180": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B181": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构曾逾期≥30天的机构数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B182": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司曾逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B183": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司曾逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B184": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B185": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的机构数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B186": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构曾逾期≥30天的机构数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B187": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司曾逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B188": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司曾逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B189": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B190": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的机构数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B191": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构逾期≥30天的机构数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B192": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前消金公司逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B193": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前小额贷款公司逾期≥30天的机构数", + "dataType": "string", + "length": "20" + }, + "BH_B194": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构最大逾期天数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B195": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B196": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构最大逾期天数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B197": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B198": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B199": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构最大逾期天数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B200": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B201": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构最大逾期天数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B202": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B203": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B204": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B205": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构最大逾期天数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B206": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构最大逾期天数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B207": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B208": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B209": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构最大逾期天数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B210": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B211": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构最大逾期天数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B212": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "历史所有机构最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B213": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前银行最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B214": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "历史银行最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B215": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前消金公司最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B216": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "历史消金公司最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B217": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前小额贷款公司最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B218": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "历史小额贷款公司最大逾期天数", + "dataType": "string", + "length": "20" + }, + "BH_B219": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构最大逾期期数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B220": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构最大逾期期数", + "dataType": "string", + "length": "20" + }, + "BH_B221": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前所有机构最大逾期期数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B222": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前银行最大逾期期数", + "dataType": "string", + "length": "20" + }, + "BH_B223": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前消金公司最大逾期期数", + "dataType": "string", + "length": "20" + }, + "BH_B224": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "当前小额贷款公司最大逾期期数", + "dataType": "string", + "length": "20" + }, + "BH_B225": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构提前结清借据总金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B226": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构提前结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B227": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构提前结清借据总金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B228": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司提前结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B229": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司提前结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B230": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构提前结清借据总金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B231": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构提前结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B232": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构提前结清借据总金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B233": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司提前结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B234": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司提前结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B235": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构提前结清借据总金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B236": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构提前结清借据总金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B237": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构提前结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B238": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司提前结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B239": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司提前结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B240": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构提前结清借据数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B241": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构提前结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B242": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构提前结清借据数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B243": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司提前结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B244": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司提前结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B245": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构提前结清借据数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B246": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构提前结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B247": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构提前结清借据数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B248": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司提前结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B249": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司提前结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B250": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构提前结清借据数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B251": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构提前结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B252": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构提前结清借据数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B253": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司提前结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B254": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司提前结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B255": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近30天所有机构累计还款金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B256": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近30天所有机构累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B257": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近30天所有机构累计还款金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B258": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近30天消金公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B259": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近30天网络小额贷款公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B260": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近30天小额贷款公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B261": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构累计还款金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B262": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B263": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构累计还款金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B264": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B265": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天网络小额贷款公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B266": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B267": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构累计还款金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B268": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B269": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构累计还款金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B270": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B271": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天网络小额贷款公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B272": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B273": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构累计还款金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B274": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B275": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构累计还款金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B276": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B277": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天网络小额贷款公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B278": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司累计还款金额", + "dataType": "string", + "length": "20" + }, + "BH_B279": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构结清借据总金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B280": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B281": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构结清借据总金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B282": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B283": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B284": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构结清借据总金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B285": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构结清借据总金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B286": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B287": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B288": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B289": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构结清借据总金额(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B290": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构结清借据总金额(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B291": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B292": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B293": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司结清借据总金额", + "dataType": "string", + "length": "20" + }, + "BH_B294": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构结清借据数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B295": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B296": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构结清借据数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B297": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天消金公司结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B298": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天小额贷款公司结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B299": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构结清借据数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B300": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构结清借据数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B301": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B302": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天消金公司结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B303": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天小额贷款公司结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B304": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构结清借据数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B305": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构结清借据数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B306": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B307": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天消金公司结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B308": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天小额贷款公司结清借据数", + "dataType": "string", + "length": "20" + }, + "BH_B309": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构被代偿借据数", + "dataType": "string", + "length": "20" + }, + "BH_B310": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构被代偿借据数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B311": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近90天所有机构被代偿借据数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B312": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构被代偿借据数", + "dataType": "string", + "length": "20" + }, + "BH_B313": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构被代偿借据数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B314": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近180天所有机构被代偿借据数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B315": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构被代偿借据数(非循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_B316": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构被代偿借据数", + "dataType": "string", + "length": "20" + }, + "BH_B317": { + "productName": "逾期信息", + "labelCategory": "B", + "description": "近365天所有机构被代偿借据数(循环贷)", + "dataType": "string", + "length": "20" + }, + "BH_C001": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C002": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构非循环贷单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C003": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构循环贷单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C004": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天消金公司单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C005": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天小额贷款公司单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C006": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C007": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构非循环贷单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C008": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构循环贷单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C009": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天消金公司单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C010": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天小额贷款公司单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C011": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C012": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构非循环贷单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C013": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构循环贷单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C014": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天消金公司单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C015": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天小额贷款公司单笔放款最大金额", + "dataType": "string", + "length": "20" + }, + "BH_C016": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天所有机构放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C017": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天所有机构非循环贷放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C018": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天所有机构循环贷放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C019": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天消金公司放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C020": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天小额贷款公司放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C021": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C022": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构非循环贷放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C023": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构循环贷放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C024": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天消金公司放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C025": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天小额贷款公司放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C026": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C027": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构非循环贷放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C028": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构循环贷放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C029": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天消金公司放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C030": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天小额贷款公司放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C031": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C032": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构非循环贷放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C033": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构循环贷放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C034": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天消金公司放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C035": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天小额贷款公司放款笔数", + "dataType": "string", + "length": "20" + }, + "BH_C036": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天所有机构放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C037": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天所有机构非循环贷放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C038": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天所有机构循环贷放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C039": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天消金公司放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C040": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天小额贷款公司放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C041": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C042": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构非循环贷放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C043": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构循环贷放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C044": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天消金公司放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C045": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天小额贷款公司放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C046": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C047": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构非循环贷放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C048": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构循环贷放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C049": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天消金公司放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C050": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天小额贷款公司放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C051": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C052": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构非循环贷放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C053": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构循环贷放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C054": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天消金公司放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C055": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天小额贷款公司放款机构数", + "dataType": "string", + "length": "20" + }, + "BH_C056": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天所有机构放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C057": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天所有机构非循环贷放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C058": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天所有机构循环贷放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C059": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天消金公司放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C060": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近30天小额贷款公司放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C061": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C062": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构非循环贷放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C063": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天所有机构循环贷放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C064": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天消金公司放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C065": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近90天小额贷款公司放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C066": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C067": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构非循环贷放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C068": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天所有机构循环贷放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C069": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天消金公司放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C070": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近180天小额贷款公司放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C071": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C072": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构非循环贷放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C073": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天所有机构循环贷放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C074": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天消金公司放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C075": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "近365天小额贷款公司放款金额", + "dataType": "string", + "length": "20" + }, + "BH_C076": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "最近所有机构放款时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_C077": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "最近所有机构非循环贷放款时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_C078": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "最近所有机构循环贷放款时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_C079": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "最近消金公司放款时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_C080": { + "productName": "在贷信息", + "labelCategory": "C", + "description": "最近小额贷款公司放款时间间隔", + "dataType": "string", + "length": "20" + }, + "BH_D001": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天所有机构借款申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D002": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天消金公司借款申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D004": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天所有机构借款申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D005": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天消金公司借款申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D006": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天小额贷款公司借款申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D007": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天所有机构借款申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D008": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天消金公司借款申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D009": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天小额贷款公司借款申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D010": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天所有机构借款申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D011": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天消金公司借款申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D012": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天小额贷款公司借款申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D013": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天所有机构借款申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D014": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天消金公司借款申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D015": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天小额贷款公司借款申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D016": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天所有机构借款申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D017": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天消金公司借款申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D018": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天小额贷款公司借款申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D019": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天所有机构借款申请金额", + "dataType": "string", + "length": "20" + }, + "BH_D020": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天消金公司借款申请金额", + "dataType": "string", + "length": "20" + }, + "BH_D021": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天小额贷款公司借款申请金额", + "dataType": "string", + "length": "20" + }, + "BH_D022": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天所有机构借款申请金额", + "dataType": "string", + "length": "20" + }, + "BH_D023": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天消金公司借款申请金额", + "dataType": "string", + "length": "20" + }, + "BH_D024": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天小额贷款公司借款申请金额", + "dataType": "string", + "length": "20" + }, + "BH_D025": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天所有机构借款申请金额", + "dataType": "string", + "length": "20" + }, + "BH_D026": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天消金公司借款申请金额", + "dataType": "string", + "length": "20" + }, + "BH_D027": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天小额贷款公司借款申请金额", + "dataType": "string", + "length": "20" + }, + "BH_D028": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天所有机构授信申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D029": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天消金公司授信申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D031": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天所有机构授信申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D032": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天消金公司授信申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D034": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天所有机构授信申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D035": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天消金公司授信申请次数", + "dataType": "string", + "length": "20" + }, + "BH_D037": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天所有机构授信申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D038": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天消金公司授信申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D039": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近90天小额贷款公司授信申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D040": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天所有机构授信申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D041": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近180天消金公司授信申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D043": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天所有机构授信申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_D045": { + "productName": "在贷信息", + "labelCategory": "D", + "description": "近365天小额贷款公司授信申请机构数", + "dataType": "string", + "length": "20" + }, + "BH_E001": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构非循环贷授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E002": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E003": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构循环贷授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E004": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天消金公司授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E005": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天小额贷款公司授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E006": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构非循环贷授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E007": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E008": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构循环贷授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E009": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天消金公司授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E010": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天小额贷款公司授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E011": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构非循环贷授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E012": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E013": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构循环贷授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E014": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天消金公司授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E015": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天小额贷款公司授信机构数", + "dataType": "string", + "length": "20" + }, + "BH_E016": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构非循环贷授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E017": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E018": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构循环贷授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E019": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天消金公司授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E020": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天小额贷款公司授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E021": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构非循环贷授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E022": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E023": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构循环贷授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E024": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天消金公司授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E025": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天小额贷款公司授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E026": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构非循环贷授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E027": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E028": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构循环贷授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E029": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天消金公司授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E030": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天小额贷款公司授信账户数", + "dataType": "string", + "length": "20" + }, + "BH_E031": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构非循环贷授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E032": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E033": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构循环贷授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E034": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天消金公司授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E035": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天小额贷款公司授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E036": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构非循环贷授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E037": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E038": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构循环贷授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E039": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天消金公司授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E040": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天小额贷款公司授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E041": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构非循环贷授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E042": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E043": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构循环贷授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E044": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天消金公司授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E045": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天小额贷款公司授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E046": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "当前所有机构循环贷有效账户授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E047": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "当前消金公司循环贷有效账户授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E048": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "当前小额贷款公司循环贷有效账户授信总额度", + "dataType": "string", + "length": "20" + }, + "BH_E049": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "当前所有机构循环贷有效账户最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E050": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "当前消金公司循环贷有效账户最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E051": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "当前小额贷款公司循环贷有效账户最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E052": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构非循环贷最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E053": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构循环贷最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E054": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天所有机构最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E055": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天消金公司最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E056": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近90天小额贷款公司最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E057": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构非循环贷最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E058": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构循环贷最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E059": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天所有机构最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E060": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天消金公司最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E061": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近180天小额贷款公司最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E062": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构非循环贷最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E063": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构循环贷最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E064": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天所有机构最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E065": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天消金公司最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_E066": { + "productName": "在贷信息", + "labelCategory": "E", + "description": "近365天小额贷款公司最高授信额度", + "dataType": "string", + "length": "20" + }, + "BH_F001": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前所有机构非循环贷在贷机构数", + "dataType": "string", + "length": "20" + }, + "BH_F002": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前所有机构循环贷在贷机构数", + "dataType": "string", + "length": "20" + }, + "BH_F003": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前所有机构在贷机构数", + "dataType": "string", + "length": "20" + }, + "BH_F004": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前消金公司在贷机构数", + "dataType": "string", + "length": "20" + }, + "BH_F005": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前小额贷款公司在贷机构数", + "dataType": "string", + "length": "20" + }, + "BH_F006": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前所有机构非循环贷在贷借款笔数", + "dataType": "string", + "length": "20" + }, + "BH_F007": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前所有机构循环贷在贷借款笔数", + "dataType": "string", + "length": "20" + }, + "BH_F008": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前所有机构在贷借款笔数", + "dataType": "string", + "length": "20" + }, + "BH_F009": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前消金公司在贷借款笔数", + "dataType": "string", + "length": "20" + }, + "BH_F010": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前小额贷款公司在贷借款笔数", + "dataType": "string", + "length": "20" + }, + "BH_F011": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前所有机构非循环贷在贷余额", + "dataType": "string", + "length": "20" + }, + "BH_F012": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前所有机构循环贷在贷余额", + "dataType": "string", + "length": "20" + }, + "BH_F013": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前所有机构在贷余额", + "dataType": "string", + "length": "20" + }, + "BH_F014": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前消金公司在贷余额", + "dataType": "string", + "length": "20" + }, + "BH_F015": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "当前小额贷款公司在贷余额", + "dataType": "string", + "length": "20" + }, + "BH_F016": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近90天所有机构非循环贷在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F017": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近90天所有机构循环贷在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F018": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近90天所有机构在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F019": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近90天消金公司在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F020": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近90天小额贷款公司在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F021": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近180天所有机构非循环贷在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F022": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近180天所有机构循环贷在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F023": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近180天所有机构在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F024": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近180天消金公司在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F025": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近180天小额贷款公司在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F026": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近365天所有机构非循环贷在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F027": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近365天所有机构循环贷在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F028": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近365天所有机构在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F029": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近365天消金公司在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_F030": { + "productName": "在贷信息", + "labelCategory": "F", + "description": "近365天小额贷款公司在贷余额>0的月份数", + "dataType": "string", + "length": "20" + }, + "BH_G001": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "历史(最长5年)所有机构非循环贷所有信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G002": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "历史(最长5年)所有机构所有信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G003": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "历史(最长5年)所有机构循环贷所有信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G004": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "历史(最长5年)消金公司所有信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G005": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "历史(最长5年)小额贷款公司所有信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G006": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构非循环贷有效信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G007": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构循环贷有效信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G008": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构有效信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G009": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前消金公司有效信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G010": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前小额贷款公司有效信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G011": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构非循环贷有效信贷账户最长开户日期", + "dataType": "string", + "length": "20" + }, + "BH_G012": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构循环贷有效信贷账户最长开户日期", + "dataType": "string", + "length": "20" + }, + "BH_G013": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构有效信贷账户最长开户日期", + "dataType": "string", + "length": "20" + }, + "BH_G014": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前消金公司有效信贷账户最长开户日期", + "dataType": "string", + "length": "20" + }, + "BH_G015": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前小额贷款公司有效信贷账户最长开户日期", + "dataType": "string", + "length": "20" + }, + "BH_G016": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构非循环贷有余额的账户数", + "dataType": "string", + "length": "20" + }, + "BH_G017": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构循环贷有余额的账户数", + "dataType": "string", + "length": "20" + }, + "BH_G018": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构有余额的账户数", + "dataType": "string", + "length": "20" + }, + "BH_G019": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前消金公司有余额的账户数", + "dataType": "string", + "length": "20" + }, + "BH_G020": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前小额贷款公司有余额的账户数", + "dataType": "string", + "length": "20" + }, + "BH_G021": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构非循环贷账龄6个月以上从未逾期的有效信贷的账户数", + "dataType": "string", + "length": "20" + }, + "BH_G022": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构循环贷账龄6个月以上从未逾期的有效信贷的账户数", + "dataType": "string", + "length": "20" + }, + "BH_G023": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构账龄6个月以上从未逾期的有效信贷的账户数", + "dataType": "string", + "length": "20" + }, + "BH_G024": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前消金公司账龄6个月以上从未逾期的有效信贷的账户数", + "dataType": "string", + "length": "20" + }, + "BH_G025": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前小额贷款公司账龄6个月以上从未逾期的有效信贷的账户数", + "dataType": "string", + "length": "20" + }, + "BH_G026": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构非循环贷账龄6个月以上的有效信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G027": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构循环贷账龄6个月以上的有效信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G028": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前所有机构账龄6个月以上的有效信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G029": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前消金公司账龄6个月以上的有效信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G030": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "当前小额贷款公司账龄6个月以上的有效信贷账户数", + "dataType": "string", + "length": "20" + }, + "BH_G031": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来1个月所有机构非循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G032": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来1个月所有机构循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G033": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来1个月所有机构自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G034": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来1个月消金公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G035": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来1个月小额贷款公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G036": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来2个月所有机构非循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G037": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来2个月所有机构循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G038": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来2个月所有机构自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G039": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来2个月消金公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G040": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来2个月小额贷款公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G041": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来3个月所有机构非循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G042": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来3个月所有机构循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G043": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来3个月所有机构自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G044": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来3个月消金公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G045": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来3个月小额贷款公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G046": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来4个月所有机构非循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G047": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来4个月所有机构循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G048": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来4个月所有机构自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G049": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来4个月消金公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G050": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来4个月小额贷款公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G051": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来5个月所有机构非循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G052": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来5个月所有机构循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G053": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来5个月所有机构自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G054": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来5个月消金公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G055": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来5个月小额贷款公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G056": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来6个月所有机构非循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G057": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来6个月所有机构循环贷自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G058": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来6个月所有机构自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G059": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来6个月消金公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_G060": { + "productName": "在贷信息", + "labelCategory": "G", + "description": "未来6个月小额贷款公司自然月负债", + "dataType": "string", + "length": "20" + }, + "BH_H001": { + "productName": "多头画像", + "labelCategory": "H", + "description": "利率等级偏好", + "dataType": "string", + "length": "20" + }, + "BH_H002": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近15天所有机构的利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H003": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近30天所有机构的利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H004": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近60天所有机构的利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H005": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近90天所有机构的利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H006": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近180天所有机构的利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H007": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近365天所有机构的利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H008": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近15天高利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H009": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近30天高利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H010": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近60天高利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H011": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近90天高利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H012": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近180天高利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H013": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近365天高利率偏好指数", + "dataType": "string", + "length": "20" + }, + "BH_H014": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天银行查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H015": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天银行查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H017": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天汽车金融机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H018": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天金融平台查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H019": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天金融平台查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H020": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天消金公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H021": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天消金公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H022": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H023": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H024": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天网络小额贷款公司查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H025": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天网络小额贷款公司查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H026": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天所有机构查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H027": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天所有机构查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H028": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天所有机构夜间查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H029": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近1天所有机构夜间查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H030": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H031": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H033": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天汽车金融机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H034": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天金融平台非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H035": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天金融平台非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H036": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天消金公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H037": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天消金公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H038": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H039": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H040": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天网络小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H041": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天网络小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H042": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天所有机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H043": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天所有机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H044": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天所有机构夜间非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H045": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近7天所有机构夜间非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H046": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H047": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H049": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天汽车金融机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H050": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天金融平台非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H051": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天金融平台非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H052": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天消金公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H053": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天消金公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H054": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H055": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H056": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天网络小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H057": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天网络小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H058": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天所有机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H059": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天所有机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H060": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天所有机构夜间非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H061": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近15天所有机构夜间非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H062": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H063": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H065": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天汽车金融机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H066": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天金融平台非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H067": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天金融平台非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H068": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天消金公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H069": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天消金公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H070": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H071": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H072": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天网络小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H073": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天网络小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H074": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天所有机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H075": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天所有机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H076": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天所有机构夜间非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H077": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近30天所有机构夜间非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H078": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H079": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H081": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天汽车金融机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H082": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天金融平台非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H083": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天金融平台非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H084": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天消金公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H085": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天消金公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H086": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H087": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H088": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天网络小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H089": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天网络小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H090": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天所有机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H091": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天所有机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H092": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天所有机构夜间非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H093": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近60天所有机构夜间非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H094": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H095": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H099": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天金融平台非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H100": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天消金公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H101": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天消金公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H102": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H103": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H104": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天网络小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H105": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天网络小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H106": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天所有机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H107": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天所有机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H108": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天所有机构夜间非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H109": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近90天所有机构夜间非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H110": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H111": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H113": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天汽车金融机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H115": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天金融平台非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H116": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天消金公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H117": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天消金公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H118": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H120": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天网络小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H121": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天网络小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H122": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天所有机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H123": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天所有机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H124": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天所有机构夜间非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H125": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近180天所有机构夜间非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H126": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天银行非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H127": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天银行非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H129": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天汽车金融机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H131": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天金融平台非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H132": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天消金公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H133": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天消金公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H134": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天小额贷款公司非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H135": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H137": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天网络小额贷款公司非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H138": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天所有机构非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H139": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天所有机构非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H140": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天所有机构夜间非工作日查询次数", + "dataType": "string", + "length": "20" + }, + "BH_H141": { + "productName": "多头标签", + "labelCategory": "H", + "description": "近365天所有机构夜间非工作日查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_H142": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近3个月银行查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H143": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近3个月非银机构查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H144": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近3个月消金公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H145": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近3个月金融平台查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H146": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近3个月小额贷款公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H147": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近3个月网络小额贷款公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H149": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近3个月所有机构查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H150": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近6个月银行查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H151": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近6个月非银机构查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H152": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近6个月消金公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H153": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近6个月金融平台查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H154": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近6个月小额贷款公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H155": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近6个月网络小额贷款公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H157": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近6个月所有机构查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H158": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近9个月银行查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H159": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近9个月非银机构查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H160": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近9个月消金公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H161": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近9个月金融平台查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H162": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近9个月小额贷款公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H163": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近9个月网络小额贷款公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H165": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近9个月所有机构查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H166": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近12个月银行查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H167": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近12个月非银机构查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H168": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近12个月消金公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H169": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近12个月金融平台查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H170": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近12个月小额贷款公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H171": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近12个月网络小额贷款公司查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_H173": { + "productName": "多头画像", + "labelCategory": "H", + "description": "近12个月所有机构查询次数的时序波动指数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q001_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询次数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q002_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询次数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q003_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询次数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q004_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询次数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q005_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询次数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q006_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近15天所有机构查询机构数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q007_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近30天所有机构查询机构数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q008_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构查询机构数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q009_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构查询机构数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q010_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构查询机构数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q011_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "最近所有机构查询时间间隔的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q012_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构最大逾期天数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q013_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构最大逾期天数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q014_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构最大逾期天数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q015_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近90天所有机构授信机构数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q016_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近180天所有机构授信机构数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q017_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "近365天所有机构授信机构数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q0": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q0分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q5": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q5分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q10": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q10分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q15": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q15分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q20": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q20分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q018_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构在贷机构数的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q25": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q25分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q30": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q30分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q35": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q35分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q40": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q40分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q45": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q45分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q50": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q50分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q55": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q55分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q60": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q60分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q65": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q65分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q70": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q70分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q75": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q75分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q80": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q80分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q85": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q85分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q90": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q90分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q95": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的q95分位数", + "dataType": "string", + "length": "20" + }, + "BH_Q019_q100": { + "productName": "多头画像", + "labelCategory": "Q", + "description": "当前所有机构有效信贷账户最长开户时长的100分位数", + "dataType": "string", + "length": "20" + }, + "BH_Qu001": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近30天所有机构查询次数在整体客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu002": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近30天非银机构查询次数在非银客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu003": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近30天银行机构查询次数在银行客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu004": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近60天所有机构查询次数在整体客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu005": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近60天非银机构查询次数在非银客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu006": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近60天银行机构查询次数在银行客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu007": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近90天所有机构查询次数在整体客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu008": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近90天非银机构查询次数在非银客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu009": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近90天银行机构查询次数在银行客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu010": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近180天所有机构查询次数在整体客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu011": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近180天非银机构查询次数在非银客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu012": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近180天银行机构查询次数在银行客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu013": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近30天所有机构周末活跃查询次数在周末活跃整体客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu014": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近30天非银机构周末活跃查询次数在周末活跃非银客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_Qu015": { + "productName": "多头画像", + "labelCategory": "Qu", + "description": "近30天银行机构周末活跃查询次数在周末活跃银行客群上排名", + "dataType": "string", + "length": "20" + }, + "BH_X001": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数", + "dataType": "string", + "length": "20" + }, + "BH_X002": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数", + "dataType": "string", + "length": "20" + }, + "BH_X003": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数", + "dataType": "string", + "length": "20" + }, + "BH_X004": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数", + "dataType": "string", + "length": "20" + }, + "BH_X005": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数", + "dataType": "string", + "length": "20" + }, + "BH_X006": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数", + "dataType": "string", + "length": "20" + }, + "BH_X007": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X008": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X009": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X010": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X011": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X012": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X013": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X014": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X015": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X016": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X017": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X018": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X019": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X020": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X021": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X022": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X023": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X024": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X025": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X026": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X027": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X028": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X029": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X030": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X031": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X032": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X033": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X034": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X035": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X036": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X037": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X038": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X039": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X040": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X041": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X042": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X043": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X044": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X045": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X046": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X047": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X048": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X049": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X050": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X051": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X052": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X053": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X054": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X055": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X056": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X057": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X058": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X059": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X060": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X061": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X062": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X063": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X064": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X065": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X066": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X067": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询笔数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X068": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询笔数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X069": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询笔数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X070": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询笔数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X071": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询笔数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X072": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询笔数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X073": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_X074": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_X075": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_X076": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_X077": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_X078": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数", + "dataType": "string", + "length": "20" + }, + "BH_X079": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X080": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X081": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X082": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X083": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X084": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-银行类机构", + "dataType": "string", + "length": "20" + }, + "BH_X085": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X086": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X087": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X088": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X089": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X090": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-非银类机构", + "dataType": "string", + "length": "20" + }, + "BH_X091": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X092": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X093": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X094": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X095": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X096": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-大型商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X097": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X098": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X099": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X100": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X101": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X102": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-城市商业银行", + "dataType": "string", + "length": "20" + }, + "BH_X103": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X104": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X105": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X106": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X107": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X108": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-金融平台类机构", + "dataType": "string", + "length": "20" + }, + "BH_X109": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X110": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X111": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X112": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X113": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X114": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-融资租赁类机构", + "dataType": "string", + "length": "20" + }, + "BH_X115": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X116": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X117": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X118": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X119": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X120": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-汽车金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X121": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X122": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X123": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X124": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X125": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X126": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-消费金融类机构", + "dataType": "string", + "length": "20" + }, + "BH_X127": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X128": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X129": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X130": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X131": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X132": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X133": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X134": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X135": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X136": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X137": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X138": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-网络小额贷款类机构", + "dataType": "string", + "length": "20" + }, + "BH_X139": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近1个小时内查询机构数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X140": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近2个小时内查询机构数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X141": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近3个小时内查询机构数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X142": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近6个小时内查询机构数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X143": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近12个小时内查询机构数-其他机构", + "dataType": "string", + "length": "20" + }, + "BH_X144": { + "productName": "小时级多头", + "labelCategory": "X", + "description": "近24个小时内查询机构数-其他机构", + "dataType": "string", + "length": "20" + } +} \ No newline at end of file diff --git a/src/layouts/AuthLayout.vue b/src/layouts/AuthLayout.vue new file mode 100644 index 0000000..e585e2f --- /dev/null +++ b/src/layouts/AuthLayout.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/layouts/GlobalLayout.vue b/src/layouts/GlobalLayout.vue new file mode 100644 index 0000000..f98df9f --- /dev/null +++ b/src/layouts/GlobalLayout.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/src/layouts/HomeLayout.vue b/src/layouts/HomeLayout.vue new file mode 100644 index 0000000..c7e8eb5 --- /dev/null +++ b/src/layouts/HomeLayout.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/src/layouts/PageLayout.vue b/src/layouts/PageLayout.vue new file mode 100644 index 0000000..0ffa498 --- /dev/null +++ b/src/layouts/PageLayout.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..de3950e --- /dev/null +++ b/src/main.js @@ -0,0 +1,29 @@ +import 'nprogress/nprogress.css'; // 默认样式,可根据需要自定义样式 +import './assets/main.css' +import { createApp } from 'vue' +import { createPinia } from 'pinia' +import App from './App.vue' +import router from './router' +import 'vant/lib/index.css'; +import { useSEO } from './composables/useSEO' + +const app = createApp(App) +app.use(createPinia()) +app.use(router) + +app.mount('#app') + +// 在应用挂载后初始化SEO功能,确保路由已准备好 +router.isReady().then(() => { + const { updateSEOByRoute } = useSEO() +}) + +document.addEventListener('DOMContentLoaded', () => { + const loadingElement = document.getElementById('app-loading'); + if (loadingElement) { + loadingElement.style.opacity = '0'; + setTimeout(() => { + loadingElement.parentNode.removeChild(loadingElement); + }, 500); // 动画过渡时间 + } +}); \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..15ea33c --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,537 @@ +import { createRouter, createWebHistory } from "vue-router"; +import NProgress from "nprogress"; +import GlobalLayout from "@/layouts/GlobalLayout.vue"; +import HomeLayout from "@/layouts/HomeLayout.vue"; +import PageLayout from "@/layouts/PageLayout.vue"; +import index from "@/views/index.vue"; +import Promote from "@/views/Promote.vue"; +import PromotePage from "@/views/PromotePage.vue"; +import { useAgentStore } from "@/stores/agentStore"; +import { useUserStore } from "@/stores/userStore"; +import { useDialogStore } from "@/stores/dialogStore"; +import { useEnv } from "@/composables/useEnv"; +import { storeToRefs } from "pinia"; +import { useSEO } from "@/composables/useSEO"; + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + // 路由切换时的滚动行为 + scrollBehavior(to, from, savedPosition) { + // 如果有保存的位置(浏览器前进/后退) + if (savedPosition) { + return savedPosition; + } else { + // 否则滚动到顶部 + return { top: 0, behavior: "smooth" }; + } + }, + routes: [ + { + path: "/", + component: GlobalLayout, // 使用 Layout 作为父组件 + children: [ + { + path: "", + component: HomeLayout, // 使用 Layout 作为父组件 + children: [ + { + path: "", + name: "index", + component: index, + }, + { + path: "promote", + name: "promote", + component: PromotePage, + }, + { + path: "/agent", + name: "agent", + component: () => import("@/views/Agent.vue"), + meta: { title: "代理主页", requiresAuth: true }, + }, + { + path: "me", + name: "me", + component: () => import("@/views/Me/index.vue"), + }, + ], + }, + { + path: "", + component: PageLayout, + children: [ + { + path: "/historyQuery", + name: "history", + component: () => import("@/views/HistoryQuery.vue"), + meta: { + title: "历史报告", + requiresAuth: true, + notNeedBindPhone: true, + }, + }, + { + path: "/help", + name: "help", + component: () => import("@/views/Help.vue"), + meta: { title: "帮助中心" }, + }, + { + path: "/help/detail", + name: "helpDetail", + component: () => import("@/views/HelpDetail.vue"), + meta: { title: "帮助中心" }, + }, + { + path: "/help/guide", + name: "helpGuide", + component: () => import("@/views/HelpGuide.vue"), + meta: { title: "引导指南" }, + }, + { + path: "/agent/system-guide", + name: "agentSystemGuide", + component: () => + import("@/views/AgentSystemGuide.vue"), + meta: { title: "代理系统指南" }, + }, + { + path: "/withdraw", + name: "withdraw", + component: () => import("@/views/Withdraw.vue"), + meta: { + title: "提现", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "/service", + name: "service", + component: () => import("@/views/Service.vue"), + meta: { title: "客服" }, + }, + { + path: "/complaint", + name: "complaint", + component: () => import("@/views/Complaint.vue"), + meta: { title: "投诉" }, + }, + { + path: "/report", + name: "report", + component: () => import("@/views/Report.vue"), + meta: { + title: "报告结果", + requiresAuth: true, + notNeedBindPhone: true, + }, + }, + { + path: "/example", + name: "example", + component: () => import("@/views/Example.vue"), + meta: { title: "示例报告", notNeedBindPhone: true }, + }, + { + path: "/vant-theme-test", + name: "vantThemeTest", + component: () => + import("@/views/VantThemeTest.vue"), + meta: { title: "Vant主题色测试" }, + }, + { + path: "/privacyPolicy", + name: "privacyPolicy", + component: () => + import("@/views/PrivacyPolicy.vue"), + meta: { title: "隐私政策" }, + }, + { + path: "/userAgreement", + name: "userAgreement", + component: () => + import("@/views/UserAgreement.vue"), + meta: { title: "用户协议" }, + }, + { + path: "/agentManageAgreement", + name: "agentManageAgreement", + component: () => + import("@/views/AgentManageAgreement.vue"), + meta: { title: "代理管理协议" }, + }, + { + path: "/agentSerivceAgreement", + name: "agentSerivceAgreement", + component: () => + import("@/views/AgentServiceAgreement.vue"), + meta: { title: "信息技术服务合同" }, + }, + { + path: "/inquire/:feature", + name: "inquire", + component: () => import("@/views/Inquire.vue"), + meta: { title: "查询报告" }, + }, + { + path: "/authorization", + name: "authorization", + component: () => + import("@/views/Authorization.vue"), + meta: { title: "授权书" }, + }, + { + path: "/payment/result", + name: "paymentResult", + component: () => + import("@/views/PaymentResult.vue"), + meta: { + title: "支付结果", + requiresAuth: true, + notNeedBindPhone: true, + }, + }, + ], + }, + { + path: "agent", + component: PageLayout, + children: [ + { + path: "/agent/promote", + name: "agentPromote", + component: Promote, + meta: { + title: "推广报告", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "/agent/promote/poster", + name: "agentPromotePoster", + component: () => + import("@/views/PromotePoster.vue"), + meta: { + title: "推广海报", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "/agent/promotion/query/list", + name: "agentPromotionQueryList", + component: () => + import("@/views/AgentPromotionHistory.vue"), + meta: { + title: "推广查询记录", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "promoteDetails", + name: "promoteDetails", + component: () => + import("@/views/AgentPromoteDetails.vue"), + meta: { + title: "我的推广收益", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "rewardsDetails", + name: "rewardsDetails", + component: () => + import("@/views/AgentRewardsDetails.vue"), + meta: { + title: "下级推广收益", + requiresAuth: true, + requiresAgent: true, + }, + }, + + { + path: "invitation", + name: "invitation", + component: () => + import("@/views/InvitationPage.vue"), + meta: { + title: "邀请下级", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "withdraw", + name: "withdraw", + component: () => import("@/views/Withdraw.vue"), + meta: { + title: "提现", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "withdrawDetails", + name: "withdrawDetails", + component: () => + import("@/views/WithdrawDetails.vue"), + meta: { + title: "提现记录", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "teamList", + name: "teamList", + component: () => import("@/views/TeamList.vue"), + meta: { + title: "我的团队", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "upgradeSubordinate", + name: "upgradeSubordinate", + component: () => + import("@/views/UpgradeSubordinate.vue"), + meta: { + title: "调整下级级别", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "upgrade", + name: "agentUpgrade", + component: () => import("@/views/AgentUpgrade.vue"), + meta: { + title: "升级代理", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "subordinateList", + name: "subordinateList", + component: () => + import("@/views/SubordinateList.vue"), + meta: { + title: "我的下级", + requiresAuth: true, + requiresAgent: true, + }, + }, + { + path: "subordinateDetail/:id", + name: "subordinateDetail", + component: () => + import("@/views/SubordinateDetail.vue"), + meta: { + title: "下级贡献详情", + requiresAuth: true, + requiresAgent: true, + }, + }, + ], + }, + { + path: "app", + children: [ + { + path: "authorization", + name: "appAuthorization", + component: () => + import("@/views/Authorization.vue"), + meta: { title: "授权书" }, + }, + { + path: "privacyPolicy", + name: "appPrivacyPolicy", + component: () => + import("@/views/PrivacyPolicy.vue"), + meta: { title: "隐私政策" }, + }, + { + path: "userAgreement", + name: "appUserAgreement", + component: () => + import("@/views/UserAgreement.vue"), + meta: { title: "用户协议" }, + }, + { + path: "agentManageAgreement", + name: "appAgentManageAgreement", + component: () => + import("@/views/AgentManageAgreement.vue"), + meta: { title: "代理管理协议" }, + }, + { + path: "agentSerivceAgreement", + name: "appAgentSerivceAgreement", + component: () => + import("@/views/AgentServiceAgreement.vue"), + meta: { title: "信息技术服务合同" }, + }, + ], + }, + ], + }, + + { + path: "/login", + name: "login", + component: () => import("@/views/Login.vue"), + }, + { + path: "/register", + name: "register", + component: () => import("@/views/Register.vue"), + }, + { + path: "/agent/promotionInquire/:linkIdentifier", + name: "promotionInquire", + component: () => import("@/views/PromotionInquire.vue"), + meta: { notNeedBindPhone: true }, + }, + { + path: "/agent/invitationAgentApply/:linkIdentifier", + name: "invitationAgentApply", + component: () => import("@/views/InvitationAgentApply.vue"), + meta: { title: "代理申请" }, + }, + { + path: "/report/share/:linkIdentifier", + name: "reportShare", + component: () => import("@/views/ReportShare.vue"), + }, + { + path: "/:pathMatch(.*)*", + name: "NotFound", + component: () => import("@/views/NotFound.vue"), + }, + ], +}); +NProgress.configure({ + easing: "ease", // 动画方式 + speed: 500, // 递增进度条的速度(毫秒) + showSpinner: false, // 是否显示加载的圆圈 + trickleSpeed: 200, // 自动递增间隔 + minimum: 0.3, // 初始化最小百分比 +}); + +// 路由导航守卫 +router.beforeEach(async (to, from, next) => { + NProgress.start(); + const isAuthenticated = localStorage.getItem("token"); + const agentStore = useAgentStore(); + const userStore = useUserStore(); + const dialogStore = useDialogStore(); + const authStore = useAuthStore(); + const { isWeChat } = useEnv(); + const { isAgent, isLoaded } = storeToRefs(agentStore); + const { mobile, isLoggedIn } = storeToRefs(userStore); + // 检查 token 是否过期 + const accessExpire = localStorage.getItem("accessExpire"); + const now = Date.now(); + let isTokenExpired = false; + if (accessExpire) { + isTokenExpired = now > parseInt(accessExpire) * 1000; + } + // ============================================================ + // 场景 2: 需要登录的页面 + 无 token 或 token 过期 → 跳转登录 + // ============================================================ + if (to.meta.requiresAuth && (!isAuthenticated || isTokenExpired)) { + // 定义 tabbar 页面列表 + const tabbarPages = ["index", "promote", "agent", "me"]; + // 如果是从 tabbar 页面跳转过来的,不设置 query + const isFromTabbar = from && tabbarPages.includes(from.name); + + if (isFromTabbar) { + next({ path: "/login" }); + } else { + const loginQuery = { + redirect: to.fullPath, + }; + if (from && from.name === "promotionInquire") { + loginQuery.from = "promotionInquire"; + } + next({ path: "/login", query: loginQuery }); + } + return; + } + + // ============================================================ + // 场景 3: 已登录状态下的处理 + // ============================================================ + if (isAuthenticated && !isTokenExpired) { + // 确保用户信息已加载 + if (!isLoggedIn.value) { + try { + await userStore.fetchUserInfo(); + } catch (err) { + console.error("Error loading user info:", err); + } + } + + // 检查代理权限(仅在 requiresAgent 为 true 时) + if (to.meta.requiresAgent) { + if (!mobile.value) { + if (to.meta.notNeedBindPhone) { + dialogStore.openBindPhone(); + } else { + next("/register"); + return; + } + } + + // 确保代理信息已加载 + if (!isLoaded.value) { + try { + await agentStore.fetchAgentStatus(); + } catch (err) { + console.error("Error loading agent info:", err); + } + } + + // 如果不是代理,跳转到注册页(带上手机号参数) + if (!isAgent.value) { + const registerQuery = {}; + if (mobile.value) { + registerQuery.mobile = mobile.value; + } + next({ path: "/register", query: registerQuery }); + return; + } + } + } + + // ============================================================ + // 其他情况正常通过 + // ============================================================ + next(); +}); +router.afterEach((to) => { + NProgress.done(); // 结束进度条 + + // SEO优化:更新页面标题和meta信息 + const { updateSEO } = useSEO(); + + // 根据路由meta信息更新SEO + if (to.meta.title) { + const seoConfig = { + title: `${to.meta.title} - 愉悦查`, + description: `愉悦查${to.meta.title}页面,提供专业的大数据风险管控服务。`, + url: `https://www.zhinengcha.cn${to.path}`, + }; + updateSEO(seoConfig); + } +}); + +export default router; diff --git a/src/services/authService.js b/src/services/authService.js new file mode 100644 index 0000000..e377492 --- /dev/null +++ b/src/services/authService.js @@ -0,0 +1,58 @@ +import useApiFetch from "@/composables/useApiFetch"; + +class AuthService { + detectPlatform() { + const ua = navigator.userAgent.toLowerCase(); + if (/micromessenger/.test(ua)) return "wxh5"; + return "h5"; + } + + async authenticate() { + const platform = this.detectPlatform(); + return await this.authByPlatform(platform); + } + + async authByPlatform(platform) { + switch (platform) { + case "h5": + return await this.authBrowser(); + case "wxh5": + return await this.authWechatH5(); + default: + return await this.authBrowser(); + } + } + + async authBrowser() { + let token = localStorage.getItem("token"); + if (!token) { + const { data } = await useApiFetch("/user/auth") + .post({ platform: "h5" }) + .json(); + token = data.accessToken; + localStorage.setItem("token", token); + localStorage.setItem("refreshAfter", data.refreshAfter); + localStorage.setItem("accessExpire", data.accessExpire); + } + return token; + } + + async authWechatH5() { + const params = new URLSearchParams(window.location.search); + const code = params.get("code"); + if (code) { + const { data } = await useApiFetch("/user/auth") + .post({ platform: "wxh5", code }) + .json(); + window.history.replaceState({}, "", window.location.pathname); + localStorage.setItem("token", data.accessToken); + localStorage.setItem("refreshAfter", data.refreshAfter); + localStorage.setItem("accessExpire", data.accessExpire); + return data.accessToken; + } else { + return null; + } + } +} + +export const authService = new AuthService(); diff --git a/src/stores/agentStore.js b/src/stores/agentStore.js new file mode 100644 index 0000000..37d75e1 --- /dev/null +++ b/src/stores/agentStore.js @@ -0,0 +1,131 @@ +import { defineStore } from "pinia"; +import { getAgentInfo } from "@/api/agent"; + +export const useAgentStore = defineStore("agent", { + state: () => ({ + isLoaded: false, + level: 0, // 1=白银,2=黄金,3=钻石 + levelName: "", // 等级名称 + isAgent: false, + agentID: null, + agentCode: 0, + mobile: "", + region: "", + wechatId: "", + teamLeaderId: null, + isRealName: false, + }), + getters: { + // 是否是代理 + isAgentUser: (state) => state.isAgent && state.agentID !== null, + // 是否是钻石代理 + isDiamond: (state) => state.level === 3, + // 是否是黄金代理 + isGold: (state) => state.level === 2, + // 是否是白银代理 + isNormal: (state) => state.level === 1, + // 获取等级显示名称 + levelDisplayName: (state) => { + const levelMap = { + 1: "白银代理", + 2: "黄金代理", + 3: "钻石代理", + }; + return levelMap[state.level] || "白银代理"; + }, + }, + actions: { + async fetchAgentStatus() { + const { data, error } = await getAgentInfo(); + + if (data.value && !error.value) { + if (data.value.code === 200) { + const agentData = data.value.data; + // 如果 agent_id 为空字符串或不存在,说明不是代理 + if (!agentData.agent_id || agentData.agent_id === "") { + this.resetAgent(); + } else { + this.level = agentData.level || 0; + this.levelName = agentData.level_name || ""; + this.isAgent = true; // 如果能获取到信息,说明是代理 + this.agentID = agentData.agent_id; + this.agentCode = agentData.agent_code || 0; + this.mobile = agentData.mobile || ""; + this.region = agentData.region || ""; + this.wechatId = agentData.wechat_id || ""; + this.teamLeaderId = agentData.team_leader_id || null; + this.isRealName = agentData.is_real_name || false; + + // 保存到localStorage + localStorage.setItem( + "agentInfo", + JSON.stringify({ + isAgent: this.isAgent, + level: this.level, + levelName: this.levelName, + agentID: this.agentID, + agentCode: this.agentCode, + mobile: this.mobile, + region: this.region, + wechatId: this.wechatId, + teamLeaderId: this.teamLeaderId, + isRealName: this.isRealName, + }) + ); + } + } else { + // 检查是否是临时用户需要绑定手机号的错误(100010) + if (data.value.code === 100010) { + // 临时用户,不重置状态,静默处理 + console.log("临时用户需要绑定手机号,跳过代理状态检查"); + } else { + // 如果不是代理或获取失败,重置状态 + this.resetAgent(); + console.log("Error fetching agent info", data.value); + } + } + } else { + // 检查错误码 + if (error.value && error.value.code === 100010) { + // 临时用户需要绑定手机号,静默处理 + console.log("临时用户需要绑定手机号,跳过代理状态检查"); + } else { + // 请求失败或未登录,重置状态 + this.resetAgent(); + } + } + this.isLoaded = true; + }, + + // 更新代理信息 + updateAgentInfo(agentInfo) { + if (agentInfo) { + this.isAgent = agentInfo.isAgent || false; + this.level = agentInfo.level || 0; + this.levelName = agentInfo.levelName || ""; + this.agentID = agentInfo.agentID || null; + this.mobile = agentInfo.mobile || ""; + this.region = agentInfo.region || ""; + this.wechatId = agentInfo.wechatId || ""; + this.teamLeaderId = agentInfo.teamLeaderId || null; + this.isRealName = agentInfo.isRealName || false; + this.isLoaded = true; + } + }, + + // 重置代理信息 + resetAgent() { + this.isLoaded = false; + this.level = 0; + this.levelName = ""; + this.isAgent = false; + this.agentID = null; + this.agentCode = 0; + this.mobile = ""; + this.region = ""; + this.wechatId = ""; + this.teamLeaderId = null; + this.isRealName = false; + }, + }, +}); diff --git a/src/stores/appStore.js b/src/stores/appStore.js new file mode 100644 index 0000000..9cb5230 --- /dev/null +++ b/src/stores/appStore.js @@ -0,0 +1,21 @@ +import { defineStore } from 'pinia' + +export const useAppStore = defineStore('app', { + state: () => ({ + queryRetentionDays: 0, + isLoaded: false, + }), + actions: { + async fetchAppConfig() { + try { + const { data, error } = await useApiFetch('/app/config').get().json() + if (data.value && !error.value && data.value.code === 200) { + const cfg = data.value.data + this.queryRetentionDays = Number(cfg.query_retention_days) || 0 + } + } catch (e) { + } + this.isLoaded = true + }, + }, +}) diff --git a/src/stores/authStore.js b/src/stores/authStore.js new file mode 100644 index 0000000..c1bce2f --- /dev/null +++ b/src/stores/authStore.js @@ -0,0 +1,129 @@ +import { defineStore } from "pinia"; + +export const useAuthStore = defineStore("auth", { + state: () => ({ + // 微信授权状态 + isWeixinAuthing: false, // 是否正在进行微信授权 + weixinAuthComplete: false, // 微信授权是否完成 + pendingRoute: null, // 等待授权完成后跳转的路由 + authStartTime: 0, // 授权开始时间,用于防止超时重复授权 + }), + + actions: { + // 开始微信授权 + startWeixinAuth(targetRoute = null) { + // 如果已经在授权过程中,不再重复启动 + if (this.isWeixinAuthing) { + console.warn("WeChat auth already in progress"); + return; + } + + this.isWeixinAuthing = true; + this.weixinAuthComplete = false; + this.pendingRoute = targetRoute; + this.authStartTime = Date.now(); + + // 保存到localStorage,防止页面刷新后状态丢失 + localStorage.setItem("weixinAuthing", "true"); + localStorage.setItem( + "authStartTime", + this.authStartTime.toString() + ); + + if (targetRoute) { + const routeData = + typeof targetRoute === "string" + ? targetRoute + : targetRoute.fullPath || targetRoute.path || ""; + if (routeData) { + let sanitized = routeData; + const parts = routeData.split("?"); + if (parts.length > 1) { + const base = parts[0]; + const params = new URLSearchParams(parts[1]); + params.delete("code"); + params.delete("state"); + const qs = params.toString(); + sanitized = qs ? `${base}?${qs}` : base; + } + localStorage.setItem( + "pendingRoute", + JSON.stringify(sanitized) + ); + } + } + }, + + // 微信授权完成 + completeWeixinAuth() { + this.isWeixinAuthing = false; + this.weixinAuthComplete = true; + this.authStartTime = 0; + + // 清除localStorage中的授权状态 + localStorage.removeItem("weixinAuthing"); + localStorage.removeItem("authStartTime"); + }, + + // 重置授权状态 + resetAuthState() { + this.isWeixinAuthing = false; + this.weixinAuthComplete = false; + this.pendingRoute = null; + this.authStartTime = 0; + localStorage.removeItem("weixinAuthing"); + localStorage.removeItem("pendingRoute"); + localStorage.removeItem("authStartTime"); + }, + + // 检查授权是否超时(超过30秒视为超时) + isAuthTimeout() { + if (!this.authStartTime) return false; + const elapsed = Date.now() - this.authStartTime; + return elapsed > 30000; // 30秒超时 + }, + + // 从localStorage恢复状态(页面刷新后调用) + restoreFromStorage() { + const isAuthing = localStorage.getItem("weixinAuthing") === "true"; + const pendingRouteStr = localStorage.getItem("pendingRoute"); + const authStartTime = localStorage.getItem("authStartTime"); + + if (isAuthing) { + console.log("🔄 Restoring WeChat auth state from storage"); + this.isWeixinAuthing = true; + this.weixinAuthComplete = false; + this.authStartTime = authStartTime + ? parseInt(authStartTime) + : 0; + + // 检查是否超时,如果超时则重置 + if (this.isAuthTimeout()) { + console.warn("WeChat auth timeout, resetting state"); + this.resetAuthState(); + return; + } + + if (pendingRouteStr) { + try { + this.pendingRoute = JSON.parse(pendingRouteStr); + console.log( + "✅ Restored pendingRoute from storage:", + this.pendingRoute + ); + } catch (e) { + console.error("Failed to parse pending route:", e); + this.pendingRoute = null; + } + } + } + }, + + // 清除待处理路由时,确保同步清除内存和localStorage + clearPendingRoute() { + this.pendingRoute = null; + localStorage.removeItem("pendingRoute"); + console.log("✅ Cleared pendingRoute from both memory and storage"); + }, + }, +}); diff --git a/src/stores/dialogStore.js b/src/stores/dialogStore.js new file mode 100644 index 0000000..3ea493c --- /dev/null +++ b/src/stores/dialogStore.js @@ -0,0 +1,44 @@ +import { defineStore } from 'pinia' +import { ref } from 'vue' + +export const useDialogStore = defineStore('dialog', () => { + const showBindPhone = ref(false) // 推广页面专用的绑定手机号(不要求邀请码) + const showRegisterAgent = ref(false) // 注册成为代理(带邀请码) + const showRealNameAuth = ref(false) + + function openBindPhone() { + showBindPhone.value = true + } + + function closeBindPhone() { + showBindPhone.value = false + } + + function openRegisterAgent() { + showRegisterAgent.value = true + } + + function closeRegisterAgent() { + showRegisterAgent.value = false + } + + function openRealNameAuth() { + showRealNameAuth.value = true + } + + function closeRealNameAuth() { + showRealNameAuth.value = false + } + + return { + showBindPhone, + openBindPhone, + closeBindPhone, + showRegisterAgent, + openRegisterAgent, + closeRegisterAgent, + showRealNameAuth, + openRealNameAuth, + closeRealNameAuth, + } +}) diff --git a/src/stores/userStore.js b/src/stores/userStore.js new file mode 100644 index 0000000..0d5eeb6 --- /dev/null +++ b/src/stores/userStore.js @@ -0,0 +1,76 @@ +import { defineStore } from "pinia"; + +export const useUserStore = defineStore("user", { + state: () => ({ + userName: "", + mobile: "", + userAvatar: "", + isLoggedIn: false, + }), + actions: { + async fetchUserInfo() { + const { data, error } = await useApiFetch("/user/detail") + .get() + .json(); + if (data.value && !error.value) { + if (data.value.code === 200) { + const userinfo = data.value.data.userInfo; + this.userName = userinfo.mobile || ""; + this.mobile = userinfo.mobile || ""; + this.userAvatar = userinfo.userAvatar; + this.isLoggedIn = true; + + // 保存到localStorage + localStorage.setItem( + "userInfo", + JSON.stringify({ + nickName: this.userName, + avatar: this.userAvatar, + }) + ); + } else if (data.value.code === 100009) { + // Token 无效或用户不存在,清除数据但不 reload + // reload 会导致无限循环 + console.warn( + "User not found or token invalid (100009), clearing auth data" + ); + localStorage.removeItem("token"); + localStorage.removeItem("refreshAfter"); + localStorage.removeItem("accessExpire"); + localStorage.removeItem("userInfo"); + localStorage.removeItem("agentInfo"); + + this.resetUser(); + + // 不要 reload,让调用者处理错误 + throw new Error("User not found or token invalid"); + } else { + // 其他错误 + console.error("Unexpected response code:", data.value.code); + throw new Error( + `Unexpected response code: ${data.value.code}` + ); + } + } else { + console.error("API error:", error.value); + throw error.value || new Error("Unknown error"); + } + }, + + // 更新用户信息 + updateUserInfo(userInfo) { + if (userInfo) { + this.userName = userInfo.mobile || userInfo.nickName || ""; + this.userAvatar = userInfo.avatar || ""; + this.isLoggedIn = true; + } + }, + + // 重置用户信息 + resetUser() { + this.userName = ""; + this.userAvatar = ""; + this.isLoggedIn = false; + }, + }, +}); diff --git a/src/ui/CBehaviorRiskScan.vue b/src/ui/CBehaviorRiskScan.vue new file mode 100644 index 0000000..8dc2dfc --- /dev/null +++ b/src/ui/CBehaviorRiskScan.vue @@ -0,0 +1,747 @@ + + + + + diff --git a/src/ui/CDWBG8B4D/components/ElementVerification.vue b/src/ui/CDWBG8B4D/components/ElementVerification.vue new file mode 100644 index 0000000..8e9f437 --- /dev/null +++ b/src/ui/CDWBG8B4D/components/ElementVerification.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/src/ui/CDWBG8B4D/components/Identity.vue b/src/ui/CDWBG8B4D/components/Identity.vue new file mode 100644 index 0000000..0bb4758 --- /dev/null +++ b/src/ui/CDWBG8B4D/components/Identity.vue @@ -0,0 +1,367 @@ + + + + + diff --git a/src/ui/CDWBG8B4D/components/LeasingRiskSection.vue b/src/ui/CDWBG8B4D/components/LeasingRiskSection.vue new file mode 100644 index 0000000..6cca2b4 --- /dev/null +++ b/src/ui/CDWBG8B4D/components/LeasingRiskSection.vue @@ -0,0 +1,492 @@ + + + + + diff --git a/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue b/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue new file mode 100644 index 0000000..28e69e8 --- /dev/null +++ b/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue @@ -0,0 +1,526 @@ + + + + + diff --git a/src/ui/CDWBG8B4D/components/MultCourtInfoSection.vue b/src/ui/CDWBG8B4D/components/MultCourtInfoSection.vue new file mode 100644 index 0000000..254209d --- /dev/null +++ b/src/ui/CDWBG8B4D/components/MultCourtInfoSection.vue @@ -0,0 +1,521 @@ + + + + + \ No newline at end of file diff --git a/src/ui/CDWBG8B4D/components/OverdueRiskSection.vue b/src/ui/CDWBG8B4D/components/OverdueRiskSection.vue new file mode 100644 index 0000000..d8690dc --- /dev/null +++ b/src/ui/CDWBG8B4D/components/OverdueRiskSection.vue @@ -0,0 +1,494 @@ + + + + + diff --git a/src/ui/CDWBG8B4D/components/ReportOverview.vue b/src/ui/CDWBG8B4D/components/ReportOverview.vue new file mode 100644 index 0000000..25af600 --- /dev/null +++ b/src/ui/CDWBG8B4D/components/ReportOverview.vue @@ -0,0 +1,320 @@ + + + + + diff --git a/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue b/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue new file mode 100644 index 0000000..e95ac8f --- /dev/null +++ b/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/src/ui/CDWBG8B4D/components/RiskWarning.vue b/src/ui/CDWBG8B4D/components/RiskWarning.vue new file mode 100644 index 0000000..b9b2af2 --- /dev/null +++ b/src/ui/CDWBG8B4D/components/RiskWarning.vue @@ -0,0 +1,409 @@ + + + + + diff --git a/src/ui/CDWBG8B4D/components/RiskWarningSection.vue b/src/ui/CDWBG8B4D/components/RiskWarningSection.vue new file mode 100644 index 0000000..42932b4 --- /dev/null +++ b/src/ui/CDWBG8B4D/components/RiskWarningSection.vue @@ -0,0 +1,747 @@ + + + + + \ No newline at end of file diff --git a/src/ui/CDWBG8B4D/components/RiskWarningTab.vue b/src/ui/CDWBG8B4D/components/RiskWarningTab.vue new file mode 100644 index 0000000..f79fdfa --- /dev/null +++ b/src/ui/CDWBG8B4D/components/RiskWarningTab.vue @@ -0,0 +1,1147 @@ + + + + + \ No newline at end of file diff --git a/src/ui/CDWBG8B4D/index.vue b/src/ui/CDWBG8B4D/index.vue new file mode 100644 index 0000000..605232c --- /dev/null +++ b/src/ui/CDWBG8B4D/index.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/ui/CDWBG8B4D/utils/intervalFormatter.js b/src/ui/CDWBG8B4D/utils/intervalFormatter.js new file mode 100644 index 0000000..418e3b9 --- /dev/null +++ b/src/ui/CDWBG8B4D/utils/intervalFormatter.js @@ -0,0 +1,264 @@ +/** + * 区间表达式格式化工具 + * 将数学区间表达式转换为用户友好的文本描述 + */ + +/** + * 格式化区间表达式 + * @param {string} interval - 区间表达式,如 "(0,1000)", "[2000,30000)", "[17,+)" + * @param {string} unit - 单位,如 "元", "次", "个", "天" 等 + * @returns {string} 格式化后的文本,如果格式化失败则返回原数据 + */ +export function formatInterval(interval, unit = "") { + // 如果数据为空或无效,返回原数据 + if (!interval || interval === "-" || interval === "0") { + return interval || "-"; + } + + try { + // 处理特殊格式,如 "3,6(个月)" + if (interval.includes("(") && interval.includes(")")) { + const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/); + if (match) { + const numbers = match[1].split(",").map((n) => n.trim()); + const timeUnit = match[2]; + if (numbers.length === 2) { + return `${numbers[0]}-${numbers[1]}${timeUnit}`; + } + return `${numbers.join(", ")}${timeUnit}`; + } + } + + // 处理区间表达式 + const intervalPattern = + /^([\[\(])(\d+(?:\.\d+)?),(\d+(?:\.\d+)?|\+)([\]\)])$/; + const match = interval.match(intervalPattern); + + // 如果不是区间表达式,返回原数据 + if (!match) { + return interval; + } + + const [, leftBracket, leftValue, rightValue, rightBracket] = match; + const isLeftInclusive = leftBracket === "["; + const isRightInclusive = rightBracket === "]"; + const isRightInfinity = rightValue === "+"; + + let result = ""; + + if (isRightInfinity) { + // 处理无穷大情况,如 "[17,+)" + if (isLeftInclusive) { + result = `≥${leftValue}${unit}`; + } else { + result = `>${leftValue}${unit}`; + } + } else { + // 处理有限区间 + const leftNum = parseFloat(leftValue); + const rightNum = parseFloat(rightValue); + + // 检查数值是否有效 + if (isNaN(leftNum) || isNaN(rightNum)) { + return interval; + } + + if (leftNum === rightNum) { + // 单点值 + result = `${leftNum}${unit}`; + } else { + // 区间值 - 简化为实际数值范围 + if (isLeftInclusive && isRightInclusive) { + result = `${leftNum}-${rightNum}${unit}`; + } else if (isLeftInclusive && !isRightInclusive) { + // 右开区间,显示到 rightNum-1 + result = `${leftNum}-${rightNum - 1}${unit}`; + } else if (!isLeftInclusive && isRightInclusive) { + // 左开区间,显示从 leftNum+1 + result = `${leftNum + 1}-${rightNum}${unit}`; + } else { + // 两端都不包含,显示从 leftNum+1 到 rightNum-1 + result = `${leftNum + 1}-${rightNum - 1}${unit}`; + } + } + } + + return result; + } catch (error) { + // 如果格式化过程中出现错误,返回原数据 + console.warn("区间格式化失败:", error, "原数据:", interval); + return interval; + } +} + +/** + * 格式化金额区间 + * @param {string} interval - 金额区间表达式 + * @returns {string} 格式化后的金额文本 + */ +export function formatAmountInterval(interval) { + return formatInterval(interval, "元"); +} + +/** + * 格式化次数区间 + * @param {string} interval - 次数区间表达式 + * @returns {string} 格式化后的次数文本 + */ +export function formatCountInterval(interval) { + return formatInterval(interval, "次"); +} + +/** + * 格式化天数区间 + * @param {string} interval - 天数区间表达式 + * @returns {string} 格式化后的天数文本 + */ +export function formatDaysInterval(interval) { + return formatInterval(interval, "天"); +} + +/** + * 格式化机构数量区间 + * @param {string} interval - 机构数量区间表达式 + * @returns {string} 格式化后的机构数量文本 + */ +export function formatInstitutionInterval(interval) { + return formatInterval(interval, "家"); +} + +/** + * 格式化时间区间 + * @param {string} interval - 时间区间表达式 + * @returns {string} 格式化后的时间文本 + */ +export function formatTimeInterval(interval) { + if (!interval || interval === "-") { + return "-"; + } + + // 处理特殊格式,如 "3,6(个月)" + if (interval.includes("(") && interval.includes(")")) { + const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/); + if (match) { + const numbers = match[1].split(",").map((n) => n.trim()); + const timeUnit = match[2]; + if (numbers.length === 2) { + return `${numbers[0]}-${numbers[1]}${timeUnit}`; + } + return `${numbers.join(", ")}${timeUnit}`; + } + } + + return formatInterval(interval, ""); +} + +/** + * 格式化申请次数区间 + * @param {string} interval - 申请次数区间表达式,格式如 "2/1" + * @returns {string} 格式化后的申请次数文本 + */ +export function formatApplicationInterval(interval) { + if (!interval || interval === "-") { + return "-"; + } + + // 处理 "2/1" 格式,表示 申请次数/机构数 + if (interval.includes("/")) { + const [applyCount, institutionCount] = interval.split("/"); + return `${applyCount}次/${institutionCount}家`; + } + + return formatCountInterval(interval); +} + +/** + * 格式化风险等级文本 + * @param {string} level - 风险等级,如 "C2,C5" + * @returns {string} 格式化后的风险等级文本 + */ +export function formatRiskLevel(level) { + if (!level) return "-"; + + const levelMap = { + 0: "正常人员", + A: "前科:侵犯公民人身权利,民主权利", + A1: "盗窃", + A2: "诈骗", + A3: "抢劫/夺", + A4: "故意伤害/杀人", + A5: "强奸/性侵/猥亵", + B: "经济类前科", + B1: "走私", + B2: "破坏金融管理秩序", + B3: "正常人员", + B4: "洗钱", + B5: "洗钱", + C: "妨害社会管理秩序", + C1: "扰乱公共秩序", + C2: "妨害司法", + C3: "涉毒", + C4: "涉黄刑案", + C5: "帮信/掩隐/侵公", + D: "重点", + D1: "危害国家、公共安全", + D2: "涉稳", + D3: "涉及境外", + D4: "涉恐、疆藏", + D5: "涉黑", + E: "涉交通案件", + F: "法院文书", + }; + + return level + .split(",") + .map((l) => levelMap[l.trim()] || l.trim()) + .join("、"); +} + +/** + * 格式化状态文本 + * @param {string} status - 状态值 + * @param {Object} statusMap - 状态映射对象 + * @returns {string} 格式化后的状态文本 + */ +export function formatStatus(status, statusMap = {}) { + if (status === undefined || status === null || status === "") { + return "-"; + } + + return statusMap[status] || status; +} + +/** + * 格式化风险标识 + * @param {number} flag - 风险标识,0=未查得,1=高风险,2=低风险 + * @returns {Object} 包含文本和样式的对象 + */ +export function formatRiskFlag(flag) { + const flagMap = { + 0: { text: "未查得", class: "bg-gray-100 text-gray-700" }, + 1: { text: "高风险", class: "bg-red-100 text-red-700" }, + 2: { text: "低风险", class: "bg-green-100 text-green-700" }, + }; + + return ( + flagMap[flag] || { text: "未知", class: "bg-gray-100 text-gray-700" } + ); +} + +/** + * 格式化验证结果 + * @param {string} result - 验证结果 + * @returns {Object} 包含文本和样式的对象 + */ +export function formatVerificationResult(result) { + const resultMap = { + 一致: { text: "一致", class: "text-green-600" }, + 不一致: { text: "不一致", class: "text-red-600" }, + 验证通过: { text: "验证通过", class: "text-green-600" }, + 验证失败: { text: "验证失败", class: "text-red-600" }, + }; + + return resultMap[result] || { text: result || "-", class: "text-gray-600" }; +} diff --git a/src/ui/CDWBG8B4D/utils/simpleSplitter.js b/src/ui/CDWBG8B4D/utils/simpleSplitter.js new file mode 100644 index 0000000..d178c0f --- /dev/null +++ b/src/ui/CDWBG8B4D/utils/simpleSplitter.js @@ -0,0 +1,157 @@ +/** + * 简单的DWBG8B4D数据拆分演示 + * 直接在BaseReport.vue中处理 + */ + +// 在BaseReport.vue的script部分添加这个函数 +function splitDWBG8B4DForTabs(reportData) { + const result = [] + + reportData.forEach(item => { + if (item.data.apiID === 'DWBG8B4D') { + // 将DWBG8B4D拆分成多个独立的tab + const dwbgData = item.data.data + + // 报告概览 + result.push({ + data: { + apiID: 'DWBG8B4D_Overview', + data: { + baseInfo: dwbgData.baseInfo, + checkSuggest: dwbgData.checkSuggest, + fraudScore: dwbgData.fraudScore, + creditScore: dwbgData.creditScore, + verifyRule: dwbgData.verifyRule, + fraudRule: dwbgData.fraudRule, + success: dwbgData.success, + timestamp: dwbgData.timestamp + } + } + }) + + // 规则风险提示 + result.push({ + data: { + apiID: 'DWBG8B4D_RiskWarningTab', + data: { + riskWarning: dwbgData.riskWarning, + success: dwbgData.success, + timestamp: dwbgData.timestamp + } + } + }) + + // 要素核查 + result.push({ + data: { + apiID: 'DWBG8B4D_ElementVerification', + data: { + sfzeysFlag: dwbgData.elementVerificationDetail?.sfzeysFlag || 0, + personCheckDetails: dwbgData.elementVerificationDetail?.personCheckDetails || {}, + sjsysFlag: dwbgData.elementVerificationDetail?.sjsysFlag || 0, + phoneCheckDetails: dwbgData.elementVerificationDetail?.phoneCheckDetails || {}, + success: dwbgData.success, + timestamp: dwbgData.timestamp + } + } + }) + + // 运营商核验 + result.push({ + data: { + apiID: 'DWBG8B4D_Identity', + data: { + inTime: dwbgData.standLiveInfo?.inTime || '', + phoneVailRiskFlag: dwbgData.elementVerificationDetail?.phoneVailRiskFlag || 0, + phoneVailRisks: dwbgData.elementVerificationDetail?.phoneVailRisks || {}, + belongRiskFlag: dwbgData.elementVerificationDetail?.belongRiskFlag || 0, + belongRisks: dwbgData.elementVerificationDetail?.belongRisks || {}, + success: dwbgData.success, + timestamp: dwbgData.timestamp + } + } + }) + + // 公安重点人员检验 + result.push({ + data: { + apiID: 'DWBG8B4D_RiskWarning', + data: { + highRiskFlag: dwbgData.elementVerificationDetail?.highRiskFlag || 0, + keyPersonCheckList: dwbgData.elementVerificationDetail?.keyPersonCheckList || {}, + antiFraudInfo: dwbgData.elementVerificationDetail?.antiFraudInfo || {}, + success: dwbgData.success, + timestamp: dwbgData.timestamp + } + } + }) + + // 逾期风险 + result.push({ + data: { + apiID: 'DWBG8B4D_OverdueRisk', + data: { + overdueRiskProduct: dwbgData.overdueRiskProduct, + success: dwbgData.success, + timestamp: dwbgData.timestamp + } + } + }) + + // 法院曝光台信息 + result.push({ + data: { + apiID: 'DWBG8B4D_CourtInfo', + data: { + multCourtInfo: dwbgData.multCourtInfo, + success: dwbgData.success, + timestamp: dwbgData.timestamp + } + } + }) + + // 借贷评估 + result.push({ + data: { + apiID: 'DWBG8B4D_LoanEvaluation', + data: { + loanEvaluationVerificationDetail: dwbgData.loanEvaluationVerificationDetail, + success: dwbgData.success, + timestamp: dwbgData.timestamp + } + } + }) + + // 租赁风险评估 + result.push({ + data: { + apiID: 'DWBG8B4D_LeasingRisk', + data: { + leasingRiskAssessment: dwbgData.leasingRiskAssessment, + success: dwbgData.success, + timestamp: dwbgData.timestamp + } + } + }) + + // 关联风险监督 + result.push({ + data: { + apiID: 'DWBG8B4D_RiskSupervision', + data: { + riskSupervision: dwbgData.riskSupervision, + success: dwbgData.success, + timestamp: dwbgData.timestamp + } + } + }) + } else { + // 其他数据直接添加 + result.push(item) + } + }) + + return result +} + +export { splitDWBG8B4DForTabs } diff --git a/src/ui/CFLXG0V4B/components/CaseDetail.vue b/src/ui/CFLXG0V4B/components/CaseDetail.vue new file mode 100644 index 0000000..dfde49c --- /dev/null +++ b/src/ui/CFLXG0V4B/components/CaseDetail.vue @@ -0,0 +1,171 @@ + + + \ No newline at end of file diff --git a/src/ui/CFLXG0V4B/components/StatisticsOverview.vue b/src/ui/CFLXG0V4B/components/StatisticsOverview.vue new file mode 100644 index 0000000..19a2303 --- /dev/null +++ b/src/ui/CFLXG0V4B/components/StatisticsOverview.vue @@ -0,0 +1,284 @@ + + + diff --git a/src/ui/CFLXG0V4B/index.vue b/src/ui/CFLXG0V4B/index.vue new file mode 100644 index 0000000..043c746 --- /dev/null +++ b/src/ui/CFLXG0V4B/index.vue @@ -0,0 +1,451 @@ + + + + + diff --git a/src/ui/CFLXG0V4B/utils/lawsuitUtils.js b/src/ui/CFLXG0V4B/utils/lawsuitUtils.js new file mode 100644 index 0000000..d9e217f --- /dev/null +++ b/src/ui/CFLXG0V4B/utils/lawsuitUtils.js @@ -0,0 +1,303 @@ +// 案件类型映射表 +export const lawsuitTypeMap = { + sxbzxr: { + text: "失信被执行", + color: "text-red-600 bg-red-50", + darkColor: "bg-red-500", + riskLevel: "high", // 高风险 + }, + xgbzxr: { + text: "限高被执行", + color: "text-orange-600 bg-orange-50", + darkColor: "bg-orange-500", + riskLevel: "high", // 高风险 + }, + criminal: { + text: "刑事案件", + color: "text-red-600 bg-red-50", + darkColor: "bg-red-500", + riskLevel: "high", // 高风险 + }, + civil: { + text: "民事案件", + color: "text-blue-600 bg-blue-50", + darkColor: "bg-blue-500", + riskLevel: "medium", // 中风险 + }, + administrative: { + text: "行政案件", + color: "text-purple-600 bg-purple-50", + darkColor: "bg-purple-500", + riskLevel: "medium", // 中风险 + }, + implement: { + text: "执行案件", + color: "text-orange-600 bg-orange-50", + darkColor: "bg-orange-500", + riskLevel: "medium", // 中风险 + }, + bankrupt: { + text: "强制清算与破产案件", + color: "text-rose-600 bg-rose-50", + darkColor: "bg-rose-500", + riskLevel: "high", // 高风险 + }, + preservation: { + text: "非诉保全审查", + color: "text-amber-600 bg-amber-50", + darkColor: "bg-amber-500", + riskLevel: "low", // 低风险 + }, +}; + +// 案件类型文本 +export const getCaseTypeText = (type) => { + return lawsuitTypeMap[type]?.text || "其他案件"; +}; + +// 案件类型颜色 +export const getCaseTypeColor = (type) => { + return lawsuitTypeMap[type]?.color || "text-gray-600 bg-gray-50"; +}; + +// 案件类型深色 +export const getCaseTypeDarkColor = (type) => { + return lawsuitTypeMap[type]?.darkColor || "bg-gray-500"; +}; + +// 格式化日期显示 +export const formatDate = (dateStr) => { + if (!dateStr) return "—"; + // 转换YYYY-MM-DD为年月日格式 + if (dateStr.includes("-")) { + const parts = dateStr.split("-"); + if (parts.length === 3) { + return `${parts[0]}年${parts[1]}月${parts[2]}日`; + } + } + return dateStr; // 如果不是标准格式则返回原始字符串 +}; +// 格式化金额显示(单位:元) +export const formatLawsuitMoney = (money) => { + if (!money) return "—"; + + const value = parseFloat(money); + if (isNaN(value)) return "—"; + + // 直接显示原始金额(元) + return ( + value.toLocaleString("zh-CN", { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) + " 元" + ); +}; +// 获取案件状态样式 +export const getCaseStatusClass = (status) => { + if (!status) return "bg-gray-100 text-gray-500"; + + if (status.includes("已结") || status.includes("已办结")) { + return "bg-green-50 text-green-600"; + } else if (status.includes("执行中") || status.includes("审理中")) { + return "bg-blue-50 text-blue-600"; + } else if (status.includes("未执行")) { + return "bg-amber-50 text-amber-600"; + } else { + return "bg-gray-100 text-gray-500"; + } +}; + +// 获取企业状态对应的样式 +export const getStatusClass = (status) => { + if (!status) return "bg-gray-100 text-gray-500"; + + if (status.includes("注销") || status.includes("吊销")) { + return "bg-red-50 text-red-600"; + } else if (status.includes("存续") || status.includes("在营")) { + return "bg-green-50 text-green-600"; + } else if (status.includes("筹建") || status.includes("新设")) { + return "bg-blue-50 text-blue-600"; + } else { + return "bg-yellow-50 text-yellow-600"; + } +}; + +// 格式化资本金额显示 +export const formatCapital = (capital, currency) => { + if (!capital) return "—"; + + // 检查是否包含"万"字或需要显示为万元 + let unit = ""; + let value = parseFloat(capital); + + // 处理原始数据中可能带有的单位 + if (typeof capital === "string" && capital.includes("万")) { + unit = "万"; + // 提取数字部分 + const numMatch = capital.match(/[\d.]+/); + value = numMatch ? parseFloat(numMatch[0]) : 0; + } else if (value >= 10000) { + // 大额数字转换为万元显示 + value = value / 10000; + unit = "万"; + } + + // 格式化数字,保留两位小数(如果有小数部分) + const formattedValue = value.toLocaleString("zh-CN", { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }); + + return `${formattedValue}${unit} ${currency || "人民币"}`; +}; + +// 获取涉诉风险等级 +export const getRiskLevel = (lawsuitInfo) => { + if (!lawsuitInfo) { + return { + level: "low", + text: "低风险", + color: "text-green-600 bg-green-50", + }; + } + + // 失信被执行人是最高风险 + if (lawsuitInfo.sxbzxr && lawsuitInfo.sxbzxr.length > 0) { + return { + level: "high", + text: "高风险", + color: "text-red-600 bg-red-50", + }; + } + + // 限高被执行人是最高风险 + if (lawsuitInfo.xgbzxr && lawsuitInfo.xgbzxr.length > 0) { + return { + level: "high", + text: "高风险", + color: "text-red-600 bg-red-50", + }; + } + + // 有涉诉数据的风险级别 + if (lawsuitInfo.data && Object.keys(lawsuitInfo.data).length > 0) { + // 检查是否有未结案的案件 + const data = lawsuitInfo.data; + if (data.count && data.count_wei_total && data.count_wei_total > 0) { + return { + level: "medium", + text: "中风险", + color: "text-amber-600 bg-amber-50", + }; + } + + // 只有已结案的为低中风险 + return { + level: "low-medium", + text: "低中风险", + color: "text-yellow-600 bg-yellow-50", + }; + } + + return { + level: "low", + text: "低风险", + color: "text-green-600 bg-green-50", + }; +}; + +// 获取涉诉案件统计 +export const getLawsuitStats = (lawsuitInfo) => { + if (!lawsuitInfo) return null; + + const stats = { + total: 0, + types: [], + }; + + // 统计各类型案件数量 + Object.keys(lawsuitTypeMap).forEach((type) => { + let count = 0; + + if (type === "sxbzxr") { + count = + lawsuitInfo.sxbzxr && lawsuitInfo.sxbzxr.length > 0 + ? lawsuitInfo.sxbzxr.length + : 0; + } else if (type === "xgbzxr") { + count = + lawsuitInfo.xgbzxr && lawsuitInfo.xgbzxr.length > 0 + ? lawsuitInfo.xgbzxr.length + : 0; + } else if ( + lawsuitInfo.data && + lawsuitInfo.data[type] && + Object.keys(lawsuitInfo.data[type]).length > 0 + ) { + const typeData = lawsuitInfo.data[type]; + count = + typeData.cases && typeData.cases.length + ? typeData.cases.length + : 0; + } + + if (count > 0) { + stats.total += count; + stats.types.push({ + type, + count, + name: getCaseTypeText(type), + color: getCaseTypeColor(type), + darkColor: getCaseTypeDarkColor(type), + }); + } + }); + + return stats; +}; + +// 获取案件类型优先级顺序 +export const getCaseTypePriority = () => { + return [ + "sxbzxr", // 失信被执行人(最高风险) + "xgbzxr", // 限高被执行人 + "criminal", // 刑事案件 + "civil", // 民事案件 + "administrative", // 行政案件 + "implement", // 执行案件 + "bankrupt", // 强制清算与破产案件 + "preservation", // 非诉保全审查 + ]; +}; + +// 根据案件类型获取风险等级 +export const getCaseTypeRiskLevel = (caseType) => { + const typeInfo = lawsuitTypeMap[caseType]; + if (!typeInfo) { + return { + level: "low", + text: "低风险", + color: "text-green-600 bg-green-50", + }; + } + + const riskLevelMap = { + high: { + text: "高风险", + color: "text-red-600 bg-red-50", + }, + medium: { + text: "中风险", + color: "text-amber-600 bg-amber-50", + }, + low: { + text: "低风险", + color: "text-green-600 bg-green-50", + }, + }; + + return { + level: typeInfo.riskLevel, + ...riskLevelMap[typeInfo.riskLevel], + }; +}; diff --git a/src/ui/CFLXG3D56.vue b/src/ui/CFLXG3D56.vue new file mode 100644 index 0000000..ad2aa2a --- /dev/null +++ b/src/ui/CFLXG3D56.vue @@ -0,0 +1,1007 @@ + + + + + diff --git a/src/ui/CFLXGDEA9.vue b/src/ui/CFLXGDEA9.vue new file mode 100644 index 0000000..bdac6ed --- /dev/null +++ b/src/ui/CFLXGDEA9.vue @@ -0,0 +1,668 @@ + + + + + diff --git a/src/ui/CIVYZ5733.vue b/src/ui/CIVYZ5733.vue new file mode 100644 index 0000000..728dca1 --- /dev/null +++ b/src/ui/CIVYZ5733.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/ui/CIVYZ7F3A.vue b/src/ui/CIVYZ7F3A.vue new file mode 100644 index 0000000..b7f3c7d --- /dev/null +++ b/src/ui/CIVYZ7F3A.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/src/ui/CIVYZ81NC.vue b/src/ui/CIVYZ81NC.vue new file mode 100644 index 0000000..4b97695 --- /dev/null +++ b/src/ui/CIVYZ81NC.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/ui/CIVYZ9A2B.vue b/src/ui/CIVYZ9A2B.vue new file mode 100644 index 0000000..fa83e9d --- /dev/null +++ b/src/ui/CIVYZ9A2B.vue @@ -0,0 +1,818 @@ + + + + + diff --git a/src/ui/CJRZQ0A03.vue b/src/ui/CJRZQ0A03.vue new file mode 100644 index 0000000..18053f2 --- /dev/null +++ b/src/ui/CJRZQ0A03.vue @@ -0,0 +1,1307 @@ + + + + + diff --git a/src/ui/CJRZQ4AA8.vue b/src/ui/CJRZQ4AA8.vue new file mode 100644 index 0000000..52e612b --- /dev/null +++ b/src/ui/CJRZQ4AA8.vue @@ -0,0 +1,369 @@ + + + + + diff --git a/src/ui/CJRZQ5E9F/README.md b/src/ui/CJRZQ5E9F/README.md new file mode 100644 index 0000000..afe2154 --- /dev/null +++ b/src/ui/CJRZQ5E9F/README.md @@ -0,0 +1,246 @@ +# 贷款风险报告组件 (CJRZQ5E9F) - 模块化架构 + +## 概述 + +贷款风险报告组件采用模块化架构设计,将完整的贷款风险评估拆分成7个独立的模块,每个模块都可以作为独立的tab显示,具有独立的大标题。 + +## 数据结构 + +贷款风险报告的数据结构如下: + +```javascript +{ + "apiID": "CJRZQ5E9F", + "data": { + "xyp_cpl0001": "5", // 贷款总机构数 + "xyp_cpl0002": "3", // 已结清机构数 + "xyp_cpl0007": "2", // 消费金融类机构数 + "xyp_cpl0008": "1", // 网络贷款类机构数 + "xyp_cpl0009": "1", // 最近7天机构数 + "xyp_cpl0014": "15", // 历史成功还款笔数 + "xyp_cpl0015": "2", // 历史失败还款笔数 + "xyp_cpl0016": "1", // 最近1天失败笔数 + "xyp_cpl0017": "3", // 最近1天成功笔数 + "xyp_cpl0018": "1", // 最近7天失败笔数 + "xyp_cpl0019": "5", // 最近7天成功笔数 + "xyp_cpl0020": "1", // 最近14天失败笔数 + "xyp_cpl0021": "7", // 最近14天成功笔数 + "xyp_cpl0022": "2", // 最近30天失败笔数 + "xyp_cpl0023": "10", // 最近30天成功笔数 + "xyp_cpl0024": "2", // 最近90天失败笔数 + "xyp_cpl0025": "12", // 最近90天成功笔数 + "xyp_cpl0026": "2", // 最近180天失败笔数 + "xyp_cpl0027": "14", // 最近180天成功笔数 + "xyp_cpl0028": "0", // 最近1天逾期标识 + "xyp_cpl0029": "0", // 最近7天逾期标识 + "xyp_cpl0030": "0", // 最近14天逾期标识 + "xyp_cpl0031": "0", // 最近30天逾期标识 + "xyp_cpl0032": "1000", // 最近1天失败金额 + "xyp_cpl0033": "5000", // 最近1天成功金额 + "xyp_cpl0034": "2000", // 最近7天失败金额 + "xyp_cpl0035": "8000", // 最近7天成功金额 + "xyp_cpl0036": "1500", // 最近14天失败金额 + "xyp_cpl0037": "12000", // 最近14天成功金额 + "xyp_cpl0038": "3000", // 最近30天失败金额 + "xyp_cpl0039": "20000", // 最近30天成功金额 + "xyp_cpl0040": "4000", // 最近90天失败金额 + "xyp_cpl0041": "35000", // 最近90天成功金额 + "xyp_cpl0042": "5000", // 最近180天失败金额 + "xyp_cpl0043": "45000", // 最近180天成功金额 + "xyp_cpl0044": "0", // 当前逾期状态 + "xyp_cpl0045": "365", // 信用贷款时长 + "xyp_cpl0046": "30", // 最近一次交易距今天数 + "xyp_cpl0064": "1", // 最近21天成功笔数 + "xyp_cpl0065": "0", // 最近21天失败笔数 + "xyp_cpl0066": "1000", // 最近21天失败金额 + "xyp_cpl0067": "6000", // 最近21天成功金额 + "xyp_cpl0068": "15", // 最近一次还款距今天数 + "xyp_cpl0070": "1", // 最近1天机构数 + "xyp_cpl0071": "0", // 当前逾期机构数 + "xyp_cpl0072": "0", // 当前逾期金额 + "xyp_cpl0073": "0.85", // 近5次金额成功率 + "xyp_cpl0074": "0.80", // 近5次还款成功率 + "xyp_cpl0075": "0.75", // 近20次小贷成功率 + "xyp_cpl0079": "0.70", // 近90天金额成功率 + "xyp_cpl0080": "0.65", // 近90天还款成功率 + "xyp_cpl0081": "0.25", // 信用风险评分 + "xyp_cpl0082": "0.30", // 履约金额综合指数 + "xyp_cpl0083": "0.35", // 履约笔数综合指数 + "xyp_model_score_high": "750", // 小额网贷分 + "xyp_model_score_mid": "680", // 小额分期分 + "xyp_model_score_low": "720", // 中大额分期分 + "xyp_t0400002": "0.78", // 近20次还款成功率 + "xyp_t0400003": "0.82", // 近50次还款成功率 + "xyp_t0400004": "0.80" // 近100次还款成功率 + }, + "success": true, + "timestamp": "2025-01-20 21:19:58" +} +``` + +## 模块拆分 + +贷款风险报告被拆分成以下7个独立模块: + +| API ID | 模块名称 | 包含数据 | 组件文件 | +|--------|----------|----------|----------| +| `CJRZQ5E9F_RiskOverview` | 风险概览 | 综合风险等级、当前状态、关键指标 | RiskOverview.vue | +| `CJRZQ5E9F_CreditScores` | 信用评分 | 综合信用指数、专业模型评分、还款表现 | CreditScores.vue | +| `CJRZQ5E9F_LoanBehaviorAnalysis` | 贷款行为分析 | 机构类型分布、还款表现统计、时间维度分析 | LoanBehaviorAnalysis.vue | +| `CJRZQ5E9F_InstitutionAnalysis` | 机构分析 | 机构类型分析、合作机构详情 | InstitutionAnalysis.vue | +| `CJRZQ5E9F_TimeTrendAnalysis` | 时间趋势分析 | 历史趋势、周期性分析 | TimeTrendAnalysis.vue | +| `CJRZQ5E9F_RiskIndicators` | 风险指标详情 | 详细风险指标、风险因子分析 | RiskIndicators.vue | +| `CJRZQ5E9F_RiskAdvice` | 专业建议 | 风险评估建议、优化建议 | RiskAdvice.vue | + +## 使用方法 + +### 1. 前端自动拆分 + +BaseReport.vue 已自动配置支持贷款风险报告的模块化显示: + +```javascript +import { splitCJRZQ5E9FForTabs } from '@/ui/CJRZQ5E9F/utils/simpleSplitter.js'; + +// 处理数据拆分(支持DWBG8B4D、DWBG6A2C和CJRZQ5E9F) +const processedReportData = computed(() => { + let data = reportData.value; + + // 拆分DWBG8B4D数据 + data = splitDWBG8B4DForTabs(data); + + // 拆分DWBG6A2C数据 + data = splitDWBG6A2CForTabs(data); + + // 拆分CJRZQ5E9F数据 + data = splitCJRZQ5E9FForTabs(data); + + return data; +}); +``` + +### 2. 组件配置 + +BaseReport.vue 中已配置所有贷款风险报告模块: + +```javascript +// 贷款风险报告 +JRZQ5E9F: { + name: "贷款风险评估", + component: defineAsyncComponent(() => import("@/ui/CJRZQ5E9F/index.vue")), + remark: '贷款风险评估提供全面的个人贷款风险分析,包括风险概览、信用评分、贷款行为分析、机构分析等多维度评估。' +}, +// ... 其他模块配置 +``` + +## 组件结构 + +``` +src/ui/CJRZQ5E9F/ +├── index.vue # 原始完整组件(保留) +├── README.md # 文档说明 +├── components/ # 子组件目录 +│ ├── RiskOverview.vue # 风险概览 +│ ├── CreditScores.vue # 信用评分 +│ ├── LoanBehaviorAnalysis.vue # 贷款行为分析 +│ ├── InstitutionAnalysis.vue # 机构分析 +│ ├── TimeTrendAnalysis.vue # 时间趋势分析 +│ ├── RiskIndicators.vue # 风险指标详情 +│ └── RiskAdvice.vue # 专业建议 +└── utils/ + └── simpleSplitter.js # 数据拆分工具 +``` + +## 特色功能 + +### 1. 智能风险评估 +- 多维度风险等级计算 +- 智能颜色编码 +- 动态风险提示 + +### 2. 数据可视化 +- 渐变色彩设计 +- 图标化展示 +- 响应式布局 +- 交互式图表 + +### 3. 用户友好 +- 清晰的层次结构 +- 详细的说明文档 +- 直观的风险提示 +- 专业的建议指导 + +### 4. 模块化设计 +- 独立的模块组件 +- 可复用的工具函数 +- 灵活的数据拆分 +- 易于维护和扩展 + +## 工具函数 + +`utils/simpleSplitter.js` 提供了以下工具函数: + +- `splitCJRZQ5E9FForTabs()` - 数据拆分 +- `parseIntervalValue()` - 解析区间化数值 +- `formatMetricValue()` - 格式化指标值 +- `formatDays()` - 格式化天数显示 +- `formatAmount()` - 格式化金额显示 +- `calculateRiskLevel()` - 计算风险等级 +- `calculateCreditScore()` - 计算信用评分 +- `getCreditScoreLevel()` - 获取信用等级描述 +- `getCreditScoreBadgeClass()` - 获取信用等级样式 +- `getScoreClass()` - 获取评分样式 +- `getCircleStyle()` - 获取圆形进度样式 +- `hasRiskData()` - 检查是否有风险数据 + +## 使用示例 + +```javascript +// 在页面中使用 + +``` + +## 数据字段说明 + +### 主要指标字段 +- `xyp_cpl0001`: 贷款总机构数 +- `xyp_cpl0002`: 已结清机构数 +- `xyp_cpl0044`: 当前逾期状态 (0: 无逾期, 1: 有逾期) +- `xyp_cpl0081`: 信用风险评分 (0-1) +- `xyp_cpl0082`: 履约金额综合指数 (0-1) +- `xyp_cpl0083`: 履约笔数综合指数 (0-1) + +### 模型评分字段 +- `xyp_model_score_high`: 小额网贷分 (350-950) +- `xyp_model_score_mid`: 小额分期分 (350-950) +- `xyp_model_score_low`: 中大额分期分 (350-950) + +### 还款表现字段 +- `xyp_cpl0073`: 近5次金额成功率 +- `xyp_cpl0074`: 近5次还款成功率 +- `xyp_t0400002`: 近20次还款成功率 +- `xyp_t0400003`: 近50次还款成功率 +- `xyp_t0400004`: 近100次还款成功率 + +## 注意事项 + +1. 确保数据格式符合贷款风险报告的标准结构 +2. 所有模块都支持数据为空的情况 +3. 风险评估基于实际数据动态计算 +4. 组件采用 Tailwind CSS 进行样式设计 +5. 支持移动端响应式布局 +6. 区间化数值会自动解析为具体数值进行显示 + +## 更新日志 + +- v1.0.0: 初始版本,支持完整的贷款风险报告模块化显示 +- 包含7个独立模块 +- 支持自动数据拆分 +- 提供完整的风险评估功能 +- 支持多种数据可视化方式 diff --git a/src/ui/CJRZQ5E9F/components/CreditScores.vue b/src/ui/CJRZQ5E9F/components/CreditScores.vue new file mode 100644 index 0000000..4a91edf --- /dev/null +++ b/src/ui/CJRZQ5E9F/components/CreditScores.vue @@ -0,0 +1,579 @@ + + + + + diff --git a/src/ui/CJRZQ5E9F/components/InstitutionAnalysis.vue b/src/ui/CJRZQ5E9F/components/InstitutionAnalysis.vue new file mode 100644 index 0000000..c549df4 --- /dev/null +++ b/src/ui/CJRZQ5E9F/components/InstitutionAnalysis.vue @@ -0,0 +1,372 @@ + + + + + diff --git a/src/ui/CJRZQ5E9F/components/LoanBehaviorAnalysis.vue b/src/ui/CJRZQ5E9F/components/LoanBehaviorAnalysis.vue new file mode 100644 index 0000000..2dc5595 --- /dev/null +++ b/src/ui/CJRZQ5E9F/components/LoanBehaviorAnalysis.vue @@ -0,0 +1,715 @@ + + + + + diff --git a/src/ui/CJRZQ5E9F/components/RiskAdvice.vue b/src/ui/CJRZQ5E9F/components/RiskAdvice.vue new file mode 100644 index 0000000..c1bfab1 --- /dev/null +++ b/src/ui/CJRZQ5E9F/components/RiskAdvice.vue @@ -0,0 +1,414 @@ + + + + + diff --git a/src/ui/CJRZQ5E9F/components/RiskIndicators.vue b/src/ui/CJRZQ5E9F/components/RiskIndicators.vue new file mode 100644 index 0000000..e0efa9e --- /dev/null +++ b/src/ui/CJRZQ5E9F/components/RiskIndicators.vue @@ -0,0 +1,638 @@ + + + + + diff --git a/src/ui/CJRZQ5E9F/components/RiskOverview.vue b/src/ui/CJRZQ5E9F/components/RiskOverview.vue new file mode 100644 index 0000000..1bc962e --- /dev/null +++ b/src/ui/CJRZQ5E9F/components/RiskOverview.vue @@ -0,0 +1,375 @@ + + + + + diff --git a/src/ui/CJRZQ5E9F/components/TimeTrendAnalysis.vue b/src/ui/CJRZQ5E9F/components/TimeTrendAnalysis.vue new file mode 100644 index 0000000..ea125e7 --- /dev/null +++ b/src/ui/CJRZQ5E9F/components/TimeTrendAnalysis.vue @@ -0,0 +1,1466 @@ + + + + + diff --git a/src/ui/CJRZQ5E9F/index.vue b/src/ui/CJRZQ5E9F/index.vue new file mode 100644 index 0000000..63fa84f --- /dev/null +++ b/src/ui/CJRZQ5E9F/index.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/src/ui/CJRZQ5E9F/utils/simpleSplitter.js b/src/ui/CJRZQ5E9F/utils/simpleSplitter.js new file mode 100644 index 0000000..b69ed68 --- /dev/null +++ b/src/ui/CJRZQ5E9F/utils/simpleSplitter.js @@ -0,0 +1,320 @@ +/** + * 贷款风险报告(CJRZQ5E9F)数据拆分工具 + * 将完整的贷款风险报告数据拆分成多个独立的模块,用于在不同的tab中显示 + */ + +/** + * 将CJRZQ5E9F数据拆分为多个独立的tab模块 + * @param {Array} reportData - 原始报告数据数组 + * @returns {Array} 拆分后的模块数组 + */ +export function splitCJRZQ5E9FForTabs(reportData) { + // 查找CJRZQ5E9F数据 + const targetIndex = reportData.findIndex( + (item) => item.data?.apiID === "JRZQ5E9F" + ); + const cjrzq5e9fData = targetIndex >= 0 ? reportData[targetIndex] : null; + + if (!cjrzq5e9fData || !cjrzq5e9fData.data?.data) { + return reportData; // 如果没有找到CJRZQ5E9F数据,返回原数据 + } + + const originalData = cjrzq5e9fData.data.data; + const baseTimestamp = cjrzq5e9fData.data.timestamp; + + // 创建拆分后的模块数组 + const splitModules = []; + + // 1. 风险概览 + if (originalData && Object.keys(originalData).length > 0) { + splitModules.push({ + data: { + apiID: "CJRZQ5E9F_RiskOverview", + data: originalData, + success: true, + timestamp: baseTimestamp, + }, + }); + } + + // 2. 信用评分 + if (originalData && Object.keys(originalData).length > 0) { + splitModules.push({ + data: { + apiID: "CJRZQ5E9F_CreditScores", + data: originalData, + success: true, + timestamp: baseTimestamp, + }, + }); + } + + // 3. 贷款行为分析 + if (originalData && Object.keys(originalData).length > 0) { + splitModules.push({ + data: { + apiID: "CJRZQ5E9F_LoanBehaviorAnalysis", + data: originalData, + success: true, + timestamp: baseTimestamp, + }, + }); + } + + // 4. 机构分析 + if (originalData && Object.keys(originalData).length > 0) { + splitModules.push({ + data: { + apiID: "CJRZQ5E9F_InstitutionAnalysis", + data: originalData, + success: true, + timestamp: baseTimestamp, + }, + }); + } + + // 5. 时间趋势分析 + if (originalData && Object.keys(originalData).length > 0) { + splitModules.push({ + data: { + apiID: "CJRZQ5E9F_TimeTrendAnalysis", + data: originalData, + success: true, + timestamp: baseTimestamp, + }, + }); + } + + // 6. 风险指标详情 + if (originalData && Object.keys(originalData).length > 0) { + splitModules.push({ + data: { + apiID: "CJRZQ5E9F_RiskIndicators", + data: originalData, + success: true, + timestamp: baseTimestamp, + }, + }); + } + + // 7. 专业建议 + if (originalData && Object.keys(originalData).length > 0) { + splitModules.push({ + data: { + apiID: "CJRZQ5E9F_RiskAdvice", + data: originalData, + success: true, + timestamp: baseTimestamp, + }, + }); + } + + if (splitModules.length === 0) { + return reportData; + } + + const result = [...reportData]; + result.splice(targetIndex, 1, ...splitModules); + + return result; +} + +/** + * 解析区间化数值 + * @param {string|number} value - 原始值 + * @returns {number} 解析后的数值 + */ +export function parseIntervalValue(value) { + if (!value || value === "" || value === "-1") return 0; + const num = parseInt(value); + if (isNaN(num)) return 0; + + // 根据区间映射返回大致范围的中值 + switch (num) { + case 1: + return 1; + case 2: + return 3; + case 3: + return 7; + case 4: + return 15; + case 5: + return 25; + default: + return num; + } +} + +/** + * 格式化指标值显示 + * @param {number} value - 数值 + * @returns {string} 格式化后的显示文本 + */ +export function formatMetricValue(value) { + if (value === 0) return "0"; + if (value < 5) return `${value}`; + return `${value}+`; +} + +/** + * 格式化天数显示 + * @param {number} value - 天数 + * @returns {string} 格式化后的显示文本 + */ +export function formatDays(value) { + if (value === 0) return "无记录"; + if (value < 30) return `${value}天`; + if (value < 365) return `${Math.floor(value / 30)}个月`; + return `${Math.floor(value / 365)}年`; +} + +/** + * 格式化金额显示 + * @param {number} value - 金额 + * @returns {string} 格式化后的显示文本 + */ +export function formatAmount(value) { + if (value === 0) return "0元"; + if (value < 1000) return `${value}元`; + if (value < 10000) return `${(value / 1000).toFixed(1)}千元`; + return `${(value / 10000).toFixed(1)}万元`; +} + +/** + * 计算风险等级 + * @param {number} creditScore - 信用风险评分 + * @param {number} overdueIndex - 逾期指数 + * @param {boolean} currentOverdue - 当前是否逾期 + * @returns {object} 包含等级、颜色和描述的对象 + */ +export function calculateRiskLevel(creditScore, overdueIndex, currentOverdue) { + if (creditScore > 0.7 || overdueIndex > 0.7 || currentOverdue) { + return { + level: "高风险", + color: "text-red-600", + bgColor: "bg-red-100", + iconColor: "bg-red-500", + description: "存在较高信用风险,建议谨慎放贷", + }; + } else if (creditScore > 0.4 || overdueIndex > 0.4) { + return { + level: "中风险", + color: "text-yellow-600", + bgColor: "bg-yellow-100", + iconColor: "bg-yellow-500", + description: "信用风险适中,需要进一步评估", + }; + } else { + return { + level: "低风险", + color: "text-green-600", + bgColor: "bg-green-100", + iconColor: "bg-green-500", + description: "信用风险较低,具备良好还款能力", + }; + } +} + +/** + * 计算信用评分显示 + * @param {number} creditRiskScore - 信用风险评分 + * @param {number} amountComplianceIndex - 履约金额综合指数 + * @param {number} countComplianceIndex - 履约笔数综合指数 + * @returns {object} 包含评分、进度和颜色的对象 + */ +export function calculateCreditScore( + creditRiskScore, + amountComplianceIndex, + countComplianceIndex +) { + const avgRisk = + (creditRiskScore + amountComplianceIndex + countComplianceIndex) / 3; + // 风险越高,信用分越低 + const score = Math.round((1 - avgRisk) * 850 + 150); + const progress = (score / 1000) * 283; + + let color = "#ef4444"; + if (score >= 750) color = "#10b981"; + else if (score >= 650) color = "#f59e0b"; + + return { + score, + progress, + color, + }; +} + +/** + * 获取信用等级描述 + * @param {number} score - 信用评分 + * @returns {string} 等级描述 + */ +export function getCreditScoreLevel(score) { + if (score >= 800) return "优秀"; + if (score >= 700) return "良好"; + if (score >= 600) return "一般"; + if (score >= 500) return "较差"; + return "很差"; +} + +/** + * 获取信用等级样式类 + * @param {number} score - 信用评分 + * @returns {string} 样式类名 + */ +export function getCreditScoreBadgeClass(score) { + if (score >= 800) return "bg-green-100 text-green-800"; + if (score >= 700) return "bg-blue-100 text-blue-800"; + if (score >= 600) return "bg-yellow-100 text-yellow-800"; + if (score >= 500) return "bg-orange-100 text-orange-800"; + return "bg-red-100 text-red-800"; +} + +/** + * 获取评分样式类 + * @param {number} score - 评分 + * @returns {string} 样式类名 + */ +export function getScoreClass(score) { + if (score === null) return "text-gray-400"; + if (score >= 750) return "text-green-600"; + if (score >= 650) return "text-yellow-600"; + return "text-red-600"; +} + +/** + * 获取圆形进度样式 + * @param {number} ratio - 比例值 (0-1) + * @returns {object} 样式对象 + */ +export function getCircleStyle(ratio) { + let color = "#ef4444"; + if (ratio >= 0.8) color = "#10b981"; + else if (ratio >= 0.6) color = "#f59e0b"; + + // 确保至少显示10度,让用户知道是图表 + const minDegree = 10; + const actualDegree = Math.max(ratio * 360, minDegree); + + return { + background: `conic-gradient(${color} ${actualDegree}deg, #e5e7eb 0deg)`, + }; +} + +/** + * 检查是否有风险数据 + * @param {Object} data - 数据对象 + * @returns {boolean} 是否有风险 + */ +export function hasRiskData(data) { + if (!data) return false; + + // 检查对象中是否有非0值 + return Object.values(data).some((value) => { + if (typeof value === "number") return value > 0; + if (typeof value === "string") + return value !== "0" && value !== "-" && value !== ""; + return false; + }); +} diff --git a/src/ui/CJRZQ8203.vue b/src/ui/CJRZQ8203.vue new file mode 100644 index 0000000..c2c2999 --- /dev/null +++ b/src/ui/CJRZQ8203.vue @@ -0,0 +1,908 @@ + + + + + diff --git a/src/ui/CQCXG7A2B.vue b/src/ui/CQCXG7A2B.vue new file mode 100644 index 0000000..0f602e3 --- /dev/null +++ b/src/ui/CQCXG7A2B.vue @@ -0,0 +1,65 @@ + + + + + \ No newline at end of file diff --git a/src/ui/CQCXG9P1C.vue b/src/ui/CQCXG9P1C.vue new file mode 100644 index 0000000..00648cb --- /dev/null +++ b/src/ui/CQCXG9P1C.vue @@ -0,0 +1,130 @@ + + + + + \ No newline at end of file diff --git a/src/ui/CQYGL3F8E/README.md b/src/ui/CQYGL3F8E/README.md new file mode 100644 index 0000000..88fb581 --- /dev/null +++ b/src/ui/CQYGL3F8E/README.md @@ -0,0 +1,238 @@ +# CQYGL3F8E 人企关系加强版模块 + +## 概述 + +CQYGL3F8E 是人企关系加强版模块,提供全面的企业关联分析功能。该模块通过拆分功能,将原本的单一组件分解为三个独立的子模块,每个子模块专注于特定类型的企业关联信息展示。 + +## 模块结构 + +### 主模块 +- **文件位置**: `src/ui/CQYGL3F8E/index.vue` +- **功能**: 整合三个子模块,提供完整的人企关系分析视图 +- **API ID**: `QYGL3F8E` + +### 子模块 + +#### 1. 投资企业记录 (Investment) +- **文件位置**: `src/ui/CQYGL3F8E/components/Investment.vue` +- **API ID**: `CQYGL3F8E_Investment` +- **功能**: 展示用户作为股东、历史股东、法人、历史法人的企业记录 +- **数据来源**: 过滤 `relationship` 字段包含 `["sh", "his_sh", "lp", "his_lp"]` 的企业 + +#### 2. 高管任职记录 (SeniorExecutive) +- **文件位置**: `src/ui/CQYGL3F8E/components/SeniorExecutive.vue` +- **API ID**: `CQYGL3F8E_SeniorExecutive` +- **功能**: 展示用户作为高管、历史高管的企业任职记录 +- **数据来源**: 过滤 `relationship` 字段包含 `["tm", "his_tm"]` 的企业 + +#### 3. 涉诉风险 (Lawsuit) +- **文件位置**: `src/ui/CQYGL3F8E/components/Lawsuit.vue` +- **API ID**: `CQYGL3F8E_Lawsuit` +- **功能**: 展示存在涉诉风险的企业信息 +- **数据来源**: 过滤 `lawsuitInfo` 字段包含有效涉诉数据的企业 + +#### 4. 对外投资历史 (InvestHistory) +- **文件位置**: `src/ui/CQYGL3F8E/components/InvestHistory.vue` +- **API ID**: `CQYGL3F8E_InvestHistory` +- **功能**: 展示企业的对外投资历史记录 +- **数据来源**: `invest_history` 字段 + +#### 5. 融资历史 (FinancingHistory) +- **文件位置**: `src/ui/CQYGL3F8E/components/FinancingHistory.vue` +- **API ID**: `CQYGL3F8E_FinancingHistory` +- **功能**: 展示企业的融资历史记录 +- **数据来源**: `financing_history` 字段 + +#### 6. 行政处罚 (Punishment) +- **文件位置**: `src/ui/CQYGL3F8E/components/Punishment.vue` +- **API ID**: `CQYGL3F8E_Punishment` +- **功能**: 展示企业的行政处罚记录 +- **数据来源**: `punishment_info` 字段 + +#### 7. 经营异常 (Abnormal) +- **文件位置**: `src/ui/CQYGL3F8E/components/Abnormal.vue` +- **API ID**: `CQYGL3F8E_Abnormal` +- **功能**: 展示企业的经营异常记录 +- **数据来源**: `abnormal_info` 字段 + +#### 8. 欠税公告 (OwnTax) +- **文件位置**: `src/ui/CQYGL3F8E/components/OwnTax.vue` +- **API ID**: `CQYGL3F8E_OwnTax` +- **功能**: 展示企业的欠税公告记录 +- **数据来源**: `own_tax` 字段 + +#### 9. 税收违法 (TaxContravention) +- **文件位置**: `src/ui/CQYGL3F8E/components/TaxContravention.vue` +- **API ID**: `CQYGL3F8E_TaxContravention` +- **功能**: 展示企业的税收违法记录 +- **数据来源**: `tax_contravention` 字段 + +## 数据拆分逻辑 + +### 数据源结构 +```javascript +{ + data: { + apiID: 'QYGL3F8E', + data: { + items: [ + { + orgName: '企业名称', + relationship: ['sh', 'tm'], // 关系类型 + lawsuitInfo: { ... }, // 涉诉信息 + basicInfo: { ... }, // 基本信息 + stockHolderItem: { ... }, // 持股信息 + staffList: { ... } // 人员列表 + } + ] + } + } +} +``` + +### 拆分规则 + +#### 投资企业记录 +- **过滤条件**: `relationship` 包含投资类关系 +- **关系类型**: `["sh", "his_sh", "lp", "his_lp"]` +- **包含字段**: 完整的企业信息,包括持股详情 + +#### 高管任职记录 +- **过滤条件**: `relationship` 包含高管类关系 +- **关系类型**: `["tm", "his_tm"]` +- **包含字段**: 完整的企业信息,重点关注任职信息 + +#### 涉诉风险 +- **过滤条件**: `lawsuitInfo` 包含有效涉诉数据 +- **检查字段**: + - `lawsuitInfo.entout.data` (非空对象) + - `lawsuitInfo.sxbzxr.data.sxbzxr` (非空数组) + - `lawsuitInfo.xgbzxr.data.xgbzxr` (非空数组) +- **包含字段**: 涉诉企业和总数统计 + +#### 对外投资历史 +- **数据来源**: `invest_history.items` 数组 +- **包含字段**: 投资企业信息、持股比例、注册资本等 + +#### 融资历史 +- **数据来源**: `financing_history.items` 数组 +- **包含字段**: 融资轮次、融资金额、投资者、新闻信息等 + +#### 行政处罚 +- **数据来源**: `punishment_info.items` 数组 +- **包含字段**: 处罚类型、处罚金额、处罚原因、处罚部门等 + +#### 经营异常 +- **数据来源**: `abnormal_info.items` 数组 +- **包含字段**: 异常原因、列入/移出日期、相关部门等 + +#### 欠税公告 +- **数据来源**: `own_tax.items` 数组 +- **包含字段**: 欠税金额、税务类型、欠税税种、纳税人信息、税务机关等 + +#### 税收违法 +- **数据来源**: `tax_contravention.items` 数组 +- **包含字段**: 案件性质、违法ID、税务机关、发布时间、纳税人名称等 + +## 工具函数 + +### simpleSplitter.js +位置: `src/ui/CQYGL3F8E/utils/simpleSplitter.js` + +#### 主要函数 +- `splitCQYGL3F8EForTabs(reportData)`: 数据拆分主函数 +- `getRelationshipText(relation)`: 获取关系文本描述 +- `getRelationshipClass(relation)`: 获取关系样式类 +- `getStatusClass(status)`: 获取企业状态样式类 +- `formatCapital(capital, currency)`: 格式化资本金额 +- `formatDate(dateStr)`: 格式化日期显示 + +## 集成配置 + +### BaseReport.vue 配置 +```javascript +// 导入拆分函数 +import { splitCQYGL3F8EForTabs } from '@/ui/CQYGL3F8E/utils/simpleSplitter.js'; + +// 数据处理 +const processedReportData = computed(() => { + let data = reportData.value; + // ... 其他拆分 + data = splitCQYGL3F8EForTabs(data); + return data; +}); + +// 功能映射 +const featureMap = { + QYGL3F8E: { + name: "人企关系加强版", + component: defineAsyncComponent(() => import("@/ui/CQYGL3F8E/index.vue")), + remark: '人企关系加强版提供全面的企业关联分析,包括投资企业记录、高管任职记录和涉诉风险等多维度信息。' + }, + CQYGL3F8E_Investment: { + name: "投资企业记录", + component: defineAsyncComponent(() => import("@/ui/CQYGL3F8E/components/Investment.vue")), + }, + CQYGL3F8E_SeniorExecutive: { + name: "高管任职记录", + component: defineAsyncComponent(() => import("@/ui/CQYGL3F8E/components/SeniorExecutive.vue")), + }, + CQYGL3F8E_Lawsuit: { + name: "涉诉风险", + component: defineAsyncComponent(() => import("@/ui/CQYGL3F8E/components/Lawsuit.vue")), + } +}; +``` + +## 使用方式 + +### 完整视图 +访问 `QYGL3F8E` 将显示完整的人企关系分析,包含所有九个子模块。 + +### 独立子模块 +- 访问 `CQYGL3F8E_Investment` 仅显示投资企业记录 +- 访问 `CQYGL3F8E_SeniorExecutive` 仅显示高管任职记录 +- 访问 `CQYGL3F8E_Lawsuit` 仅显示涉诉风险 +- 访问 `CQYGL3F8E_InvestHistory` 仅显示对外投资历史 +- 访问 `CQYGL3F8E_FinancingHistory` 仅显示融资历史 +- 访问 `CQYGL3F8E_Punishment` 仅显示行政处罚 +- 访问 `CQYGL3F8E_Abnormal` 仅显示经营异常 +- 访问 `CQYGL3F8E_OwnTax` 仅显示欠税公告 +- 访问 `CQYGL3F8E_TaxContravention` 仅显示税收违法 + +## 特性 + +### 1. 数据过滤 +- 基于关系类型智能过滤企业数据 +- 支持多种关系类型的组合展示 + +### 2. 展开式详情 +- 企业卡片支持点击展开查看详细信息 +- 包含持股信息、基本信息、联系方式等 + +### 3. 状态标识 +- 企业状态颜色编码(存续、注销、吊销等) +- 关系类型标签展示 + +### 4. 数据格式化 +- 资本金额自动转换为万元单位 +- 日期格式化显示 +- 持股比例可视化进度条 + +### 5. 响应式设计 +- 支持移动端和桌面端 +- 自适应布局和交互 + +## 注意事项 + +1. **数据完整性**: 拆分后的数据保持原始结构的完整性 +2. **性能优化**: 使用 `defineAsyncComponent` 实现组件懒加载 +3. **错误处理**: 对缺失数据进行安全处理,避免渲染错误 +4. **样式一致性**: 保持与整体设计系统的视觉一致性 + +## 更新历史 + +- **v1.0.0**: 初始版本,支持基本的企业关联信息展示 +- **v2.0.0**: 模块拆分重构,支持独立子模块访问 +- **v2.1.0**: 优化数据处理逻辑,增强错误处理能力 +- **v2.2.0**: 新增欠税公告和税收违法模块,完善企业风险分析功能 diff --git a/src/ui/CQYGL3F8E/components/Abnormal.vue b/src/ui/CQYGL3F8E/components/Abnormal.vue new file mode 100644 index 0000000..1a71fd5 --- /dev/null +++ b/src/ui/CQYGL3F8E/components/Abnormal.vue @@ -0,0 +1,273 @@ + + + + + \ No newline at end of file diff --git a/src/ui/CQYGL3F8E/components/FinancingHistory.vue b/src/ui/CQYGL3F8E/components/FinancingHistory.vue new file mode 100644 index 0000000..8b8fb21 --- /dev/null +++ b/src/ui/CQYGL3F8E/components/FinancingHistory.vue @@ -0,0 +1,265 @@ + + + + + \ No newline at end of file diff --git a/src/ui/CQYGL3F8E/components/InvestHistory.vue b/src/ui/CQYGL3F8E/components/InvestHistory.vue new file mode 100644 index 0000000..40a6c86 --- /dev/null +++ b/src/ui/CQYGL3F8E/components/InvestHistory.vue @@ -0,0 +1,337 @@ + + + + + \ No newline at end of file diff --git a/src/ui/CQYGL3F8E/components/Investment.vue b/src/ui/CQYGL3F8E/components/Investment.vue new file mode 100644 index 0000000..2ba7c90 --- /dev/null +++ b/src/ui/CQYGL3F8E/components/Investment.vue @@ -0,0 +1,335 @@ + + + + + diff --git a/src/ui/CQYGL3F8E/components/Lawsuit.vue b/src/ui/CQYGL3F8E/components/Lawsuit.vue new file mode 100644 index 0000000..dbc012c --- /dev/null +++ b/src/ui/CQYGL3F8E/components/Lawsuit.vue @@ -0,0 +1,1704 @@ + + + + + diff --git a/src/ui/CQYGL3F8E/components/Punishment.vue b/src/ui/CQYGL3F8E/components/Punishment.vue new file mode 100644 index 0000000..d861e44 --- /dev/null +++ b/src/ui/CQYGL3F8E/components/Punishment.vue @@ -0,0 +1,289 @@ + + + + + \ No newline at end of file diff --git a/src/ui/CQYGL3F8E/components/SeniorExecutive.vue b/src/ui/CQYGL3F8E/components/SeniorExecutive.vue new file mode 100644 index 0000000..b301d52 --- /dev/null +++ b/src/ui/CQYGL3F8E/components/SeniorExecutive.vue @@ -0,0 +1,307 @@ + + + + + diff --git a/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue b/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue new file mode 100644 index 0000000..e49d59d --- /dev/null +++ b/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue b/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue new file mode 100644 index 0000000..5097bd0 --- /dev/null +++ b/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/src/ui/CQYGL3F8E/components/TaxRisk/index.vue b/src/ui/CQYGL3F8E/components/TaxRisk/index.vue new file mode 100644 index 0000000..9e6dfed --- /dev/null +++ b/src/ui/CQYGL3F8E/components/TaxRisk/index.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/src/ui/CQYGL3F8E/index.vue b/src/ui/CQYGL3F8E/index.vue new file mode 100644 index 0000000..62e45de --- /dev/null +++ b/src/ui/CQYGL3F8E/index.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/src/ui/CQYGL3F8E/utils/simpleSplitter.js b/src/ui/CQYGL3F8E/utils/simpleSplitter.js new file mode 100644 index 0000000..94e89da --- /dev/null +++ b/src/ui/CQYGL3F8E/utils/simpleSplitter.js @@ -0,0 +1,302 @@ +/** + * CQYGL3F8E企业关联数据拆分工具 + * 将企业关联数据拆分为投资企业记录、高管任职记录和涉诉风险三个独立模块 + */ + +/** + * 拆分CQYGL3F8E数据为多个独立的tab模块 + * @param {Array} reportData - 报告数据数组 + * @returns {Array} 拆分后的数据数组 + */ +export function splitCQYGL3F8EForTabs(reportData) { + const result = [] + + reportData.forEach(item => { + if (item.data?.apiID === 'QYGL3F8E') { + // 将QYGL3F8E拆分成多个独立的tab + const qyglData = item.data.data + const baseTimestamp = item.data.timestamp + + // 投资类关系 + const investRelations = ["sh", "his_sh", "lp", "his_lp"] + + // 高管类关系 + const managerRelations = ["tm", "his_tm"] + + // 获取投资企业记录(股东、历史股东、法人、历史法人) + const investCompanies = (qyglData?.items || []).filter((item) => { + const relationships = item?.relationship || [] + return relationships.some((r) => investRelations.includes(r)) + }) + + // 获取高管任职记录(高管、历史高管) + const managerPositions = (qyglData?.items || []).filter((item) => { + const relationships = item?.relationship || [] + return relationships.some((r) => managerRelations.includes(r)) + }) + + // 获取有涉诉风险的企业 + const lawsuitCompanies = (qyglData?.items || []).filter((item) => { + const lawsuit = item?.lawsuitInfo || {} + return ( + (lawsuit.entout && lawsuit.entout.data && Object.keys(lawsuit.entout.data).length > 0) || + (lawsuit.sxbzxr && lawsuit.sxbzxr.data && lawsuit.sxbzxr.data.sxbzxr && lawsuit.sxbzxr.data.sxbzxr.length > 0) || + (lawsuit.xgbzxr && lawsuit.xgbzxr.data && lawsuit.xgbzxr.data.xgbzxr && lawsuit.xgbzxr.data.xgbzxr.length > 0) + ) + }) + + // 1. 投资企业记录模块 + result.push({ + data: { + apiID: 'CQYGL3F8E_Investment', + data: investCompanies, + success: true, + timestamp: baseTimestamp + } + }) + + // 2. 高管任职记录模块 + result.push({ + data: { + apiID: 'CQYGL3F8E_SeniorExecutive', + data: managerPositions, + success: true, + timestamp: baseTimestamp + } + }) + // 3. 涉诉风险模块 + result.push({ + data: { + apiID: 'CQYGL3F8E_Lawsuit', + data: { + lawsuitCompanies: lawsuitCompanies, + totalCompanies: qyglData?.items?.length || 0 + }, + success: true, + timestamp: baseTimestamp + } + }) + // 4. 对外投资历史模块 - 从所有企业中收集投资历史 + const allInvestHistory = [] + qyglData?.items?.forEach(company => { + if (company.invest_history?.items) { + company.invest_history.items.forEach(investment => { + allInvestHistory.push({ + ...investment, + companyName: company.orgName, // 添加企业名称 + companyInfo: { + orgName: company.orgName, + relationship: company.relationship, + basicInfo: company.basicInfo + } + }) + }) + } + }) + result.push({ + data: { + apiID: 'CQYGL3F8E_InvestHistory', + data: { items: allInvestHistory, total: allInvestHistory.length }, + success: true, + timestamp: baseTimestamp + } + }) + + // 5. 融资历史模块 - 从所有企业中收集融资历史 + const allFinancingHistory = [] + qyglData?.items?.forEach(company => { + if (company.financing_history?.items) { + company.financing_history.items.forEach(financing => { + allFinancingHistory.push({ + ...financing, + companyName: company.orgName, // 添加企业名称 + companyInfo: { + orgName: company.orgName, + relationship: company.relationship, + basicInfo: company.basicInfo + } + }) + }) + } + }) + result.push({ + data: { + apiID: 'CQYGL3F8E_FinancingHistory', + data: { items: allFinancingHistory, total: allFinancingHistory.length }, + success: true, + timestamp: baseTimestamp + } + }) + + // 6. 行政处罚模块 - 从所有企业中收集行政处罚 + const allPunishmentInfo = [] + qyglData?.items?.forEach(company => { + if (company.punishment_info?.items) { + company.punishment_info.items.forEach(punishment => { + allPunishmentInfo.push({ + ...punishment, + companyName: company.orgName, // 添加企业名称 + companyInfo: { + orgName: company.orgName, + relationship: company.relationship, + basicInfo: company.basicInfo + } + }) + }) + } + }) + result.push({ + data: { + apiID: 'CQYGL3F8E_Punishment', + data: { items: allPunishmentInfo, total: allPunishmentInfo.length }, + success: true, + timestamp: baseTimestamp + } + }) + + // 7. 经营异常模块 - 从所有企业中收集经营异常 + const allAbnormalInfo = [] + qyglData?.items?.forEach(company => { + if (company.abnormal_info?.items) { + company.abnormal_info.items.forEach(abnormal => { + allAbnormalInfo.push({ + ...abnormal, + companyName: company.orgName, // 添加企业名称 + companyInfo: { + orgName: company.orgName, + relationship: company.relationship, + basicInfo: company.basicInfo + } + }) + }) + } + }) + result.push({ + data: { + apiID: 'CQYGL3F8E_Abnormal', + data: { items: allAbnormalInfo, total: allAbnormalInfo.length }, + success: true, + timestamp: baseTimestamp + } + }) + + // 8. 税务风险模块 - 包含欠税公告和税收违法 + const taxRiskCompanies = (qyglData?.items || []).filter((item) => { + const ownTax = item?.own_tax || {}; + const taxContravention = item?.tax_contravention || {}; + return (ownTax.total > 0 && ownTax.items && ownTax.items.length > 0) || + (taxContravention.total > 0 && taxContravention.items && taxContravention.items.length > 0); + }); + + result.push({ + data: { + apiID: 'CQYGL3F8E_TaxRisk', + data: { items: taxRiskCompanies }, + success: true, + timestamp: baseTimestamp + } + }) + + } else { + // 其他数据直接添加 + result.push(item) + } + }) + + return result +} + +/** + * 获取关系文本描述 + * @param {string} relation - 关系代码 + * @returns {string} 关系文本 + */ +export function getRelationshipText(relation) { + const relationshipMap = { + sh: '股东', + his_sh: '曾任股东', + lp: '法人', + his_lp: '曾任法人', + tm: '高管', + his_tm: '曾任高管' + } + return relationshipMap[relation] || relation +} + +/** + * 获取关系样式类 + * @param {string} relation - 关系代码 + * @returns {string} 样式类名 + */ +export function getRelationshipClass(relation) { + const relationshipMap = { + sh: 'bg-blue-100 text-blue-700', + his_sh: 'bg-blue-50 text-blue-600', + lp: 'bg-green-100 text-green-700', + his_lp: 'bg-green-50 text-green-600', + tm: 'bg-purple-100 text-purple-700', + his_tm: 'bg-purple-50 text-purple-600' + } + return relationshipMap[relation] || 'bg-gray-100 text-gray-600' +} + +/** + * 获取企业状态对应的样式类 + * @param {string} status - 企业状态 + * @returns {string} 样式类名 + */ +export function getStatusClass(status) { + if (!status) return 'bg-gray-100 text-gray-500' + + if (status.includes('注销') || status.includes('吊销')) { + return 'bg-red-50 text-red-600' + } else if (status.includes('存续') || status.includes('在营')) { + return 'bg-green-50 text-green-600' + } else if (status.includes('筹建') || status.includes('新设')) { + return 'bg-blue-50 text-blue-600' + } else { + return 'bg-yellow-50 text-yellow-600' + } +} + +/** + * 格式化资本金额显示 + * @param {string|number} capital - 资本金额 + * @param {string} currency - 货币类型 + * @returns {string} 格式化后的金额 + */ +export function formatCapital(capital, currency) { + if (!capital) return '—' + + let unit = '' + let value = parseFloat(capital) + + // 处理原始数据中可能带有的单位 + if (typeof capital === 'string' && capital.includes('万')) { + unit = '万' + const numMatch = capital.match(/[\d.]+/) + value = numMatch ? parseFloat(numMatch[0]) : 0 + } else if (value >= 10000) { + // 大额数字转换为万元显示 + value = value / 10000 + unit = '万' + } + + // 格式化数字,保留两位小数(如果有小数部分) + const formattedValue = value.toLocaleString('zh-CN', { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) + + return `${formattedValue}${unit} ${currency || '人民币'}` +} + +/** + * 格式化日期显示 + * @param {string} dateStr - 日期字符串 + * @returns {string} 格式化后的日期 + */ +export function formatDate(dateStr) { + if (!dateStr) return '—' + return dateStr +} diff --git a/src/ui/DWBG6A2C/README.md b/src/ui/DWBG6A2C/README.md new file mode 100644 index 0000000..036c5dc --- /dev/null +++ b/src/ui/DWBG6A2C/README.md @@ -0,0 +1,178 @@ +# 司南报告组件 (DWBG6A2C) - 模块化架构 + +## 概述 + +司南报告组件采用模块化架构设计,将完整的司南报告拆分成13个独立的模块,每个模块都可以作为独立的tab显示,具有独立的大标题。 + +## 数据结构 + +司南报告的数据结构如下: + +```javascript +{ + "apiID": "DWBG6A2C", + "data": { + "baseInfo": {}, // 基本信息 + "standLiveInfo": {}, // 身份信息核验 + "riskPoint": {}, // 命中风险标注 + "securityInfo": {}, // 公安重点人员核验 + "antiFraudInfo": {}, // 涉赌涉诈人员核验 + "riskList": {}, // 风险名单 + "applicationStatistics": {}, // 历史借贷行为 + "lendingStatistics": {}, // 近24个月放款情况 + "performanceStatistics": {}, // 履约情况 + "overdueRecord": {}, // 历史逾期记录 + "creditDetail": {}, // 授信详情 + "rentalBehavior": {}, // 租赁行为 + "riskSupervision": {}, // 关联风险监督 + "judiciaRiskInfos": [] // 法院风险信息 + }, + "success": true, + "timestamp": "2025-01-20 21:19:58" +} +``` + +## 模块拆分 + +司南报告被拆分成以下14个独立模块: + +| API ID | 模块名称 | 包含数据 | 组件文件 | +|--------|----------|----------|----------| +| `DWBG6A2C_BaseInfo` | 基本信息 | baseInfo | BaseInfoSection.vue | +| `DWBG6A2C_StandLiveInfo` | 身份信息核验 | standLiveInfo | StandLiveInfoSection.vue | +| `DWBG6A2C_RiskPoint` | 命中风险标注 | riskPoint | RiskPointSection.vue | +| `DWBG6A2C_SecurityInfo` | 公安重点人员核验 | securityInfo | SecurityInfoSection.vue | +| `DWBG6A2C_AntiFraudInfo` | 涉赌涉诈人员核验 | antiFraudInfo | AntiFraudInfoSection.vue | +| `DWBG6A2C_RiskList` | 风险名单 | riskList | RiskListSection.vue | +| `DWBG6A2C_ApplicationStatistics` | 历史借贷行为 | applicationStatistics | ApplicationStatisticsSection.vue | +| `DWBG6A2C_LendingStatistics` | 近24个月放款情况 | lendingStatistics | LendingStatisticsSection.vue | +| `DWBG6A2C_PerformanceStatistics` | 履约情况 | performanceStatistics | PerformanceStatisticsSection.vue | +| `DWBG6A2C_OverdueRecord` | 历史逾期记录 | overdueRecord | OverdueRecordSection.vue | +| `DWBG6A2C_CreditDetail` | 授信详情 | creditDetail | CreditDetailSection.vue | +| `DWBG6A2C_RentalBehavior` | 租赁行为 | rentalBehavior | RentalBehaviorSection.vue | +| `DWBG6A2C_RiskSupervision` | 关联风险监督 | riskSupervision | RiskSupervisionSection.vue | +| `DWBG6A2C_CourtRiskInfo` | 法院风险信息 | judiciaRiskInfos | CourtRiskInfoSection.vue | + +## 使用方法 + +### 1. 前端自动拆分 + +BaseReport.vue 已自动配置支持司南报告的模块化显示: + +```javascript +import { splitDWBG6A2CForTabs } from '@/ui/DWBG6A2C/utils/simpleSplitter.js'; + +// 处理数据拆分(支持DWBG8B4D和DWBG6A2C) +const processedReportData = computed(() => { + let data = reportData.value; + + // 拆分DWBG8B4D数据 + data = splitDWBG8B4DForTabs(data); + + // 拆分DWBG6A2C数据 + data = splitDWBG6A2CForTabs(data); + + return data; +}); +``` + +### 2. 组件配置 + +BaseReport.vue 中已配置所有司南报告模块: + +```javascript +// 司南报告 +DWBG6A2C: { + name: "司南报告", + component: defineAsyncComponent(() => import("@/ui/DWBG6A2C/index.vue")), + remark: '司南报告提供全面的个人信用风险评估,包括身份核验、风险名单、借贷行为、履约情况等多维度分析。' +}, +// ... 其他模块配置 +``` + +## 组件结构 + +``` +src/ui/DWBG6A2C/ +├── index.vue # 原始完整组件(保留) +├── README.md # 文档说明 +├── components/ # 子组件目录 +│ ├── BaseInfoSection.vue # 基本信息 +│ ├── StandLiveInfoSection.vue # 身份信息核验 +│ ├── RiskPointSection.vue # 命中风险标注 +│ ├── SecurityInfoSection.vue # 公安重点人员核验 +│ ├── AntiFraudInfoSection.vue # 涉赌涉诈人员核验 +│ ├── RiskListSection.vue # 风险名单 +│ ├── ApplicationStatisticsSection.vue # 历史借贷行为 +│ ├── LendingStatisticsSection.vue # 近24个月放款情况 +│ ├── PerformanceStatisticsSection.vue # 履约情况 +│ ├── OverdueRecordSection.vue # 历史逾期记录 +│ ├── CreditDetailSection.vue # 授信详情 +│ ├── RentalBehaviorSection.vue # 租赁行为 +│ ├── RiskSupervisionSection.vue # 关联风险监督 +│ └── CourtRiskInfoSection.vue # 法院风险信息 +└── utils/ + └── simpleSplitter.js # 数据拆分工具 +``` + +## 特色功能 + +### 1. 智能风险评估 +- 多维度风险标注 +- 智能颜色编码 +- 风险等级自动判断 + +### 2. 数据可视化 +- 渐变色彩设计 +- 图标化展示 +- 响应式布局 + +### 3. 用户友好 +- 清晰的层次结构 +- 详细的说明文档 +- 直观的风险提示 + +### 4. 模块化设计 +- 独立的模块组件 +- 可复用的工具函数 +- 灵活的数据拆分 + +## 工具函数 + +`utils/simpleSplitter.js` 提供了以下工具函数: + +- `splitDWBG6A2CForTabs()` - 数据拆分 +- `formatRiskLevel()` - 格式化风险等级 +- `formatPhoneStatus()` - 格式化手机号状态 +- `formatVerificationResult()` - 格式化身份核验结果 +- `formatInTime()` - 格式化在网时长 +- `hasRiskData()` - 检查是否有风险数据 + +## 使用示例 + +```javascript +// 在页面中使用 + +``` + +## 注意事项 + +1. 确保数据格式符合司南报告的标准结构 +2. 所有模块都支持数据为空的情况 +3. 风险评估基于实际数据动态计算 +4. 组件采用 Tailwind CSS 进行样式设计 +5. 支持移动端响应式布局 + +## 更新日志 + +- v1.0.0: 初始版本,支持完整的司南报告模块化显示 +- 包含13个独立模块 +- 支持自动数据拆分 +- 提供完整的风险评估功能 diff --git a/src/ui/DWBG6A2C/components/AntiFraudInfoSection.vue b/src/ui/DWBG6A2C/components/AntiFraudInfoSection.vue new file mode 100644 index 0000000..7fb7be5 --- /dev/null +++ b/src/ui/DWBG6A2C/components/AntiFraudInfoSection.vue @@ -0,0 +1,527 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/ApplicationStatisticsSection.vue b/src/ui/DWBG6A2C/components/ApplicationStatisticsSection.vue new file mode 100644 index 0000000..53c2a53 --- /dev/null +++ b/src/ui/DWBG6A2C/components/ApplicationStatisticsSection.vue @@ -0,0 +1,398 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/BaseInfoSection.vue b/src/ui/DWBG6A2C/components/BaseInfoSection.vue new file mode 100644 index 0000000..7edbf10 --- /dev/null +++ b/src/ui/DWBG6A2C/components/BaseInfoSection.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/CourtRiskInfoSection.vue b/src/ui/DWBG6A2C/components/CourtRiskInfoSection.vue new file mode 100644 index 0000000..dc02c54 --- /dev/null +++ b/src/ui/DWBG6A2C/components/CourtRiskInfoSection.vue @@ -0,0 +1,591 @@ + + + + + \ No newline at end of file diff --git a/src/ui/DWBG6A2C/components/CreditDetailSection.vue b/src/ui/DWBG6A2C/components/CreditDetailSection.vue new file mode 100644 index 0000000..a609125 --- /dev/null +++ b/src/ui/DWBG6A2C/components/CreditDetailSection.vue @@ -0,0 +1,300 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/LendingStatisticsSection.vue b/src/ui/DWBG6A2C/components/LendingStatisticsSection.vue new file mode 100644 index 0000000..753436c --- /dev/null +++ b/src/ui/DWBG6A2C/components/LendingStatisticsSection.vue @@ -0,0 +1,567 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/OverdueRecordSection.vue b/src/ui/DWBG6A2C/components/OverdueRecordSection.vue new file mode 100644 index 0000000..d91df10 --- /dev/null +++ b/src/ui/DWBG6A2C/components/OverdueRecordSection.vue @@ -0,0 +1,617 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/PerformanceStatisticsSection.vue b/src/ui/DWBG6A2C/components/PerformanceStatisticsSection.vue new file mode 100644 index 0000000..815afea --- /dev/null +++ b/src/ui/DWBG6A2C/components/PerformanceStatisticsSection.vue @@ -0,0 +1,522 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/RentalBehaviorSection.vue b/src/ui/DWBG6A2C/components/RentalBehaviorSection.vue new file mode 100644 index 0000000..3d282bc --- /dev/null +++ b/src/ui/DWBG6A2C/components/RentalBehaviorSection.vue @@ -0,0 +1,824 @@ + + + + + \ No newline at end of file diff --git a/src/ui/DWBG6A2C/components/RiskListSection.vue b/src/ui/DWBG6A2C/components/RiskListSection.vue new file mode 100644 index 0000000..0bd23c9 --- /dev/null +++ b/src/ui/DWBG6A2C/components/RiskListSection.vue @@ -0,0 +1,407 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/RiskPointSection.vue b/src/ui/DWBG6A2C/components/RiskPointSection.vue new file mode 100644 index 0000000..967a5f9 --- /dev/null +++ b/src/ui/DWBG6A2C/components/RiskPointSection.vue @@ -0,0 +1,436 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue b/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue new file mode 100644 index 0000000..a7cc67e --- /dev/null +++ b/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/SecurityInfoSection.vue b/src/ui/DWBG6A2C/components/SecurityInfoSection.vue new file mode 100644 index 0000000..6d21999 --- /dev/null +++ b/src/ui/DWBG6A2C/components/SecurityInfoSection.vue @@ -0,0 +1,427 @@ + + + + + diff --git a/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue b/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue new file mode 100644 index 0000000..17f2159 --- /dev/null +++ b/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue @@ -0,0 +1,383 @@ + + + + \ No newline at end of file diff --git a/src/ui/DWBG6A2C/index.vue b/src/ui/DWBG6A2C/index.vue new file mode 100644 index 0000000..6b710b0 --- /dev/null +++ b/src/ui/DWBG6A2C/index.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/ui/DWBG6A2C/utils/intervalFormatter.js b/src/ui/DWBG6A2C/utils/intervalFormatter.js new file mode 100644 index 0000000..dd54cf2 --- /dev/null +++ b/src/ui/DWBG6A2C/utils/intervalFormatter.js @@ -0,0 +1,304 @@ +/** + * 区间表达式格式化工具 + * 将数学区间表达式转换为用户友好的文本描述 + */ + +/** + * 格式化区间表达式 + * @param {string} interval - 区间表达式,如 "(0,1000)", "[2000,30000)", "[17,+)" + * @param {string} unit - 单位,如 "元", "次", "个", "天" 等 + * @returns {string} 格式化后的文本,如果格式化失败则返回原数据 + */ +export function formatInterval(interval, unit = "") { + // 如果数据为空或无效,返回原数据 + if (!interval || interval === "-" || interval === "0") { + return interval || "-"; + } + + try { + // 处理特殊格式,如 "3,6(个月)" + if (interval.includes("(") && interval.includes(")")) { + const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/); + if (match) { + const numbers = match[1].split(",").map((n) => n.trim()); + const timeUnit = match[2]; + if (numbers.length === 2) { + return `${numbers[0]}-${numbers[1]}${timeUnit}`; + } + return `${numbers.join(", ")}${timeUnit}`; + } + } + + // 处理区间表达式 + const intervalPattern = + /^([\[\(])(\d+(?:\.\d+)?),(\d+(?:\.\d+)?|\+)([\]\)])$/; + const match = interval.match(intervalPattern); + + // 如果不是区间表达式,返回原数据 + if (!match) { + return interval; + } + + const [, leftBracket, leftValue, rightValue, rightBracket] = match; + const isLeftInclusive = leftBracket === "["; + const isRightInclusive = rightBracket === "]"; + const isRightInfinity = rightValue === "+"; + + let result = ""; + + if (isRightInfinity) { + // 处理无穷大情况,如 "[17,+)" + if (isLeftInclusive) { + result = `≥${leftValue}${unit}`; + } else { + result = `>${leftValue}${unit}`; + } + } else { + // 处理有限区间 + const leftNum = parseFloat(leftValue); + const rightNum = parseFloat(rightValue); + + // 检查数值是否有效 + if (isNaN(leftNum) || isNaN(rightNum)) { + return interval; + } + + if (leftNum === rightNum) { + // 单点值 + result = `${leftNum}${unit}`; + } else { + // 区间值 - 简化为实际数值范围 + if (isLeftInclusive && isRightInclusive) { + result = `${leftNum}-${rightNum}${unit}`; + } else if (isLeftInclusive && !isRightInclusive) { + // 右开区间,显示到 rightNum-1 + result = `${leftNum}-${rightNum - 1}${unit}`; + } else if (!isLeftInclusive && isRightInclusive) { + // 左开区间,显示从 leftNum+1 + result = `${leftNum + 1}-${rightNum}${unit}`; + } else { + // 两端都不包含,显示从 leftNum+1 到 rightNum-1 + result = `${leftNum + 1}-${rightNum - 1}${unit}`; + } + } + } + + return result; + } catch (error) { + // 如果格式化过程中出现错误,返回原数据 + console.warn("区间格式化失败:", error, "原数据:", interval); + return interval; + } +} + +/** + * 格式化金额区间 + * @param {string} interval - 金额区间表达式 + * @returns {string} 格式化后的金额文本 + */ +export function formatAmountInterval(interval) { + return formatInterval(interval, "元"); +} + +/** + * 格式化次数区间 + * @param {string} interval - 次数区间表达式 + * @returns {string} 格式化后的次数文本 + */ +export function formatCountInterval(interval) { + return formatInterval(interval, "次"); +} + +/** + * 格式化天数区间 + * @param {string} interval - 天数区间表达式 + * @returns {string} 格式化后的天数文本 + */ +export function formatDaysInterval(interval) { + return formatInterval(interval, "天"); +} + +/** + * 格式化机构数量区间 + * @param {string} interval - 机构数量区间表达式 + * @returns {string} 格式化后的机构数量文本 + */ +export function formatInstitutionInterval(interval) { + return formatInterval(interval, "家"); +} + +/** + * 格式化时间区间 + * @param {string} interval - 时间区间表达式 + * @returns {string} 格式化后的时间文本 + */ +export function formatTimeInterval(interval) { + if (!interval || interval === "-") { + return "-"; + } + + // 处理特殊格式,如 "3,6(个月)" + if (interval.includes("(") && interval.includes(")")) { + const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/); + if (match) { + const numbers = match[1].split(",").map((n) => n.trim()); + const timeUnit = match[2]; + if (numbers.length === 2) { + return `${numbers[0]}-${numbers[1]}${timeUnit}`; + } + return `${numbers.join(", ")}${timeUnit}`; + } + } + + return formatInterval(interval, ""); +} + +/** + * 格式化申请次数区间 + * @param {string} interval - 申请次数区间表达式,格式如 "2/1" + * @returns {string} 格式化后的申请次数文本 + */ +export function formatApplicationInterval(interval) { + if (!interval || interval === "-") { + return "-"; + } + + // 处理 "2/1" 格式,表示 申请次数/机构数 + if (interval.includes("/")) { + const [applyCount, institutionCount] = interval.split("/"); + return `${applyCount}次/${institutionCount}家`; + } + + return formatCountInterval(interval); +} + +/** + * 格式化租赁申请数据 - 专门处理司南报告中的 "次数/机构数" 格式 + * @param {string} data - 租赁申请数据,格式如 "2/1" (次数/机构数) + * @returns {Object} 包含格式化后的次数和机构数的对象 + */ +export function formatRentalApplicationData(data) { + if (!data || data === "-" || data === "0/0") { + return { + count: 0, + institutions: 0, + countText: "0 次", + institutionsText: "0 家", + combinedText: "0 次 / 0 家", + }; + } + + if (data.includes("/")) { + const [countStr, institutionsStr] = data.split("/"); + const count = parseInt(countStr) || 0; + const institutions = parseInt(institutionsStr) || 0; + + return { + count, + institutions, + countText: `${count} 次`, + institutionsText: `${institutions} 家`, + combinedText: `${count} 次 / ${institutions} 家`, + }; + } + + // 如果不是标准格式,返回原数据 + return { + count: 0, + institutions: 0, + countText: data, + institutionsText: data, + combinedText: data, + }; +} + +/** + * 格式化风险等级文本 + * @param {string} level - 风险等级,如 "C2,C5" + * @returns {string} 格式化后的风险等级文本 + */ +export function formatRiskLevel(level) { + if (!level) return "-"; + + const levelMap = { + 0: "正常人员", + A: "前科:侵犯公民人身权利,民主权利", + A1: "盗窃", + A2: "诈骗", + A3: "抢劫/夺", + A4: "故意伤害/杀人", + A5: "强奸/性侵/猥亵", + B: "经济类前科", + B1: "走私", + B2: "破坏金融管理秩序", + B3: "正常人员", + B4: "洗钱", + B5: "洗钱", + C: "妨害社会管理秩序", + C1: "扰乱公共秩序", + C2: "妨害司法", + C3: "涉毒", + C4: "涉黄刑案", + C5: "帮信/掩隐/侵公", + D: "重点", + D1: "危害国家、公共安全", + D2: "涉稳", + D3: "涉及境外", + D4: "涉恐、疆藏", + D5: "涉黑", + E: "涉交通案件", + F: "法院文书", + }; + + return level + .split(",") + .map((l) => levelMap[l.trim()] || l.trim()) + .join("、"); +} + +/** + * 格式化状态文本 + * @param {string} status - 状态值 + * @param {Object} statusMap - 状态映射对象 + * @returns {string} 格式化后的状态文本 + */ +export function formatStatus(status, statusMap = {}) { + if (status === undefined || status === null || status === "") { + return "-"; + } + + return statusMap[status] || status; +} + +/** + * 格式化风险标识 + * @param {number} flag - 风险标识,0=未查得,1=高风险,2=低风险 + * @returns {Object} 包含文本和样式的对象 + */ +export function formatRiskFlag(flag) { + const flagMap = { + 0: { text: "未查得", class: "bg-gray-100 text-gray-700" }, + 1: { text: "高风险", class: "bg-red-100 text-red-700" }, + 2: { text: "低风险", class: "bg-green-100 text-green-700" }, + }; + + return ( + flagMap[flag] || { text: "未知", class: "bg-gray-100 text-gray-700" } + ); +} + +/** + * 格式化验证结果 + * @param {string} result - 验证结果 + * @returns {Object} 包含文本和样式的对象 + */ +export function formatVerificationResult(result) { + const resultMap = { + 一致: { text: "一致", class: "text-green-600" }, + 不一致: { text: "不一致", class: "text-red-600" }, + 验证通过: { text: "验证通过", class: "text-green-600" }, + 验证失败: { text: "验证失败", class: "text-red-600" }, + }; + + return resultMap[result] || { text: result || "-", class: "text-gray-600" }; +} diff --git a/src/ui/DWBG6A2C/utils/simpleSplitter.js b/src/ui/DWBG6A2C/utils/simpleSplitter.js new file mode 100644 index 0000000..1b74672 --- /dev/null +++ b/src/ui/DWBG6A2C/utils/simpleSplitter.js @@ -0,0 +1,316 @@ +/** + * 司南报告(DWBG6A2C)数据拆分工具 + * 将完整的司南报告数据拆分成多个独立的模块,用于在不同的tab中显示 + */ + +/** + * 将DWBG6A2C数据拆分为多个独立的tab模块 + * @param {Array} reportData - 原始报告数据数组 + * @returns {Array} 拆分后的模块数组 + */ +export function splitDWBG6A2CForTabs(reportData) { + // 查找DWBG6A2C数据 + const targetIndex = reportData.findIndex(item => item.data?.apiID === 'DWBG6A2C'); + const dwbg6a2cData = targetIndex >= 0 ? reportData[targetIndex] : null; + + if (!dwbg6a2cData || !dwbg6a2cData.data?.data) { + return reportData; // 如果没有找到DWBG6A2C数据,返回原数据 + } + + const originalData = dwbg6a2cData.data.data; + const baseTimestamp = dwbg6a2cData.data.timestamp; + + // 创建拆分后的模块数组 + const splitModules = []; + + // 1. 基本信息 + // if (originalData.baseInfo) { + // splitModules.push({ + // data: { + // apiID: 'DWBG6A2C_BaseInfo', + // data: { + // baseInfo: originalData.baseInfo + // }, + // success: true, + // timestamp: baseTimestamp + // } + // }); + // } + + // 2. 身份信息核验 + if (originalData.standLiveInfo) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_StandLiveInfo', + data: { + standLiveInfo: originalData.standLiveInfo + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 3. 命中风险标注 + if (originalData.riskPoint) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_RiskPoint', + data: { + riskPoint: originalData.riskPoint + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 4. 公安重点人员核验 + if (originalData.securityInfo) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_SecurityInfo', + data: { + securityInfo: originalData.securityInfo + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 5. 涉赌涉诈人员核验 + if (originalData.antiFraudInfo) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_AntiFraudInfo', + data: { + antiFraudInfo: originalData.antiFraudInfo + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 6. 风险名单 + if (originalData.riskList) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_RiskList', + data: { + riskList: originalData.riskList + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 7. 历史借贷行为 + if (originalData.applicationStatistics) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_ApplicationStatistics', + data: { + applicationStatistics: originalData.applicationStatistics + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 8. 近24个月放款情况 + if (originalData.lendingStatistics) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_LendingStatistics', + data: { + lendingStatistics: originalData.lendingStatistics + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 9. 履约情况 + if (originalData.performanceStatistics) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_PerformanceStatistics', + data: { + performanceStatistics: originalData.performanceStatistics + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 10. 历史逾期记录 + if (originalData.overdueRecord) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_OverdueRecord', + data: { + overdueRecord: originalData.overdueRecord + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 11. 授信详情 + if (originalData.creditDetail && Object.keys(originalData.creditDetail).length > 0) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_CreditDetail', + data: { + creditDetail: originalData.creditDetail + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 12. 租赁行为 + if (originalData.rentalBehavior) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_RentalBehavior', + data: { + rentalBehavior: originalData.rentalBehavior + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 13. 关联风险监督 + if (originalData.riskSupervision) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_RiskSupervision', + data: { + riskSupervision: originalData.riskSupervision + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + // 14. 法院风险信息 + if (originalData.judiciaRiskInfos && originalData.judiciaRiskInfos.length > 0) { + splitModules.push({ + data: { + apiID: 'DWBG6A2C_CourtRiskInfo', + data: { + judiciaRiskInfos: originalData.judiciaRiskInfos + }, + success: true, + timestamp: baseTimestamp + } + }); + } + + if (splitModules.length === 0) { + return reportData; + } + + const result = [...reportData]; + result.splice(targetIndex, 1, ...splitModules); + + return result; +} + +/** + * 格式化风险等级描述 + * @param {string} level - 风险等级 + * @returns {object} 包含颜色和文本的对象 + */ +export function formatRiskLevel(level) { + const riskLevels = { + '0': { color: 'text-green-600', bg: 'bg-green-100', text: '无风险', icon: '✅' }, + '1': { color: 'text-red-600', bg: 'bg-red-100', text: '有风险', icon: '⚠️' }, + 'A': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '较低风险', icon: '⚠️' }, + 'B': { color: 'text-orange-600', bg: 'bg-orange-100', text: '低风险', icon: '⚠️' }, + 'C': { color: 'text-red-600', bg: 'bg-red-100', text: '中风险', icon: '🚨' }, + 'D': { color: 'text-red-700', bg: 'bg-red-200', text: '高风险', icon: '🚨' } + }; + + return riskLevels[level] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' }; +} + +/** + * 格式化手机号码状态 + * @param {number} status - 状态码 + * @returns {object} 包含颜色和文本的对象 + */ +export function formatPhoneStatus(status) { + const statusMap = { + '-1': { color: 'text-gray-600', bg: 'bg-gray-100', text: '未查得', icon: '❓' }, + '0': { color: 'text-red-600', bg: 'bg-red-100', text: '空号', icon: '❌' }, + '1': { color: 'text-green-600', bg: 'bg-green-100', text: '实号', icon: '✅' }, + '2': { color: 'text-orange-600', bg: 'bg-orange-100', text: '停机', icon: '⏸️' }, + '3': { color: 'text-gray-600', bg: 'bg-gray-100', text: '库无', icon: '❓' }, + '4': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '沉默号', icon: '😴' }, + '5': { color: 'text-red-600', bg: 'bg-red-100', text: '风险号', icon: '⚠️' } + }; + + return statusMap[status.toString()] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' }; +} + +/** + * 格式化身份核验结果 + * @param {string} result - 核验结果 + * @returns {object} 包含颜色和文本的对象 + */ +export function formatVerificationResult(result) { + const resultMap = { + '0': { color: 'text-green-600', bg: 'bg-green-100', text: '一致', icon: '✅' }, + '1': { color: 'text-red-600', bg: 'bg-red-100', text: '不一致或不存在', icon: '❌' } + }; + + return resultMap[result] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' }; +} + +/** + * 格式化在网时长 + * @param {string} inTime - 在网时长代码 + * @returns {object} 包含颜色和文本的对象 + */ +export function formatInTime(inTime) { + const timeMap = { + '0': { color: 'text-red-600', bg: 'bg-red-100', text: '0-3个月', icon: '📱' }, + '3': { color: 'text-orange-600', bg: 'bg-orange-100', text: '3-6个月', icon: '📱' }, + '6': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '6-12个月', icon: '📱' }, + '12': { color: 'text-blue-600', bg: 'bg-blue-100', text: '12-24个月', icon: '📱' }, + '24': { color: 'text-green-600', bg: 'bg-green-100', text: '24个月以上', icon: '📱' }, + '99': { color: 'text-gray-600', bg: 'bg-gray-100', text: '状态异常', icon: '⚠️' }, + '-1': { color: 'text-gray-600', bg: 'bg-gray-100', text: '查无记录', icon: '❓' } + }; + + return timeMap[inTime] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' }; +} + +/** + * 检查是否有风险数据 + * @param {Object} data - 数据对象 + * @returns {boolean} 是否有风险 + */ +export function hasRiskData(data) { + if (!data) return false; + + // 检查对象中是否有非0值 + return Object.values(data).some(value => { + if (typeof value === 'number') return value > 0; + if (typeof value === 'string') return value !== '0' && value !== '-' && value !== ''; + return false; + }); +} diff --git a/src/ui/DWBG7F3A/components/CircleRiskSection.vue b/src/ui/DWBG7F3A/components/CircleRiskSection.vue new file mode 100644 index 0000000..5b0b1ef --- /dev/null +++ b/src/ui/DWBG7F3A/components/CircleRiskSection.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/ui/DWBG7F3A/components/FraudRiskSection.vue b/src/ui/DWBG7F3A/components/FraudRiskSection.vue new file mode 100644 index 0000000..d370595 --- /dev/null +++ b/src/ui/DWBG7F3A/components/FraudRiskSection.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/src/ui/DWBG7F3A/components/MultipleApplicationSection.vue b/src/ui/DWBG7F3A/components/MultipleApplicationSection.vue new file mode 100644 index 0000000..a6da5bf --- /dev/null +++ b/src/ui/DWBG7F3A/components/MultipleApplicationSection.vue @@ -0,0 +1,519 @@ + + + + + diff --git a/src/ui/DWBG7F3A/components/MultipleDebtScoreSection.vue b/src/ui/DWBG7F3A/components/MultipleDebtScoreSection.vue new file mode 100644 index 0000000..918ba0d --- /dev/null +++ b/src/ui/DWBG7F3A/components/MultipleDebtScoreSection.vue @@ -0,0 +1,97 @@ + + + + + + diff --git a/src/ui/DWBG7F3A/components/MultipleOverdueSection.vue b/src/ui/DWBG7F3A/components/MultipleOverdueSection.vue new file mode 100644 index 0000000..d7f8516 --- /dev/null +++ b/src/ui/DWBG7F3A/components/MultipleOverdueSection.vue @@ -0,0 +1,396 @@ + + + + + diff --git a/src/ui/DWBG7F3A/index.vue b/src/ui/DWBG7F3A/index.vue new file mode 100644 index 0000000..669d6a1 --- /dev/null +++ b/src/ui/DWBG7F3A/index.vue @@ -0,0 +1,136 @@ + + + diff --git a/src/ui/DWBG7F3A/utils/riskDataParser.js b/src/ui/DWBG7F3A/utils/riskDataParser.js new file mode 100644 index 0000000..ff16e07 --- /dev/null +++ b/src/ui/DWBG7F3A/utils/riskDataParser.js @@ -0,0 +1,271 @@ +/** + * 解析多头借贷数据 + * @param {Array} riskInfo - riskInfo_report_v3.1 数组 + * @returns {Object} 解析后的结构化数据 + */ +export function parseRiskData(riskInfo) { + if (!Array.isArray(riskInfo)) { + return {} + } + + // 创建 riskCode 到 riskCodeValue 的映射 + const riskMap = {} + riskInfo.forEach(item => { + const code = String(item.riskCode) + const value = item.riskCodeValue + riskMap[code] = value + }) + + const result = { + // 多头共债子分 + multipleDebtScore: { + general: parseValue(riskMap['41001']), // 多头申请通用分 + shortCycle: parseValue(riskMap['41002']), // 短周期多头共债子分 + longCycle: parseValue(riskMap['41003']), // 长周期多头共债子分 + nonBank: parseValue(riskMap['41004']), // 非银行多头共债子分 + bank: parseValue(riskMap['41005']), // 银行多头共债子分 + }, + + // 多头申请 + multipleApplication: parseMultipleApplication(riskMap), + + // 多头逾期 + multipleOverdue: parseMultipleOverdue(riskMap), + + // 圈团风险 + circleRisk: { + riskScore1: parseValue(riskMap['21007']), // 圈团1浓度分V2 + riskLevel2: parseValue(riskMap['22006']), // 圈团2风险等级V1 + riskScore3: parseValue(riskMap['23006']), // 圈团3浓度分V1 + }, + + // 可疑欺诈风险 + fraudRisk: { + riskLevel1: parseValue(riskMap['31006']), // 疑似准入风险V1 + riskLevel2: parseValue(riskMap['310018']), // 疑似准入风险V2 + }, + + // 查询天数差 + queryDays: { + earliestQueryDays: parseValue(riskMap['40189']), // 最早一次查询距今的天数 + latestQueryDays: parseValue(riskMap['40190']), // 最近一次查询距今的天数 + earliestBankDays: parseValue(riskMap['40191']), // 最早一次在银行机构距今的天数 + latestBankDays: parseValue(riskMap['40192']), // 最近一次在银行机构距今的天数 + earliestNonBankDays: parseValue(riskMap['40193']), // 最早一次在非银机构距今的天数 + latestNonBankDays: parseValue(riskMap['40194']), // 最近一次在非银机构距今的天数 + }, + } + + return result +} + +/** + * 解析多头申请数据 + */ +function parseMultipleApplication(riskMap) { + const periods = ['7d', '15d', '30d', '60d', '90d', '180d', '360d', '720d'] + const periodMap = { + '7d': 0, + '15d': 1, + '30d': 2, + '60d': 3, + '90d': 4, + '180d': 5, + '360d': 6, + '720d': 7, + } + + const industries = ['total', 'bank', 'licensedConsumer', 'fintech', 'tech', 'other'] + const industryMap = { + total: 0, + bank: 1, + licensedConsumer: 2, + fintech: 3, + tech: 4, + other: 5, + } + + // 行业次数 (40001-40048) + const applicationCounts = {} + periods.forEach((period, pIdx) => { + applicationCounts[period] = {} + industries.forEach((industry, iIdx) => { + const code = 40001 + pIdx * 6 + iIdx + applicationCounts[period][industry] = parseValue(riskMap[String(code)]) + }) + }) + + // 行业平台数 (40049-40096) + const platformCounts = {} + periods.forEach((period, pIdx) => { + platformCounts[period] = {} + industries.forEach((industry, iIdx) => { + const code = 40049 + pIdx * 6 + iIdx + platformCounts[period][industry] = parseValue(riskMap[String(code)]) + }) + }) + + // 总白天/凌晨申请数 (40097-40112) + const dayNightCounts = { + day: {}, + night: {}, + } + periods.forEach((period, pIdx) => { + dayNightCounts.day[period] = parseValue(riskMap[String(40097 + pIdx)]) + dayNightCounts.night[period] = parseValue(riskMap[String(40105 + pIdx)]) + }) + + // 银行白天/凌晨申请数 (40113-40128) + const bankDayNightCounts = { + day: {}, + night: {}, + } + periods.forEach((period, pIdx) => { + bankDayNightCounts.day[period] = parseValue(riskMap[String(40113 + pIdx)]) + bankDayNightCounts.night[period] = parseValue(riskMap[String(40121 + pIdx)]) + }) + + // 总白天/凌晨申请平台数 (40129-40144) + const dayNightPlatforms = { + day: {}, + night: {}, + } + periods.forEach((period, pIdx) => { + dayNightPlatforms.day[period] = parseValue(riskMap[String(40129 + pIdx)]) + dayNightPlatforms.night[period] = parseValue(riskMap[String(40137 + pIdx)]) + }) + + // 银行白天/凌晨申请平台数 (40145-40160) + const bankDayNightPlatforms = { + day: {}, + night: {}, + } + periods.forEach((period, pIdx) => { + bankDayNightPlatforms.day[period] = parseValue(riskMap[String(40145 + pIdx)]) + bankDayNightPlatforms.night[period] = parseValue(riskMap[String(40153 + pIdx)]) + }) + + // 新增总平台数 (40161-40174) + const newTotalPlatforms = { + '7d_vs_30d': parseValue(riskMap['40161']), + '7d_vs_90d': parseValue(riskMap['40162']), + '7d_vs_180d': parseValue(riskMap['40163']), + '7d_vs_360d': parseValue(riskMap['40164']), + '7d_vs_720d': parseValue(riskMap['40165']), + '15d_vs_30d': parseValue(riskMap['40166']), + '15d_vs_90d': parseValue(riskMap['40167']), + '15d_vs_180d': parseValue(riskMap['40168']), + '15d_vs_360d': parseValue(riskMap['40169']), + '15d_vs_720d': parseValue(riskMap['40170']), + '30d_vs_90d': parseValue(riskMap['40171']), + '30d_vs_180d': parseValue(riskMap['40172']), + '30d_vs_360d': parseValue(riskMap['40173']), + '30d_vs_720d': parseValue(riskMap['40174']), + } + + // 新增银行总平台数 (40175-40188) + const newBankPlatforms = { + '7d_vs_30d': parseValue(riskMap['40175']), + '7d_vs_90d': parseValue(riskMap['40176']), + '7d_vs_180d': parseValue(riskMap['40177']), + '7d_vs_360d': parseValue(riskMap['40178']), + '7d_vs_720d': parseValue(riskMap['40179']), + '15d_vs_30d': parseValue(riskMap['40180']), + '15d_vs_90d': parseValue(riskMap['40181']), + '15d_vs_180d': parseValue(riskMap['40182']), + '15d_vs_360d': parseValue(riskMap['40183']), + '15d_vs_720d': parseValue(riskMap['40184']), + '30d_vs_90d': parseValue(riskMap['40185']), + '30d_vs_180d': parseValue(riskMap['40186']), + '30d_vs_360d': parseValue(riskMap['40187']), + '30d_vs_720d': parseValue(riskMap['40188']), + } + + return { + applicationCounts, + platformCounts, + dayNightCounts, + bankDayNightCounts, + dayNightPlatforms, + bankDayNightPlatforms, + newTotalPlatforms, + newBankPlatforms, + totalApplications: applicationCounts, + } +} + +/** + * 解析多头逾期数据 + */ +function parseMultipleOverdue(riskMap) { + const periods = ['1week', '1month', '3month', '6month', '12month', 'over1year'] + const periodCodeMap = { + '1week': { platform: 17001, count: 17101 }, + '1month': { platform: 17002, count: 17102 }, + '3month': { platform: 17003, count: 17103 }, + '6month': { platform: 17004, count: 17104 }, + '12month': { platform: 17005, count: 17105 }, + 'over1year': { platform: 17006, count: 17106 }, + } + + const industries = ['total', 'bank', 'insurance', 'securities', 'trust', 'assetManagement', 'licensedConsumer', 'fintech', 'loanSupermarket', 'dataRisk', 'other'] + const industryCodeMap = { + total: 0, + bank: 1, + insurance: 2, + securities: 3, + trust: 4, + assetManagement: 5, + licensedConsumer: 6, + fintech: 7, + loanSupermarket: 8, + dataRisk: 9, + other: 10, + } + + const overduePlatforms = {} + const overdueCounts = {} + + periods.forEach(period => { + const { platform: basePlatformCode, count: baseCountCode } = periodCodeMap[period] + + overduePlatforms[period] = {} + overdueCounts[period] = {} + + industries.forEach(industry => { + const codeOffset = industryCodeMap[industry] + + // 处理特殊的 code 格式 + // 总计用基础code,其他行业用 baseCode * 10 + offset + let finalPlatformCode, finalCountCode + if (codeOffset === 0) { + finalPlatformCode = basePlatformCode + finalCountCode = baseCountCode + } else { + // 如 170011 = 17001 * 10 + 1 + finalPlatformCode = basePlatformCode * 10 + codeOffset + finalCountCode = baseCountCode * 10 + codeOffset + } + + overduePlatforms[period][industry] = parseValue(riskMap[String(finalPlatformCode)]) + overdueCounts[period][industry] = parseValue(riskMap[String(finalCountCode)]) + }) + }) + + return { + overduePlatforms, + overdueCounts, + } +} + +/** + * 解析数值(处理字符串和数字) + */ +function parseValue(value) { + if (value === undefined || value === null || value === '') { + return 0 + } + const num = Number(value) + return isNaN(num) ? 0 : num +} + diff --git a/src/ui/FLXG7E8F/components/CaseDetail.vue b/src/ui/FLXG7E8F/components/CaseDetail.vue new file mode 100644 index 0000000..06d0299 --- /dev/null +++ b/src/ui/FLXG7E8F/components/CaseDetail.vue @@ -0,0 +1,404 @@ + + + + diff --git a/src/ui/FLXG7E8F/components/StatisticsOverview.vue b/src/ui/FLXG7E8F/components/StatisticsOverview.vue new file mode 100644 index 0000000..1fad049 --- /dev/null +++ b/src/ui/FLXG7E8F/components/StatisticsOverview.vue @@ -0,0 +1,285 @@ + + + + diff --git a/src/ui/FLXG7E8F/index.vue b/src/ui/FLXG7E8F/index.vue new file mode 100644 index 0000000..cef906a --- /dev/null +++ b/src/ui/FLXG7E8F/index.vue @@ -0,0 +1,457 @@ + + + + + + diff --git a/src/ui/FLXG7E8F/utils/lawsuitUtils.js b/src/ui/FLXG7E8F/utils/lawsuitUtils.js new file mode 100644 index 0000000..8ee1142 --- /dev/null +++ b/src/ui/FLXG7E8F/utils/lawsuitUtils.js @@ -0,0 +1,316 @@ +// 案件类型映射表 +export const lawsuitTypeMap = { + breachCase: { + text: "失信被执行", + color: "text-red-600 bg-red-50", + darkColor: "bg-red-500", + riskLevel: "high", // 高风险 + }, + consumptionRestriction: { + text: "限高被执行", + color: "text-orange-600 bg-orange-50", + darkColor: "bg-orange-500", + riskLevel: "high", // 高风险 + }, + criminal: { + text: "刑事案件", + color: "text-red-600 bg-red-50", + darkColor: "bg-red-500", + riskLevel: "high", // 高风险 + }, + civil: { + text: "民事案件", + color: "text-blue-600 bg-blue-50", + darkColor: "bg-blue-500", + riskLevel: "medium", // 中风险 + }, + administrative: { + text: "行政案件", + color: "text-purple-600 bg-purple-50", + darkColor: "bg-purple-500", + riskLevel: "medium", // 中风险 + }, + implement: { + text: "执行案件", + color: "text-orange-600 bg-orange-50", + darkColor: "bg-orange-500", + riskLevel: "medium", // 中风险 + }, + bankrupt: { + text: "强制清算与破产案件", + color: "text-rose-600 bg-rose-50", + darkColor: "bg-rose-500", + riskLevel: "high", // 高风险 + }, + preservation: { + text: "非诉保全审查", + color: "text-amber-600 bg-amber-50", + darkColor: "bg-amber-500", + riskLevel: "low", // 低风险 + }, +}; + +// 案件类型文本 +export const getCaseTypeText = (type) => { + return lawsuitTypeMap[type]?.text || "其他案件"; +}; + +// 案件类型颜色 +export const getCaseTypeColor = (type) => { + return lawsuitTypeMap[type]?.color || "text-gray-600 bg-gray-50"; +}; + +// 案件类型深色 +export const getCaseTypeDarkColor = (type) => { + return lawsuitTypeMap[type]?.darkColor || "bg-gray-500"; +}; + +// 格式化日期显示 +export const formatDate = (dateStr) => { + if (!dateStr) return "—"; + // 转换YYYY-MM-DD为年月日格式 + if (dateStr.includes("-")) { + const parts = dateStr.split("-"); + if (parts.length === 3) { + return `${parts[0]}年${parts[1]}月${parts[2]}日`; + } + } + return dateStr; // 如果不是标准格式则返回原始字符串 +}; + +export const formatLawsuitMoney = (money) => { + if (!money) return "—"; + + const value = parseFloat(money); + if (isNaN(value)) return "—"; + + // 直接显示原始金额(元) + return ( + value.toLocaleString("zh-CN", { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }) + " 元" + ); +}; + +// 获取案件状态样式 +export const getCaseStatusClass = (status) => { + if (!status) return "bg-gray-100 text-gray-500"; + + if (status.includes("已结") || status.includes("已办结")) { + return "bg-green-50 text-green-600"; + } else if (status.includes("执行中") || status.includes("审理中")) { + return "bg-blue-50 text-blue-600"; + } else if (status.includes("未执行")) { + return "bg-amber-50 text-amber-600"; + } else { + return "bg-gray-100 text-gray-500"; + } +}; + +// 获取企业状态对应的样式 +export const getStatusClass = (status) => { + if (!status) return "bg-gray-100 text-gray-500"; + + if (status.includes("注销") || status.includes("吊销")) { + return "bg-red-50 text-red-600"; + } else if (status.includes("存续") || status.includes("在营")) { + return "bg-green-50 text-green-600"; + } else if (status.includes("筹建") || status.includes("新设")) { + return "bg-blue-50 text-blue-600"; + } else { + return "bg-yellow-50 text-yellow-600"; + } +}; + +// 格式化资本金额显示 +export const formatCapital = (capital, currency) => { + if (!capital) return "—"; + + // 检查是否包含"万"字或需要显示为万元 + let unit = ""; + let value = parseFloat(capital); + + // 处理原始数据中可能带有的单位 + if (typeof capital === "string" && capital.includes("万")) { + unit = "万"; + // 提取数字部分 + const numMatch = capital.match(/[\d.]+/); + value = numMatch ? parseFloat(numMatch[0]) : 0; + } else if (value >= 10000) { + // 大额数字转换为万元显示 + value = value / 10000; + unit = "万"; + } + + // 格式化数字,保留两位小数(如果有小数部分) + const formattedValue = value.toLocaleString("zh-CN", { + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }); + + return `${formattedValue}${unit} ${currency || "人民币"}`; +}; + +// 获取涉诉风险等级 +export const getRiskLevel = (lawsuitInfo) => { + if (!lawsuitInfo) { + return { + level: "low", + text: "低风险", + color: "text-green-600 bg-green-50", + }; + } + + // 失信被执行人是最高风险 + if (lawsuitInfo.breachCaseList && lawsuitInfo.breachCaseList.length > 0) { + return { + level: "high", + text: "高风险", + color: "text-red-600 bg-red-50", + }; + } + + // 限高被执行人是最高风险 + if ( + lawsuitInfo.consumptionRestrictionList && + lawsuitInfo.consumptionRestrictionList.length > 0 + ) { + return { + level: "high", + text: "高风险", + color: "text-red-600 bg-red-50", + }; + } + + // 有涉诉数据的风险级别 + if ( + lawsuitInfo.lawsuitStat && + Object.keys(lawsuitInfo.lawsuitStat).length > 0 + ) { + // 检查是否有未结案的案件 + const data = lawsuitInfo.lawsuitStat; + if ( + data.count && + data.count.count_wei_total && + data.count.count_wei_total > 0 + ) { + return { + level: "medium", + text: "中风险", + color: "text-amber-600 bg-amber-50", + }; + } + + // 只有已结案的为低中风险 + return { + level: "low-medium", + text: "低中风险", + color: "text-yellow-600 bg-yellow-50", + }; + } + + return { + level: "low", + text: "低风险", + color: "text-green-600 bg-green-50", + }; +}; + +// 获取涉诉案件统计 +export const getLawsuitStats = (lawsuitInfo) => { + if (!lawsuitInfo) return null; + + const stats = { + total: 0, + types: [], + }; + + // 统计各类型案件数量 + Object.keys(lawsuitTypeMap).forEach((type) => { + let count = 0; + + if (type === "breachCase") { + count = + lawsuitInfo.breachCaseList && + lawsuitInfo.breachCaseList.length > 0 + ? lawsuitInfo.breachCaseList.length + : 0; + } else if (type === "consumptionRestriction") { + count = + lawsuitInfo.consumptionRestrictionList && + lawsuitInfo.consumptionRestrictionList.length > 0 + ? lawsuitInfo.consumptionRestrictionList.length + : 0; + } else if ( + lawsuitInfo.lawsuitStat && + lawsuitInfo.lawsuitStat[type] && + Object.keys(lawsuitInfo.lawsuitStat[type]).length > 0 + ) { + const typeData = lawsuitInfo.lawsuitStat[type]; + count = + typeData.cases && typeData.cases.length + ? typeData.cases.length + : 0; + } + + if (count > 0) { + stats.total += count; + stats.types.push({ + type, + count, + name: getCaseTypeText(type), + color: getCaseTypeColor(type), + darkColor: getCaseTypeDarkColor(type), + }); + } + }); + + return stats; +}; + +// 获取案件类型优先级顺序 +export const getCaseTypePriority = () => { + return [ + "breachCase", // 失信被执行人(最高风险) + "consumptionRestriction", // 限高被执行人 + "criminal", // 刑事案件 + "civil", // 民事案件 + "administrative", // 行政案件 + "implement", // 执行案件 + "bankrupt", // 强制清算与破产案件 + "preservation", // 非诉保全审查 + ]; +}; + +// 根据案件类型获取风险等级 +export const getCaseTypeRiskLevel = (caseType) => { + const typeInfo = lawsuitTypeMap[caseType]; + if (!typeInfo) { + return { + level: "low", + text: "低风险", + color: "text-green-600 bg-green-50", + }; + } + + const riskLevelMap = { + high: { + text: "高风险", + color: "text-red-600 bg-red-50", + }, + medium: { + text: "中风险", + color: "text-amber-600 bg-amber-50", + }, + low: { + text: "低风险", + color: "text-green-600 bg-green-50", + }, + }; + + return { + level: typeInfo.riskLevel, + ...riskLevelMap[typeInfo.riskLevel], + }; +}; diff --git a/src/ui/IVYZ3P9M.vue b/src/ui/IVYZ3P9M.vue new file mode 100644 index 0000000..ad2dc8f --- /dev/null +++ b/src/ui/IVYZ3P9M.vue @@ -0,0 +1,696 @@ + + + + + + diff --git a/src/ui/IVYZ8I9J.vue b/src/ui/IVYZ8I9J.vue new file mode 100644 index 0000000..ddc364b --- /dev/null +++ b/src/ui/IVYZ8I9J.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/src/ui/JRZQ09J8/README.md b/src/ui/JRZQ09J8/README.md new file mode 100644 index 0000000..ee245aa --- /dev/null +++ b/src/ui/JRZQ09J8/README.md @@ -0,0 +1,165 @@ +# 收入评估组件 (JRZQ09J8) + +## 组件概述 + +基于全国社会保险信息系统的缴费基数数据进行收入水平评估,为企业提供专业的收入分析和风险评估服务。 + +## 组件结构 + +``` +JRZQ09J8/ +├── index.vue # 主组件 +├── components/ # 子组件目录 +│ ├── IncomeOverview.vue # 华丽的收入评估概览 +│ ├── IncomeAnalysis.vue # 详细收入分析 +│ └── IncomeLevelGuide.vue # 社保评级对照表 +├── utils/ # 工具函数目录 +│ └── incomeUtils.js # 收入评估工具函数 +└── README.md # 说明文档 +``` + +## 使用方法 + +### 基本用法 + +```vue + + + +``` + +## 数据字段说明 + +| 字段名 | 类型 | 必填 | 描述 | 示例值 | +|-------|------|------|------|--------| +| level | String | 是 | 社保评级等级 | "G" | + +## 评级对照表 + +| level 值 | 社保评级 | 对应月收入范围 | 风险等级 | +|----------|----------|----------------|----------| +| - | **无记录** | 查询无社保记录 | 高风险 | +| A | **A级** | (2000, 4000)元 | 中高风险 | +| B | **B级** | (4000, 6000)元 | 中等风险 | +| C | **C级** | (6000, 8000)元 | 中低风险 | +| D | **D级** | (8000, 10000)元 | 低风险 | +| E | **E级** | (10000, 14000)元 | 很低风险 | +| F | **F级** | (14000, 18000)元 | 极低风险 | +| G | **G级** | (18000, 22000)元 | 极低风险 | +| H | **H级** | (22000, 26000)元 | 无风险 | +| I | **I级** | (26000, 30000)元 | 无风险 | +| J | **J级** | (30000+)元 | 零风险 | + +## 组件特性 + +### 1. 华丽的视觉展示 +- **渐变背景**:使用高级渐变色彩方案 +- **3D效果**:卡片阴影和浮动动画 +- **动态装饰**:浮动圆圈装饰元素 +- **响应式设计**:完美适配各种屏幕尺寸 + +### 2. 专业的数据分析 +- **收入等级可视化**:柱状图展示收入分布 +- **市场对比分析**:与市场平均水平对比 +- **信用风险评估**:基于收入的风险评级 +- **消费能力分析**:预测消费潜力 + +### 3. 详细的评级指南 +- **完整对照表**:所有等级的详细说明 +- **特性标签**:每个等级的关键特征 +- **数据可靠性**:展示数据准确率和覆盖范围 + +### 4. 智能风险评估 +- **动态评分**:根据收入等级自动计算风险分数 +- **个性化建议**:针对不同等级的专业建议 +- **市场定位**:精确的市场百分位排名 + +## 工具函数 + +### incomeUtils.js + +提供了以下核心功能: + +- `getIncomeLevelInfo(level)` - 获取收入等级详细信息 +- `getIncomeRange(level)` - 获取收入范围 +- `getRiskLevel(level)` - 获取风险等级 +- `getMarketComparison(level)` - 获取市场对比分析 +- `getCreditRiskAssessment(level)` - 获取信用风险评估 +- `getConsumptionCapacity(level)` - 获取消费能力分析 +- `generateIncomeAssessmentReport(level)` - 生成完整评估报告 + +## 视觉设计亮点 + +### 1. 色彩系统 +- 使用专业的收入等级色彩映射 +- 渐变背景营造高端感 +- 风险等级颜色区分清晰 + +### 2. 交互体验 +- 悬停效果增强用户体验 +- 平滑的动画过渡 +- 直观的视觉反馈 + +### 3. 信息架构 +- 层次分明的信息展示 +- 重点突出的核心数据 +- 完整的补充说明 + +## 数据说明 + +### 评估依据 +- 基于全国社会保险信息系统 +- 使用社保缴费基数推算收入水平 +- 数据准确率达95%以上 + +### 使用限制 +- 收入范围为税前月收入 +- 存在地区差异,仅供参考 +- 建议结合其他收入证明材料 + +### 更新频率 +- 数据实时更新 +- 全国范围覆盖 +- 持续优化算法模型 + +## 业务价值 + +### 1. 风险控制 +- 精确的收入评估降低信贷风险 +- 多维度风险分析提升决策质量 +- 智能化评分系统提高效率 + +### 2. 客户分层 +- 基于收入的客户分级管理 +- 个性化服务策略制定 +- 精准的市场定位分析 + +### 3. 合规要求 +- 符合金融监管要求 +- 数据来源权威可靠 +- 评估过程透明公开 + +## 注意事项 + +1. 确保传入正确的level值 +2. 组件会自动处理异常数据 +3. 建议在网络良好的环境下使用 +4. 定期更新评估标准以保持准确性 + +## 更新日志 + +- v1.0.0 - 初始版本,支持基础收入评估功能 +- 华丽的视觉展示效果 +- 完整的评级对照系统 +- 专业的风险分析功能 diff --git a/src/ui/JRZQ09J8/components/IncomeAnalysis.vue b/src/ui/JRZQ09J8/components/IncomeAnalysis.vue new file mode 100644 index 0000000..19660bc --- /dev/null +++ b/src/ui/JRZQ09J8/components/IncomeAnalysis.vue @@ -0,0 +1,300 @@ + + + + + diff --git a/src/ui/JRZQ09J8/components/IncomeLevelGuide.vue b/src/ui/JRZQ09J8/components/IncomeLevelGuide.vue new file mode 100644 index 0000000..b4bdaad --- /dev/null +++ b/src/ui/JRZQ09J8/components/IncomeLevelGuide.vue @@ -0,0 +1,445 @@ + + + + + diff --git a/src/ui/JRZQ09J8/components/IncomeOverview.vue b/src/ui/JRZQ09J8/components/IncomeOverview.vue new file mode 100644 index 0000000..db6e3a7 --- /dev/null +++ b/src/ui/JRZQ09J8/components/IncomeOverview.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/src/ui/JRZQ09J8/index.vue b/src/ui/JRZQ09J8/index.vue new file mode 100644 index 0000000..a484a2a --- /dev/null +++ b/src/ui/JRZQ09J8/index.vue @@ -0,0 +1,524 @@ + + + + + diff --git a/src/ui/JRZQ09J8/utils/incomeUtils.js b/src/ui/JRZQ09J8/utils/incomeUtils.js new file mode 100644 index 0000000..7f97535 --- /dev/null +++ b/src/ui/JRZQ09J8/utils/incomeUtils.js @@ -0,0 +1,414 @@ +/** + * 收入评估工具函数 + */ + +/** + * 收入等级映射表 + */ +export const INCOME_LEVEL_MAP = { + '-': { + name: '无记录', + range: '查询无社保记录', + minAmount: 0, + maxAmount: 0, + color: '#94a3b8', + riskLevel: 'high', + description: '未发现社保缴费记录,无法进行收入评估' + }, + 'A': { + name: 'A级收入', + range: '2,000 - 4,000 元', + minAmount: 2000, + maxAmount: 4000, + color: '#ef4444', + riskLevel: 'medium-high', + description: '基础收入水平,消费能力有限' + }, + 'B': { + name: 'B级收入', + range: '4,000 - 6,000 元', + minAmount: 4000, + maxAmount: 6000, + color: '#f97316', + riskLevel: 'medium', + description: '普通收入水平,具备基础消费能力' + }, + 'C': { + name: 'C级收入', + range: '6,000 - 8,000 元', + minAmount: 6000, + maxAmount: 8000, + color: '#eab308', + riskLevel: 'medium-low', + description: '中等收入水平,消费能力良好' + }, + 'D': { + name: 'D级收入', + range: '8,000 - 10,000 元', + minAmount: 8000, + maxAmount: 10000, + color: '#84cc16', + riskLevel: 'low', + description: '中等偏上收入,消费能力较强' + }, + 'E': { + name: 'E级收入', + range: '10,000 - 14,000 元', + minAmount: 10000, + maxAmount: 14000, + color: '#22c55e', + riskLevel: 'very-low', + description: '良好收入水平,消费能力强劲' + }, + 'F': { + name: 'F级收入', + range: '14,000 - 18,000 元', + minAmount: 14000, + maxAmount: 18000, + color: '#10b981', + riskLevel: 'very-low', + description: '较高收入水平,消费能力很强' + }, + 'G': { + name: 'G级收入', + range: '18,000 - 22,000 元', + minAmount: 18000, + maxAmount: 22000, + color: '#06b6d4', + riskLevel: 'minimal', + description: '高收入水平,消费能力强大' + }, + 'H': { + name: 'H级收入', + range: '22,000 - 26,000 元', + minAmount: 22000, + maxAmount: 26000, + color: '#3b82f6', + riskLevel: 'minimal', + description: '很高收入水平,消费能力顶级' + }, + 'I': { + name: 'I级收入', + range: '26,000 - 30,000 元', + minAmount: 26000, + maxAmount: 30000, + color: '#8b5cf6', + riskLevel: 'none', + description: '优秀收入水平,消费能力超强' + }, + 'J': { + name: 'J级收入', + range: '30,000+ 元', + minAmount: 30000, + maxAmount: Infinity, + color: '#d946ef', + riskLevel: 'none', + description: '卓越收入水平,消费潜力无限' + } +} + +/** + * 获取收入等级信息 + * @param {string} level - 收入等级 + * @returns {object} 等级信息 + */ +export const getIncomeLevelInfo = (level) => { + return INCOME_LEVEL_MAP[level] || { + name: '未知等级', + range: '数据异常', + minAmount: 0, + maxAmount: 0, + color: '#94a3b8', + riskLevel: 'unknown', + description: '数据异常,无法进行准确评估' + } +} + +/** + * 获取收入等级显示名称 + * @param {string} level - 收入等级 + * @returns {string} 显示名称 + */ +export const getIncomeLevelName = (level) => { + const levelInfo = getIncomeLevelInfo(level) + return levelInfo.name +} + +/** + * 获取收入范围 + * @param {string} level - 收入等级 + * @returns {string} 收入范围 + */ +export const getIncomeRange = (level) => { + const levelInfo = getIncomeLevelInfo(level) + return levelInfo.range +} + +/** + * 获取收入等级颜色 + * @param {string} level - 收入等级 + * @returns {string} 颜色值 + */ +export const getIncomeLevelColor = (level) => { + const levelInfo = getIncomeLevelInfo(level) + return levelInfo.color +} + +/** + * 获取风险等级 + * @param {string} level - 收入等级 + * @returns {string} 风险等级 + */ +export const getRiskLevel = (level) => { + const levelInfo = getIncomeLevelInfo(level) + return levelInfo.riskLevel +} + +/** + * 格式化金额 + * @param {number} amount - 金额 + * @returns {string} 格式化后的金额 + */ +export const formatAmount = (amount) => { + if (!amount || amount === 0) return '0' + + return amount.toLocaleString('zh-CN', { + style: 'currency', + currency: 'CNY', + minimumFractionDigits: 0, + maximumFractionDigits: 0 + }) +} + +/** + * 获取收入等级排名百分比 + * @param {string} level - 收入等级 + * @returns {number} 排名百分比 (0-100) + */ +export const getIncomePercentile = (level) => { + const percentileMap = { + '-': 0, + 'A': 10, + 'B': 25, + 'C': 40, + 'D': 55, + 'E': 70, + 'F': 80, + 'G': 85, + 'H': 90, + 'I': 95, + 'J': 99 + } + + return percentileMap[level] || 0 +} + +/** + * 获取市场对比描述 + * @param {string} level - 收入等级 + * @returns {string} 市场对比描述 + */ +export const getMarketComparison = (level) => { + const percentile = getIncomePercentile(level) + + if (percentile === 0) { + return '无社保记录,无法与市场平均水平进行对比' + } else if (percentile <= 20) { + return `低于市场平均收入水平,处于收入分布的底部${percentile}%区间` + } else if (percentile <= 40) { + return `略低于市场平均收入水平,处于收入分布的底部${percentile}%区间` + } else if (percentile <= 60) { + return `接近市场平均收入水平,处于收入分布的中等${percentile}%区间` + } else if (percentile <= 80) { + return `高于市场平均收入水平,处于收入分布的上层${percentile}%区间` + } else if (percentile <= 90) { + return `显著高于市场平均收入水平,处于收入分布的顶部${100-percentile}%区间` + } else { + return `远超市场绝大多数收入水平,处于收入分布的顶部${100-percentile}%区间` + } +} + +/** + * 获取信用风险评估 + * @param {string} level - 收入等级 + * @returns {object} 风险评估信息 + */ +export const getCreditRiskAssessment = (level) => { + const riskAssessments = { + '-': { + level: '高风险', + description: '缺乏社保记录,收入稳定性存在不确定性,信用风险较高', + score: 20, + recommendations: ['核实收入来源', '要求担保措施', '谨慎放贷'] + }, + 'A': { + level: '中高风险', + description: '收入水平较低,还款能力有限,需要谨慎评估信用风险', + score: 35, + recommendations: ['评估还款能力', '适当降低额度', '关注还款记录'] + }, + 'B': { + level: '中等风险', + description: '收入水平一般,具备基础还款能力,信用风险中等', + score: 50, + recommendations: ['正常业务流程', '定期跟踪', '建立信用档案'] + }, + 'C': { + level: '中低风险', + description: '收入稳定,还款能力良好,信用风险较低', + score: 65, + recommendations: ['可正常合作', '适度提升额度', '优化服务'] + }, + 'D': { + level: '低风险', + description: '收入较高,还款能力强,信用风险低', + score: 75, + recommendations: ['优质客户', '提升服务等级', '拓展业务'] + }, + 'E': { + level: '很低风险', + description: '收入良好,还款能力很强,信用风险很低', + score: 85, + recommendations: ['重点客户', '专享服务', '深度合作'] + }, + 'F': { + level: '极低风险', + description: '高收入群体,还款能力优秀,信用风险极低', + score: 90, + recommendations: ['VIP客户', '定制服务', '战略合作'] + }, + 'G': { + level: '极低风险', + description: '高收入群体,还款能力卓越,信用风险极低', + score: 92, + recommendations: ['顶级客户', '私人定制', '长期合作'] + }, + 'H': { + level: '无风险', + description: '高端收入群体,还款能力顶级,几乎无信用风险', + score: 95, + recommendations: ['钻石客户', '专属服务', '全面合作'] + }, + 'I': { + level: '无风险', + description: '精英收入群体,还款能力完美,无信用风险', + score: 97, + recommendations: ['白金客户', '尊享服务', '全方位合作'] + }, + 'J': { + level: '零风险', + description: '顶级收入群体,还款能力无限,零信用风险', + score: 99, + recommendations: ['至尊客户', '顶级服务', '战略伙伴'] + } + } + + return riskAssessments[level] || { + level: '未知风险', + description: '数据异常,无法进行风险评估', + score: 0, + recommendations: ['数据核实', '人工审核', '谨慎处理'] + } +} + +/** + * 获取消费能力分析 + * @param {string} level - 收入等级 + * @returns {object} 消费能力分析 + */ +export const getConsumptionCapacity = (level) => { + const capacityAnalysis = { + '-': { + level: '无法评估', + description: '缺乏收入数据,无法评估消费能力', + categories: [] + }, + 'A': { + level: '基础消费', + description: '主要满足基本生活需求,消费能力有限', + categories: ['基本生活用品', '必需品消费', '低价商品'] + }, + 'B': { + level: '一般消费', + description: '能够满足日常消费需求,偶有小额娱乐支出', + categories: ['日常用品', '基础娱乐', '小额投资'] + }, + 'C': { + level: '中等消费', + description: '具备良好的消费能力,可进行中档消费', + categories: ['品质商品', '休闲娱乐', '教育投资', '小额理财'] + }, + 'D': { + level: '较强消费', + description: '消费能力较强,可进行中高档消费', + categories: ['中高档商品', '旅游度假', '技能培训', '理财投资'] + }, + 'E': { + level: '强劲消费', + description: '消费能力强劲,可进行高档消费和投资', + categories: ['高档商品', '奢侈品', '高端服务', '投资理财'] + }, + 'F': { + level: '很强消费', + description: '消费能力很强,可进行奢侈消费和多元投资', + categories: ['奢侈品', '高端服务', '房产投资', '金融产品'] + }, + 'G': { + level: '强大消费', + description: '消费能力强大,属于高端消费群体', + categories: ['顶级奢侈品', '私人定制', '房产投资', '股权投资'] + }, + 'H': { + level: '顶级消费', + description: '消费能力顶级,属于超高端消费群体', + categories: ['超级奢侈品', '私人飞机', '豪华房产', '私募基金'] + }, + 'I': { + level: '超强消费', + description: '消费能力超强,属于精英消费群体', + categories: ['收藏品', '艺术品', '豪华游艇', '对冲基金'] + }, + 'J': { + level: '无限消费', + description: '消费潜力无限,属于顶级财富群体', + categories: ['任何商品', '私人岛屿', '慈善事业', '风险投资'] + } + } + + return capacityAnalysis[level] || { + level: '未知', + description: '数据异常,无法分析消费能力', + categories: [] + } +} + +/** + * 生成收入评估报告 + * @param {string} level - 收入等级 + * @returns {object} 完整的评估报告 + */ +export const generateIncomeAssessmentReport = (level) => { + const levelInfo = getIncomeLevelInfo(level) + const riskAssessment = getCreditRiskAssessment(level) + const consumptionCapacity = getConsumptionCapacity(level) + const marketComparison = getMarketComparison(level) + const percentile = getIncomePercentile(level) + + return { + level, + levelInfo, + riskAssessment, + consumptionCapacity, + marketComparison, + percentile, + timestamp: new Date().toISOString(), + summary: { + grade: levelInfo.name, + range: levelInfo.range, + riskLevel: riskAssessment.level, + riskScore: riskAssessment.score, + marketPosition: `超过${percentile}%的收入水平`, + recommendations: riskAssessment.recommendations + } + } +} diff --git a/src/ui/JRZQ3C9R/components/BasicInfoSection.vue b/src/ui/JRZQ3C9R/components/BasicInfoSection.vue new file mode 100644 index 0000000..887ba86 --- /dev/null +++ b/src/ui/JRZQ3C9R/components/BasicInfoSection.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/src/ui/JRZQ3C9R/components/InsufficientRatioSection.vue b/src/ui/JRZQ3C9R/components/InsufficientRatioSection.vue new file mode 100644 index 0000000..52ea192 --- /dev/null +++ b/src/ui/JRZQ3C9R/components/InsufficientRatioSection.vue @@ -0,0 +1,114 @@ + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/LoanAndOverdueSection.vue b/src/ui/JRZQ3C9R/components/LoanAndOverdueSection.vue new file mode 100644 index 0000000..15c8b7d --- /dev/null +++ b/src/ui/JRZQ3C9R/components/LoanAndOverdueSection.vue @@ -0,0 +1,329 @@ + + + + + diff --git a/src/ui/JRZQ3C9R/components/QueryOverviewSection.vue b/src/ui/JRZQ3C9R/components/QueryOverviewSection.vue new file mode 100644 index 0000000..066797e --- /dev/null +++ b/src/ui/JRZQ3C9R/components/QueryOverviewSection.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/src/ui/JRZQ3C9R/components/QueryTrendSection.vue b/src/ui/JRZQ3C9R/components/QueryTrendSection.vue new file mode 100644 index 0000000..33b5677 --- /dev/null +++ b/src/ui/JRZQ3C9R/components/QueryTrendSection.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/src/ui/JRZQ3C9R/components/RepayFailTrendSection.vue b/src/ui/JRZQ3C9R/components/RepayFailTrendSection.vue new file mode 100644 index 0000000..afde8bb --- /dev/null +++ b/src/ui/JRZQ3C9R/components/RepayFailTrendSection.vue @@ -0,0 +1,111 @@ + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/RepayOrgAndLevelSection.vue b/src/ui/JRZQ3C9R/components/RepayOrgAndLevelSection.vue new file mode 100644 index 0000000..5e5774c --- /dev/null +++ b/src/ui/JRZQ3C9R/components/RepayOrgAndLevelSection.vue @@ -0,0 +1,241 @@ + + + + + diff --git a/src/ui/JRZQ3C9R/components/RepaySuccessTrendSection.vue b/src/ui/JRZQ3C9R/components/RepaySuccessTrendSection.vue new file mode 100644 index 0000000..bb2e355 --- /dev/null +++ b/src/ui/JRZQ3C9R/components/RepaySuccessTrendSection.vue @@ -0,0 +1,111 @@ + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/RepayTrendSection.vue b/src/ui/JRZQ3C9R/components/RepayTrendSection.vue new file mode 100644 index 0000000..2cfc29d --- /dev/null +++ b/src/ui/JRZQ3C9R/components/RepayTrendSection.vue @@ -0,0 +1,124 @@ + + + + + + + diff --git a/src/ui/JRZQ3C9R/components/ScoreSection.vue b/src/ui/JRZQ3C9R/components/ScoreSection.vue new file mode 100644 index 0000000..c15c7cd --- /dev/null +++ b/src/ui/JRZQ3C9R/components/ScoreSection.vue @@ -0,0 +1,78 @@ + + + + + + + diff --git a/src/ui/JRZQ3C9R/index.vue b/src/ui/JRZQ3C9R/index.vue new file mode 100644 index 0000000..5ed41c7 --- /dev/null +++ b/src/ui/JRZQ3C9R/index.vue @@ -0,0 +1,105 @@ + + + + + + + diff --git a/src/ui/JRZQ3C9R/utils/dataParser.js b/src/ui/JRZQ3C9R/utils/dataParser.js new file mode 100644 index 0000000..aed3223 --- /dev/null +++ b/src/ui/JRZQ3C9R/utils/dataParser.js @@ -0,0 +1,430 @@ +/** + * 支付行为指数(JRZQ3C9R)数据解析工具 + */ + +/** + * 将 -1 / 空 / null 统一视为 0,其他数值转为 Number + */ +export function normalizeValue(value) { + if (value === undefined || value === null || value === "" || value === -1) { + return 0; + } + const num = Number(value); + return Number.isNaN(num) ? 0 : num; +} + +/** + * 从原始 data 中提取真正的指标对象 + * 兼容多种包裹结构: + * - { code, data: {...} } + * - { data: { code, data: {...} } } + */ +export function extractPpcmData(raw) { + if (!raw) return {}; + + // example.json 结构:data.data.data + if (raw.data && raw.data.data) { + return raw.data.data || {}; + } + + // 已经是 { code, data } 这一层 + if (raw.data && !raw.code) { + return raw.data || {}; + } + + return raw || {}; +} + +/** + * 获取支付行为评分(原始 300-900 分) + */ +export function getBehavScore(ppcm) { + const score = normalizeValue(ppcm.ppcm_behav_score); + return score; +} + +/** + * 将 300-900 分映射到 0-100 分(用于统一风险评分体系) + */ +export function mapScoreTo100(score) { + if (!score || score <= 0) { + return 100; + } + // 限制在 [300,900] + const clamped = Math.min(900, Math.max(300, score)); + // 300 -> 0, 900 -> 100 + const mapped = ((clamped - 300) / 600) * 100; + return Math.round(mapped); +} + +/** + * 支付行为评分等级标签 + */ +export function getBehavLevel(score) { + if (!score || score <= 0) return "暂无评分"; + if (score >= 800) return "优秀"; + if (score >= 750) return "良好"; + if (score >= 700) return "中等"; + if (score >= 650) return "一般"; + return "偏低"; +} + +/** + * 通用时间段 + */ +export const PERIODS = [ + { key: "d7", label: "近7天" }, + { key: "m1", label: "近1个月" }, + { key: "m3", label: "近3个月" }, + { key: "m6", label: "近6个月" }, + { key: "m12", label: "近1年" }, + { key: "m24", label: "近2年" }, +]; + +/** + * 获取查验次数统计(按时间段) + * ppcm_{period}_bank_qynum / _nbank_fin_qynum / _nbank_other_qynum / _qynum + */ +export function getQueryCountsByPeriod(ppcm) { + const result = {}; + + PERIODS.forEach((p) => { + const prefix = `ppcm_${p.key}`; + result[p.key] = { + bank: normalizeValue(ppcm[`${prefix}_bank_qynum`]), + nbankFin: normalizeValue(ppcm[`${prefix}_nbank_fin_qynum`]), + nbankOther: normalizeValue(ppcm[`${prefix}_nbank_other_qynum`]), + total: normalizeValue(ppcm[`${prefix}_qynum`]), + }; + }); + + return result; +} + +/** + * 获取还款成功 / 失败次数统计(按时间段) + * success:ppcm_{period}_succ_repnum + * fail:ppcm_{period}_fail_repnum + */ +export function getRepayCountsByPeriod(ppcm) { + const result = {}; + + PERIODS.forEach((p) => { + const prefix = `ppcm_${p.key}`; + result[p.key] = { + success: normalizeValue(ppcm[`${prefix}_succ_repnum`]), + fail: normalizeValue(ppcm[`${prefix}_fail_repnum`]), + }; + }); + + return result; +} + +/** + * 获取余额不足失败占比(按时间段) + * ppcm_{period}_fail_neh_repnum_ratio + */ +export function getInsufficientRatioByPeriod(ppcm) { + const result = {}; + + PERIODS.forEach((p) => { + const prefix = `ppcm_${p.key}`; + result[p.key] = normalizeValue(ppcm[`${prefix}_fail_neh_repnum_ratio`]); + }); + + return result; +} + +/** + * 解析最近一次查验距今天数区间编码 + * ppcm_latest_qytoday: 1-10 档位 + */ +export function getLatestQueryBucket(ppcm) { + const code = normalizeValue(ppcm.ppcm_latest_qytoday); + if (!code) return "暂无查验记录"; + + const mapping = { + 1: "0-7天", + 2: "7-15天", + 3: "15-30天", + 4: "30-60天", + 5: "60-90天", + 6: "90-120天", + 7: "120-150天", + 8: "150-180天", + 9: "180-360天", + 10: "360天以上", + }; + + return mapping[code] || "未知区间"; +} + +/** + * 生成各 card 的解读文本 + */ + +/** + * 支付行为评分解读(数据解读 + 意思解读) + */ +export function getScoreRemark(score, level) { + if (!score || score <= 0) { + return "暂无支付行为评分数据。\n\n【数据解读】评分基于近两年查验及还款行为综合评估,分数越高代表支付行为越稳定、违约风险越低。\n\n【意思解读】支付行为评分是机构评估您还款能力和信用状况的重要指标。评分越高,说明您的还款履约记录越好,机构对您的信任度越高,未来申请贷款或信用卡时更容易获得批准和更优惠的利率。"; + } + + let dataRemark = `【数据解读】您的支付行为评分为 ${score} 分,等级为"${level}"。`; + let meaningRemark = ""; + + if (score >= 800) { + dataRemark += "您的支付行为表现优秀,还款履约能力强,违约风险极低。"; + meaningRemark = "【意思解读】优秀评分表明您有非常稳定的还款记录和良好的资金管理能力。这意味着机构认为您是低风险客户,在申请贷款、信用卡等金融产品时更容易获得批准,且可能享受更优惠的利率和更高的额度。继续保持这种良好的支付习惯,有助于维护和提升您的信用价值。"; + } else if (score >= 750) { + dataRemark += "您的支付行为表现良好,还款履约能力较强,违约风险较低。"; + meaningRemark = "【意思解读】良好评分说明您的还款记录稳定,机构对您的信任度较高。这有助于您在申请金融产品时获得较好的审批结果。建议继续保持良好的支付习惯,避免逾期,可以进一步提升评分等级。"; + } else if (score >= 700) { + dataRemark += "您的支付行为表现中等,还款履约能力一般,违约风险适中。"; + meaningRemark = "【意思解读】中等评分表示您的还款记录存在一定波动,机构可能会对您的申请进行更严格的审核。建议注意按时还款,减少还款失败的情况,提高支付稳定性,这将有助于提升您的评分和信用价值。"; + } else if (score >= 650) { + dataRemark += "您的支付行为表现一般,还款履约能力有待提升,违约风险偏高。"; + meaningRemark = "【意思解读】一般评分表明您的还款记录不够稳定,可能存在逾期或还款失败的情况。这会导致机构对您的信任度降低,在申请金融产品时可能面临更严格的审核或被拒绝。建议加强还款管理,提前准备还款资金,避免逾期,逐步改善支付行为。"; + } else { + dataRemark += "您的支付行为表现偏低,还款履约能力较弱,违约风险较高。"; + meaningRemark = "【意思解读】偏低评分表明您的还款记录存在较多问题,如频繁逾期、还款失败等。这会导致机构认为您的违约风险较高,在申请贷款、信用卡等金融产品时很可能被拒绝,即使获批也可能面临更高的利率和更低的额度。建议重点关注还款情况,及时处理逾期问题,制定还款计划,逐步改善支付行为,提升信用评分。"; + } + + return `${dataRemark}\n\n${meaningRemark}`; +} + +/** + * 查验次数时间分布解读(数据解读 + 意思解读) + */ +export function getQueryTrendRemark(ppcm) { + const counts = getQueryCountsByPeriod(ppcm); + const m12Total = counts.m12?.total || 0; + const m3Total = counts.m3?.total || 0; + const bankTotal = counts.m12?.bank || 0; + const finTotal = counts.m12?.nbankFin || 0; + const otherTotal = counts.m12?.nbankOther || 0; + + let dataRemark = `【数据解读】近一年查验总次数:${m12Total}次,其中银行查验${bankTotal}次,消费金融查验${finTotal}次,其他机构查验${otherTotal}次。近3个月查验次数:${m3Total}次。`; + let meaningRemark = ""; + + if (m12Total === 0) { + dataRemark += "暂无查验记录。"; + meaningRemark = "【意思解读】无查验记录可能表示近期无相关机构查询您的支付行为数据,或者您近期没有申请相关金融产品。这通常意味着您的信用活动较少,但也可能表示您的信用记录不够活跃。"; + } else if (m12Total <= 5) { + dataRemark += "查验次数较少。"; + meaningRemark = "【意思解读】查验次数较少说明机构对您的支付行为关注度较低,整体风险可控。这可能是因为您的还款记录良好,机构认为风险较低,或者您的信用活动较少。较低的查验频率通常对信用评分影响较小。"; + } else if (m12Total <= 15) { + dataRemark += "查验次数适中。"; + meaningRemark = "【意思解读】查验次数适中说明机构对您的支付行为保持正常关注。这通常发生在您有正常的金融活动时,如申请贷款、信用卡等。适度的查验是正常的信用评估过程,不会对您的信用产生负面影响。"; + } else { + dataRemark += "查验次数较多。"; + meaningRemark = "【意思解读】查验次数较多可能表示机构对您的支付行为关注度较高,这可能是因为您近期有较多的金融申请活动,或者机构需要更频繁地评估您的信用状况。频繁的查验虽然不会直接降低您的信用评分,但可能反映出机构对您的风险关注。建议关注自身还款情况,保持良好的支付记录,减少不必要的金融申请。"; + } + + return `${dataRemark}\n\n${meaningRemark}`; +} + +/** + * 查验行为概览解读(数据解读 + 意思解读) + */ +export function getQueryOverviewRemark(ppcm) { + const m12Count = normalizeValue(ppcm.ppcm_m12_qynum); + const m12Org = normalizeValue(ppcm.ppcm_m12_qyorg); + const m12Day = normalizeValue(ppcm.ppcm_m12_qyday); + + let dataRemark = `【数据解读】近一年查验行为概览:查验次数${m12Count}次,涉及机构${m12Org}家,查验天数${m12Day}天。`; + let meaningRemark = ""; + + if (m12Count === 0) { + dataRemark += "暂无查验记录。"; + meaningRemark = "【意思解读】无查验记录表示近期没有机构查询您的支付行为数据。这可能意味着您的信用活动较少,或者没有申请相关金融产品。虽然不会对信用产生负面影响,但信用记录的活跃度也是评估因素之一。"; + } else { + const avgPerDay = m12Day > 0 ? (m12Count / m12Day).toFixed(2) : 0; + dataRemark += `平均每天查验${avgPerDay}次。`; + + if (m12Org > 0 && m12Count / m12Org > 3) { + dataRemark += "单机构查验频率较高。"; + meaningRemark = "【意思解读】单机构查验频率较高可能表示该机构对您的信用状况需要更频繁的评估,这可能是因为您与该机构有业务往来,或者该机构在评估您的申请。较高的查验频率通常不会直接影响信用评分,但可能反映出机构对您的关注度。建议关注相关机构的关注原因,保持良好的还款记录。"; + } else { + meaningRemark = "【意思解读】查验次数、机构数和天数的组合反映了机构对您信用状况的关注程度。适度的查验是正常的信用评估过程,说明您有正常的金融活动。保持稳定的还款记录,有助于维持良好的信用形象。"; + } + } + + return `${dataRemark}\n\n${meaningRemark}`; +} + +/** + * 还款成功次数趋势解读(数据解读 + 意思解读) + */ +export function getRepaySuccessRemark(ppcm) { + const counts = getRepayCountsByPeriod(ppcm); + const m12Success = counts.m12?.success || 0; + const m3Success = counts.m3?.success || 0; + + let dataRemark = `【数据解读】近一年还款成功次数:${m12Success}次,近3个月还款成功次数:${m3Success}次。`; + let meaningRemark = ""; + + if (m12Success === 0) { + dataRemark += "暂无还款成功记录。"; + meaningRemark = "【意思解读】无还款成功记录可能表示您近期没有需要还款的金融产品,或者还款数据尚未更新。如果确实有还款义务,建议确认还款是否成功,避免因还款失败影响信用记录。"; + } else if (m12Success >= 20) { + dataRemark += "还款成功次数较多。"; + meaningRemark = "【意思解读】还款成功次数较多说明您的还款履约能力较强,支付行为稳定。这表明您有良好的资金管理能力和还款习惯,机构会认为您是可靠的客户。这种稳定的还款记录有助于提升您的信用评分,在申请新的金融产品时更容易获得批准和更优惠的条件。"; + } else if (m12Success >= 10) { + dataRemark += "还款成功次数适中。"; + meaningRemark = "【意思解读】还款成功次数适中说明您的还款履约能力良好。这表明您能够按时完成还款义务,机构对您的信任度较高。继续保持这种良好的还款习惯,有助于维持和提升您的信用价值。"; + } else { + dataRemark += "还款成功次数较少。"; + meaningRemark = "【意思解读】还款成功次数较少可能表示您的还款活动不够频繁,或者存在还款失败的情况。如果确实有还款义务,建议关注还款情况,确保按时还款。稳定的还款记录是建立良好信用的基础,频繁的还款成功有助于提升您的信用评分。"; + } + + return `${dataRemark}\n\n${meaningRemark}`; +} + +/** + * 还款失败次数趋势解读(数据解读 + 意思解读) + */ +export function getRepayFailRemark(ppcm) { + const counts = getRepayCountsByPeriod(ppcm); + const m12Fail = counts.m12?.fail || 0; + const m3Fail = counts.m3?.fail || 0; + + let dataRemark = `【数据解读】近一年还款失败次数:${m12Fail}次,近3个月还款失败次数:${m3Fail}次。`; + let meaningRemark = ""; + + if (m12Fail === 0) { + dataRemark += "无还款失败记录。"; + meaningRemark = "【意思解读】无还款失败记录说明您的还款履约能力优秀,支付行为稳定。这表明您有良好的资金管理能力和还款习惯,所有还款都能按时成功完成。这种完美的还款记录会显著提升您的信用评分,机构会认为您是低风险客户,在申请金融产品时更容易获得批准和更优惠的条件。"; + } else if (m12Fail <= 2) { + dataRemark += "还款失败次数较少。"; + meaningRemark = "【意思解读】还款失败次数较少说明整体还款履约能力良好。偶尔的还款失败可能是由于临时资金紧张或技术原因,但如果频繁发生,可能会影响机构对您的信任度。建议继续保持良好的还款习惯,提前准备还款资金,避免因余额不足等原因导致还款失败。"; + } else if (m12Fail <= 5) { + dataRemark += "还款失败次数适中。"; + meaningRemark = "【意思解读】还款失败次数适中可能表示您的资金管理存在一定问题,或者还款计划不够合理。频繁的还款失败会导致机构对您的还款能力产生怀疑,可能影响您的信用评分和未来申请金融产品的审批结果。建议关注还款情况,制定合理的还款计划,确保账户有足够资金,避免频繁失败。"; + } else { + dataRemark += "还款失败次数较多。"; + meaningRemark = "【意思解读】还款失败次数较多表明您的还款履约能力存在问题,可能是资金管理不当、还款计划不合理或账户余额不足等原因。这会导致机构认为您的违约风险较高,严重影响您的信用评分。在申请新的金融产品时很可能被拒绝,即使获批也可能面临更高的利率和更严格的限制。建议重点关注还款管理,及时处理还款问题,制定还款计划,确保账户有足够资金,逐步改善还款行为,避免影响信用记录。"; + } + + return `${dataRemark}\n\n${meaningRemark}`; +} + +/** + * 余额不足导致还款失败占比解读(数据解读 + 意思解读) + */ +export function getInsufficientRatioRemark(ppcm) { + const ratios = getInsufficientRatioByPeriod(ppcm); + const m12Ratio = ratios.m12 || 0; + const m3Ratio = ratios.m3 || 0; + + const m12Percent = (m12Ratio * 100).toFixed(2); + const m3Percent = (m3Ratio * 100).toFixed(2); + + let dataRemark = `【数据解读】近一年余额不足导致还款失败占比:${m12Percent}%,近3个月占比:${m3Percent}%。`; + let meaningRemark = ""; + + if (m12Ratio === 0) { + dataRemark += "无余额不足导致的还款失败。"; + meaningRemark = "【意思解读】无余额不足导致的还款失败说明您的账户资金管理良好,能够确保还款时有足够的资金。这表明您有良好的资金规划能力,能够提前准备还款资金。这种良好的资金管理习惯有助于维持稳定的还款记录,提升机构对您的信任度。"; + } else if (m12Ratio <= 0.1) { + dataRemark += "余额不足占比很低。"; + meaningRemark = "【意思解读】余额不足占比很低说明整体资金管理良好,偶尔的余额不足可能是由于临时资金周转问题。虽然占比很低,但仍需注意,因为即使是偶尔的余额不足也可能导致还款失败,影响信用记录。建议继续保持良好的资金管理习惯,提前准备还款资金。"; + } else if (m12Ratio <= 0.3) { + dataRemark += "余额不足占比适中。"; + meaningRemark = "【意思解读】余额不足占比适中表明您的资金管理存在一定问题,可能没有提前准备足够的还款资金。这会导致部分还款因余额不足而失败,影响您的还款履约记录。机构可能会认为您的资金管理能力不足,影响信用评分。建议关注账户余额,制定资金规划,确保还款时有足够资金,避免因余额不足导致还款失败。"; + } else { + dataRemark += "余额不足占比较高。"; + meaningRemark = "【意思解读】余额不足占比较高表明您的资金管理存在严重问题,经常没有足够的资金用于还款。这会导致频繁的还款失败,严重影响您的还款履约记录和信用评分。机构会认为您的资金管理能力不足,违约风险较高,在申请新的金融产品时很可能被拒绝。建议加强资金管理,制定详细的资金规划,提前准备还款资金,建立还款提醒机制,避免因余额不足导致还款失败,逐步改善资金管理习惯。"; + } + + return `${dataRemark}\n\n${meaningRemark}`; +} + +/** + * 还款机构数与等级解读(数据解读 + 意思解读) + */ +export function getRepayOrgAndLevelRemark(ppcm) { + const m12SuccOrg = normalizeValue(ppcm.ppcm_m12_succ_reporg); + const m12FailOrg = normalizeValue(ppcm.ppcm_m12_fail_reporg); + const m12SuccLevel = normalizeValue(ppcm.ppcm_m12_succ_repamt); + const m12FailLevel = normalizeValue(ppcm.ppcm_m12_fail_repamt); + + let dataRemark = `【数据解读】近一年还款成功机构数:${m12SuccOrg}家,还款失败机构数:${m12FailOrg}家。还款成功等级:${m12SuccLevel},还款失败等级:${m12FailLevel}。`; + let meaningRemark = ""; + + if (m12SuccOrg > 0 && m12FailOrg === 0) { + dataRemark += "所有机构还款均成功。"; + meaningRemark = "【意思解读】所有机构还款均成功说明您的还款履约能力优秀,能够与多家机构保持良好的还款关系。这表明您有稳定的资金流和良好的还款习惯,机构对您的信任度很高。这种完美的还款记录会显著提升您的信用评分,在申请新的金融产品时更容易获得批准和更优惠的条件。"; + } else if (m12SuccOrg > m12FailOrg) { + dataRemark += "还款成功机构数多于失败机构数。"; + meaningRemark = "【意思解读】还款成功机构数多于失败机构数说明整体还款履约能力良好,虽然存在部分机构的还款失败,但大部分机构都能成功还款。这表明您有基本的还款能力,但资金管理可能存在一定问题。建议关注失败原因,及时处理还款问题,确保所有机构都能成功还款,进一步提升信用价值。"; + } else if (m12FailOrg > 0) { + dataRemark += "存在还款失败机构。"; + meaningRemark = "【意思解读】存在还款失败机构表明您的还款履约能力存在问题,可能无法与所有机构保持良好的还款关系。这会导致相关机构对您的信任度降低,可能影响您与该机构的业务往来,甚至影响您的整体信用评分。建议关注失败原因,及时处理还款问题,制定还款计划,确保所有机构都能成功还款,维护良好的信用关系。"; + } else { + meaningRemark = "【意思解读】还款机构数和等级反映了您与不同机构的还款关系。成功机构数越多、失败机构数越少,说明您的还款履约能力越强,机构对您的信任度越高。保持良好的还款记录有助于维护和提升您的信用价值。"; + } + + return `${dataRemark}\n\n${meaningRemark}`; +} + +/** + * 借款与逾期概览解读(数据解读 + 意思解读) + */ +export function getLoanAndOverdueRemark(ppcm) { + const m12Loan = normalizeValue(ppcm.ppcm_m12_loannum); + const m12LoanOrg = normalizeValue(ppcm.ppcm_m12_loanorg); + const m12LoanAmt = normalizeValue(ppcm.ppcm_m12_loanamt); + const m12OverNum = normalizeValue(ppcm.ppcm_m12_overnum); + const m12OverOrg = normalizeValue(ppcm.ppcm_m12_overorg); + const m12OverAmt = normalizeValue(ppcm.ppcm_m12_overamt); + + let dataRemark = `【数据解读】近一年借款情况:借款次数${m12Loan}次,涉及机构${m12LoanOrg}家,借款等级${m12LoanAmt}。逾期情况:逾期次数${m12OverNum}次,逾期机构数${m12OverOrg}家,逾期等级${m12OverAmt}。`; + let meaningRemark = ""; + + if (m12OverNum === 0) { + dataRemark += "无逾期记录。"; + meaningRemark = "【意思解读】无逾期记录说明您的还款履约能力优秀,能够按时完成所有还款义务。这表明您有良好的资金管理能力和还款习惯,机构会认为您是低风险客户。这种完美的还款记录会显著提升您的信用评分,在申请新的金融产品时更容易获得批准和更优惠的条件。借款等级反映了您的借款规模,适度的借款有助于建立信用记录,但过度借款可能增加还款压力。"; + } else if (m12OverNum <= 2) { + dataRemark += "逾期次数较少。"; + meaningRemark = "【意思解读】逾期次数较少说明整体还款履约能力良好,虽然存在偶尔的逾期,但大部分还款都能按时完成。偶尔的逾期可能是由于临时资金紧张或忘记还款,但如果频繁发生,可能会影响机构对您的信任度。建议继续保持良好的还款习惯,建立还款提醒机制,避免逾期,进一步提升信用价值。"; + } else { + dataRemark += "逾期次数较多。"; + meaningRemark = "【意思解读】逾期次数较多表明您的还款履约能力存在问题,可能无法按时完成还款义务。这会导致机构认为您的违约风险较高,严重影响您的信用评分。在申请新的金融产品时很可能被拒绝,即使获批也可能面临更高的利率和更严格的限制。逾期记录会在信用报告中保留较长时间,影响您的长期信用价值。建议重点关注还款管理,制定还款计划,提前准备还款资金,及时处理逾期问题,避免影响信用记录。"; + } + + return `${dataRemark}\n\n${meaningRemark}`; +} + +/** + * 基础信息与查贷比解读(数据解读 + 意思解读) + */ +export function getBasicInfoRemark(ppcm) { + const flag = normalizeValue(ppcm.flag); + const flagDb = normalizeValue(ppcm.flagdb); + const m12Ratio = normalizeValue(ppcm.ppcm_m12_qy_rep_ratio); + + const flagText = flag === 1 ? "查得" : "查无"; + const flagDbText = flagDb === 1 ? "库有" : "库无"; + const ratioText = m12Ratio > 0 ? m12Ratio.toFixed(2) : "0"; + + let dataRemark = `【数据解读】基础信息:查得标识为"${flagText}",库有标识为"${flagDbText}"。近一年查贷比(查验次数/借款次数):${ratioText}。`; + let meaningRemark = ""; + + if (m12Ratio === 0) { + dataRemark += "查贷比为0。"; + meaningRemark = "【意思解读】查贷比为0表示无查验或借款记录,可能表示您近期没有相关的金融活动。查得标识和库有标识反映了您的信用记录在系统中的存在情况。如果标识为\"查无\"或\"库无\",可能表示您的信用记录不够完整或活跃,建议适当使用金融产品以建立信用记录。"; + } else if (m12Ratio <= 1) { + dataRemark += "查贷比较低。"; + meaningRemark = "【意思解读】查贷比较低说明查验次数少于或等于借款次数,这表明机构对您的关注度相对较低,整体风险可控。较低的查贷比通常意味着您的借款活动正常,机构不需要频繁查验就能评估您的信用状况。这通常是一个积极的信号,表明您的信用记录稳定,机构对您的信任度较高。"; + } else if (m12Ratio <= 3) { + dataRemark += "查贷比适中。"; + meaningRemark = "【意思解读】查贷比适中说明查验与借款比例正常,这是正常的信用评估过程。适度的查验是机构评估您信用状况的正常手段,通常发生在您申请金融产品时。这种比例表明您的信用活动正常,机构对您的关注度在合理范围内。"; + } else { + dataRemark += "查贷比较高。"; + meaningRemark = "【意思解读】查贷比较高说明查验次数明显多于借款次数,可能表示机构对您的关注度较高。这可能是因为您近期有较多的金融申请活动,或者机构需要更频繁地评估您的信用状况。虽然频繁的查验不会直接降低您的信用评分,但可能反映出机构对您的风险关注。建议关注自身信用状况,保持良好的还款记录,减少不必要的金融申请,避免过度查询影响信用形象。"; + } + + return `${dataRemark}\n\n${meaningRemark}`; +} diff --git a/src/ui/JRZQ4B6C/README.md b/src/ui/JRZQ4B6C/README.md new file mode 100644 index 0000000..383e825 --- /dev/null +++ b/src/ui/JRZQ4B6C/README.md @@ -0,0 +1,129 @@ +# 信贷表现组件 (JRZQ4B6C) + +## 组件概述 + +信贷表现主要为企业在背景调查过程中探查用户近期信贷表现时提供参考,帮助企业对其内部员工、外部业务进行个人信用过滤。 + +## 组件结构 + +``` +JRZQ4B6C/ +├── index.vue # 主组件 +├── components/ # 子组件目录 +│ ├── ProbeOverview.vue # 信贷表现概览组件 +│ ├── OverdueInfoSection.vue # 逾期信息组件 +│ ├── PerformanceInfoSection.vue # 履约信息组件 +│ └── InstitutionStatusSection.vue # 机构状态组件 +├── utils/ # 工具函数目录 +│ └── probeUtils.js # 信贷表现工具函数 +└── README.md # 说明文档 +``` + +## 使用方法 + +### 基本用法 + +```vue + + + +``` + +## 数据字段说明 + +| 字段名 | 类型 | 必填 | 描述 | 示例值 | +|-------|------|------|------|--------| +| result_code | String | 否 | 探查结果编码 | "1" | +| max_overdue_amt | String | 否 | 最大逾期金额 | "1000-2000" | +| max_overdue_days | String | 否 | 最长逾期天数 | "1-15" | +| latest_overdue_time | String | 否 | 最近逾期时间 | "2018-10" | +| max_performance_amt | String | 否 | 最大履约金额 | "1000-2000" | +| latest_performance_time | String | 否 | 最近履约时间 | "2018-10" | +| count_performance | String | 否 | 履约笔数 | "1" | +| currently_overdue | String | 否 | 当前逾期机构数 | "1" | +| currently_performance | String | 否 | 当前履约机构数 | "29" | +| acc_exc | String | 否 | 异常还款机构数 | "0" | +| acc_sleep | String | 否 | 睡眠机构数 | "39" | + +## 结果编码说明 + +| 编码 | 显示内容 | 探查明细说明 | 风险等级 | +|------|----------|-------------|----------| +| 1 | 用户最近一笔订单未结清 | 用户最近一笔订单未结清 | 高风险 | +| 2 | 用户订单结清情况良好 | 多笔订单用户最近一笔订单已结清且历史所有订单均已结清,或单笔订单用户该订单发生时间在3个月之内且该订单结清 | 低风险 | +| 3 | 用户最近订单已结清,历史存在未结清订单 | 用户最近一笔订单已结清,但历史存在未结清订单 | 中等风险 | +| 4 | 用户数据不充分 | 数据不充分 | 未知风险 | + +### 详细说明 + +**编码1**:通过模型计算展现该用户行为画像,用户最近一笔订单未结清 +**编码2**:通过模型计算展现该用户行为画像,用户订单结清情况良好 +**编码3**:通过模型计算展现该用户行为画像,用户最近订单已结清但历史存在未结清订单 +**编码4**:用户数据不充分无法展现该用户行为画像 + +## 金额区间说明 + +组件支持以下金额区间格式: +- 区间格式:`"1000-2000"`、`"(1000~2000]"` +- 大于格式:`">1000000"` +- 零值:`"0"` 表示无记录 + +## 组件特性 + +1. **响应式设计**:适配移动端和桌面端 +2. **数据格式化**:自动格式化金额、时间等数据 +3. **风险评估**:基于数据自动生成风险等级和建议 +4. **视觉反馈**:使用颜色区分不同风险等级 +5. **空数据处理**:优雅处理缺失或无效数据 + +## 工具函数 + +### probeUtils.js + +提供了以下工具函数: + +- `getResultCodeInfo(code)` - 获取结果编码信息 +- `formatAmountRange(amount)` - 格式化金额区间 +- `formatDaysRange(days)` - 格式化天数区间 +- `formatTime(time)` - 格式化时间 +- `generateRiskSummary(data)` - 生成风险评估总结 + +## 样式定制 + +组件使用 Tailwind CSS 构建,可以通过以下方式定制样式: + +1. 修改组件内的 CSS 类名 +2. 使用 CSS 变量覆盖默认样式 +3. 通过 props 传入自定义样式类名 + +## 注意事项 + +1. 确保传入的数据格式正确 +2. 所有字段都是可选的,组件会优雅处理缺失数据 +3. 时间格式建议使用 YYYY-MM 格式 +4. 金额和天数支持多种区间格式 + +## 更新日志 + +- v1.0.0 - 初始版本,支持信贷表现基本功能展示 diff --git a/src/ui/JRZQ4B6C/components/InstitutionStatusSection.vue b/src/ui/JRZQ4B6C/components/InstitutionStatusSection.vue new file mode 100644 index 0000000..e1367ec --- /dev/null +++ b/src/ui/JRZQ4B6C/components/InstitutionStatusSection.vue @@ -0,0 +1,164 @@ + + + diff --git a/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue b/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue new file mode 100644 index 0000000..655c5d4 --- /dev/null +++ b/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/src/ui/JRZQ4B6C/components/PerformanceInfoSection.vue b/src/ui/JRZQ4B6C/components/PerformanceInfoSection.vue new file mode 100644 index 0000000..8a04afa --- /dev/null +++ b/src/ui/JRZQ4B6C/components/PerformanceInfoSection.vue @@ -0,0 +1,158 @@ + + + diff --git a/src/ui/JRZQ4B6C/components/ProbeOverview.vue b/src/ui/JRZQ4B6C/components/ProbeOverview.vue new file mode 100644 index 0000000..5818b41 --- /dev/null +++ b/src/ui/JRZQ4B6C/components/ProbeOverview.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/ui/JRZQ4B6C/components/Remark.vue b/src/ui/JRZQ4B6C/components/Remark.vue new file mode 100644 index 0000000..7751664 --- /dev/null +++ b/src/ui/JRZQ4B6C/components/Remark.vue @@ -0,0 +1,83 @@ + + + + + \ No newline at end of file diff --git a/src/ui/JRZQ4B6C/index.vue b/src/ui/JRZQ4B6C/index.vue new file mode 100644 index 0000000..6e6aaa6 --- /dev/null +++ b/src/ui/JRZQ4B6C/index.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/ui/JRZQ4B6C/utils/probeUtils.js b/src/ui/JRZQ4B6C/utils/probeUtils.js new file mode 100644 index 0000000..56d02af --- /dev/null +++ b/src/ui/JRZQ4B6C/utils/probeUtils.js @@ -0,0 +1,288 @@ +/** + * 信贷表现工具函数 + */ + +/** + * 结果编码映射 + */ +export const RESULT_CODE_MAP = { + '1': { + text: '用户最近一笔订单未结清', + description: '通过模型计算展现该用户行为画像,用户最近一笔订单未结清,建议谨慎评估其信用状况和还款能力。', + detail: '用户最近一笔订单未结清', + color: 'text-red-500', + level: 'high' + }, + '2': { + text: '用户订单结清情况良好', + description: '通过模型计算展现该用户行为画像,多笔订单用户最近一笔订单已结清且历史所有订单均已结清,或单笔订单用户该订单发生时间在3个月之内且该订单结清,信贷表现良好。', + detail: '多笔订单用户最近一笔订单已结清且历史所有订单均已结清,或单笔订单用户该订单发生时间在3个月之内且该订单结清', + color: 'text-green-500', + level: 'low' + }, + '3': { + text: '用户最近订单已结清,历史存在未结清订单', + description: '通过模型计算展现该用户行为画像,用户最近一笔订单已结清,但历史存在未结清订单,建议关注其历史还款记录。', + detail: '用户最近一笔订单已结清,但历史存在未结清订单', + color: 'text-yellow-500', + level: 'medium' + }, + '4': { + text: '用户数据不充分', + description: '用户数据不充分无法展现该用户行为画像。建议通过其他征信渠道补充信息进行综合评估。', + detail: '数据不充分', + color: 'text-gray-500', + level: 'unknown' + } +} + +/** + * 金额区间映射(根据文档提供的区间) + */ +export const AMOUNT_RANGES = [ + '(1~1000]', + '(1000~2000]', + '(2000~3000]', + '(3000~4000]', + '(4000~6000]', + '(6000~8000]', + '(8000~10000]', + '(10000~20000]', + '(20000~40000]', + '(40000~60000]', + '(60000~80000]', + '(80000~100000]', + '(100000~150000]', + '(150000~200000]', + '(200000~250000]', + '(250000~300000]', + '(300000~350000]', + '(350000~400000]', + '(400000~450000]', + '(450000~500000]', + '(500000~550000]', + '(550000~600000]', + '(600000~650000]', + '(650000~700000]', + '(700000~750000]', + '(750000~800000]', + '(800000~850000]', + '(850000~900000]', + '(900000~950000]', + '(950000~1000000]', + '>1000000' +] + +/** + * 获取结果编码信息 + * @param {string} code - 结果编码 + * @returns {object} 结果编码信息 + */ +export const getResultCodeInfo = (code) => { + return RESULT_CODE_MAP[code] || { + text: '未知状态', + description: '信贷表现主要为企业在背景调查过程中探查用户近期信贷表现时提供参考,帮助企业对其内部员工、外部业务进行个人信用过滤。', + color: 'text-gray-500', + level: 'unknown' + } +} + +/** + * 格式化金额区间 + * @param {string} amount - 金额区间字符串 + * @returns {string} 格式化后的金额区间 + */ +export const formatAmountRange = (amount) => { + if (!amount || amount === '0') { + return '无记录' + } + + // 处理标准区间格式,如 "1000-2000" + if (amount.includes('-')) { + const [min, max] = amount.split('-') + return `${formatNumber(min)}元 - ${formatNumber(max)}元` + } + + // 处理带括号的区间格式,如 "(1000~2000]" + if (amount.includes('~')) { + const cleanAmount = amount.replace(/[()[\]]/g, '') + const [min, max] = cleanAmount.split('~') + return `${formatNumber(min)}元 - ${formatNumber(max)}元` + } + + // 处理大于某个值的格式,如 ">1000000" + if (amount.startsWith('>')) { + const value = amount.substring(1) + return `大于 ${formatNumber(value)}元` + } + + // 其他格式直接返回 + return amount +} + +/** + * 格式化天数区间 + * @param {string} days - 天数区间字符串 + * @returns {string} 格式化后的天数区间 + */ +export const formatDaysRange = (days) => { + if (!days || days === '0') { + return '无记录' + } + + // 处理区间格式,如 "1-15" + if (days.includes('-')) { + const [min, max] = days.split('-') + return `${min}天 - ${max}天` + } + + // 处理带括号的区间格式,如 "[1~15]" + if (days.includes('~')) { + const cleanDays = days.replace(/[()[\]]/g, '') + const [min, max] = cleanDays.split('~') + return `${min}天 - ${max}天` + } + + return days + '天' +} + +/** + * 格式化时间 + * @param {string} time - 时间字符串 + * @returns {string} 格式化后的时间 + */ +export const formatTime = (time) => { + if (!time) { + return '无记录' + } + + // 处理 YYYY-MM 格式 + if (time.match(/^\d{4}-\d{2}$/)) { + return time.replace('-', '年') + '月' + } + + // 处理 YYYY-MM-DD 格式 + if (time.match(/^\d{4}-\d{2}-\d{2}$/)) { + const [year, month, day] = time.split('-') + return `${year}年${month}月${day}日` + } + + return time +} + +/** + * 格式化数字,添加千分位分隔符 + * @param {string|number} num - 数字 + * @returns {string} 格式化后的数字 + */ +export const formatNumber = (num) => { + if (!num) return '0' + + const number = typeof num === 'string' ? parseFloat(num) : num + + if (isNaN(number)) return num + + return number.toLocaleString('zh-CN') +} + +/** + * 获取风险等级颜色类名 + * @param {string} level - 风险等级 + * @returns {string} CSS类名 + */ +export const getRiskLevelClass = (level) => { + const levelMap = { + 'high': 'text-red-500', + 'medium': 'text-yellow-500', + 'low': 'text-green-500', + 'unknown': 'text-gray-500' + } + + return levelMap[level] || 'text-gray-500' +} + +/** + * 获取风险等级背景色类名 + * @param {string} level - 风险等级 + * @returns {string} CSS类名 + */ +export const getRiskLevelBgClass = (level) => { + const levelMap = { + 'high': 'bg-red-50 border-red-200', + 'medium': 'bg-yellow-50 border-yellow-200', + 'low': 'bg-green-50 border-green-200', + 'unknown': 'bg-gray-50 border-gray-200' + } + + return levelMap[level] || 'bg-gray-50 border-gray-200' +} + +/** + * 生成信贷表现总结 + * @param {object} data - 信贷表现数据 + * @returns {object} 风险评估总结 + */ +export const generateRiskSummary = (data) => { + if (!data) { + return { + level: 'unknown', + text: '无法获取数据进行风险评估', + recommendations: ['建议通过其他渠道获取更多信息'] + } + } + + const resultCode = data.result_code + const codeInfo = getResultCodeInfo(resultCode) + + const currentlyOverdue = parseInt(data.currently_overdue) || 0 + const accExc = parseInt(data.acc_exc) || 0 + const accSleep = parseInt(data.acc_sleep) || 0 + + let riskLevel = codeInfo.level + let recommendations = [] + + // 基于结果编码的建议 + switch (resultCode) { + case '1': // 用户最近一笔订单未结清 + recommendations.push('用户最近一笔订单未结清,存在风险') + recommendations.push('建议进一步核实原因和当前还款能力') + recommendations.push('考虑要求提供担保或抵押措施') + break + case '2': // 用户订单结清情况良好 + recommendations.push('用户订单结清情况良好,信贷表现正常') + recommendations.push('可以正常开展业务合作') + recommendations.push('建议定期跟踪信用状况变化') + break + case '3': // 用户最近订单已结清,历史存在未结清订单 + recommendations.push('用户最近订单已结清,但历史存在未结清订单') + recommendations.push('建议关注历史还款记录和还款意愿') + recommendations.push('可考虑适当降低授信额度或增加风控措施') + break + case '4': // 用户数据不充分 + recommendations.push('用户数据不充分,无法完整评估行为画像') + recommendations.push('建议通过其他征信渠道补充信息') + recommendations.push('谨慎开展高风险业务,建议人工审核') + break + } + + // 基于其他指标的额外风险评估 + if (currentlyOverdue > 0) { + riskLevel = 'high' + recommendations.push(`当前有${currentlyOverdue}个机构逾期,风险较高`) + } + + if (accExc > 2) { + if (riskLevel !== 'high') riskLevel = 'medium' + recommendations.push(`存在${accExc}个异常还款机构,需要关注`) + } + + if (accSleep > 10) { + recommendations.push(`有${accSleep}个睡眠机构,信贷活跃度偏低`) + } + + return { + level: riskLevel, + text: codeInfo.description, + recommendations: recommendations + } +} diff --git a/src/ui/JRZQ6F2A/components/ApplicationCountSection.vue b/src/ui/JRZQ6F2A/components/ApplicationCountSection.vue new file mode 100644 index 0000000..ba22bd1 --- /dev/null +++ b/src/ui/JRZQ6F2A/components/ApplicationCountSection.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/components/ApplicationTotalSection.vue b/src/ui/JRZQ6F2A/components/ApplicationTotalSection.vue new file mode 100644 index 0000000..608cf0d --- /dev/null +++ b/src/ui/JRZQ6F2A/components/ApplicationTotalSection.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/components/ApplyRemarkSection.vue b/src/ui/JRZQ6F2A/components/ApplyRemarkSection.vue new file mode 100644 index 0000000..da459e8 --- /dev/null +++ b/src/ui/JRZQ6F2A/components/ApplyRemarkSection.vue @@ -0,0 +1,71 @@ + + + + + + + diff --git a/src/ui/JRZQ6F2A/components/BankInstitutionSection.vue b/src/ui/JRZQ6F2A/components/BankInstitutionSection.vue new file mode 100644 index 0000000..1a1355d --- /dev/null +++ b/src/ui/JRZQ6F2A/components/BankInstitutionSection.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/components/BankOrgSection.vue b/src/ui/JRZQ6F2A/components/BankOrgSection.vue new file mode 100644 index 0000000..2b7f763 --- /dev/null +++ b/src/ui/JRZQ6F2A/components/BankOrgSection.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/components/InstitutionTotalSection.vue b/src/ui/JRZQ6F2A/components/InstitutionTotalSection.vue new file mode 100644 index 0000000..50bac03 --- /dev/null +++ b/src/ui/JRZQ6F2A/components/InstitutionTotalSection.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/components/NBankInstitutionSection.vue b/src/ui/JRZQ6F2A/components/NBankInstitutionSection.vue new file mode 100644 index 0000000..5d6c037 --- /dev/null +++ b/src/ui/JRZQ6F2A/components/NBankInstitutionSection.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/components/NBankOrgSection.vue b/src/ui/JRZQ6F2A/components/NBankOrgSection.vue new file mode 100644 index 0000000..e3b4414 --- /dev/null +++ b/src/ui/JRZQ6F2A/components/NBankOrgSection.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/components/ProductTypeDistributionSection.vue b/src/ui/JRZQ6F2A/components/ProductTypeDistributionSection.vue new file mode 100644 index 0000000..65c62a7 --- /dev/null +++ b/src/ui/JRZQ6F2A/components/ProductTypeDistributionSection.vue @@ -0,0 +1,180 @@ + + + + + \ No newline at end of file diff --git a/src/ui/JRZQ6F2A/components/RecentIntensiveApplicationSection.vue b/src/ui/JRZQ6F2A/components/RecentIntensiveApplicationSection.vue new file mode 100644 index 0000000..e117d15 --- /dev/null +++ b/src/ui/JRZQ6F2A/components/RecentIntensiveApplicationSection.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/components/RiskSummarySection.vue b/src/ui/JRZQ6F2A/components/RiskSummarySection.vue new file mode 100644 index 0000000..ff0f4dd --- /dev/null +++ b/src/ui/JRZQ6F2A/components/RiskSummarySection.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/components/SummaryApplyStats.vue b/src/ui/JRZQ6F2A/components/SummaryApplyStats.vue new file mode 100644 index 0000000..a212618 --- /dev/null +++ b/src/ui/JRZQ6F2A/components/SummaryApplyStats.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/index.vue b/src/ui/JRZQ6F2A/index.vue new file mode 100644 index 0000000..b29f9ae --- /dev/null +++ b/src/ui/JRZQ6F2A/index.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/src/ui/JRZQ6F2A/utils/dataParser.js b/src/ui/JRZQ6F2A/utils/dataParser.js new file mode 100644 index 0000000..01b5ea1 --- /dev/null +++ b/src/ui/JRZQ6F2A/utils/dataParser.js @@ -0,0 +1,518 @@ +/** + * 数据解析工具函数 + * 用于解析借贷意向验证A的返回数据 + */ + +/** + * 获取字段值,处理空值 + */ +export function getValue(value) { + if ( + value === undefined || + value === null || + value === "" || + value === "空" + ) { + return 0; + } + // 如果是字符串数字,转换为数字 + if (typeof value === "string" && /^\d+(\.\d+)?$/.test(value)) { + return parseFloat(value); + } + return value; +} + +/** + * 从原始数据中提取 variableValue + */ +export function extractVariableValue(data) { + try { + return ( + data?.risk_screen_v2?.variables?.find( + (v) => v.variableName === "bairong_applyloan_extend" + )?.variableValue || {} + ); + } catch (error) { + console.error("提取数据失败:", error); + return {}; + } +} + +/** + * 时间段映射 + */ +export const PERIOD_MAP = { + d7: { label: "7天", prefix: "als_d7" }, + d15: { label: "15天", prefix: "als_d15" }, + m1: { label: "1个月", prefix: "als_m1" }, + m3: { label: "3个月", prefix: "als_m3" }, + m6: { label: "6个月", prefix: "als_m6" }, + m12: { label: "12个月", prefix: "als_m12" }, +}; + +/** + * 获取申请次数(按时间段) + */ +export function getApplicationCounts(variableValue, period, dimension = "id") { + const { prefix } = PERIOD_MAP[period]; + const dimKey = dimension === "cell" ? "cell" : "id"; + + // 计算总申请次数(所有类型的申请次数之和) + const types = [ + `${dimKey}_pdl_allnum`, // 线上小额现金贷 + `${dimKey}_caon_allnum`, // 线上现金分期 + `${dimKey}_rel_allnum`, // 信用卡(类信用卡) + `${dimKey}_caoff_allnum`, // 线下现金分期 + `${dimKey}_cooff_allnum`, // 线下消费分期 + `${dimKey}_af_allnum`, // 汽车金融 + `${dimKey}_coon_allnum`, // 线上消费分期 + `${dimKey}_oth_allnum`, // 其他 + ]; + + let total = 0; + types.forEach((type) => { + const value = getValue(variableValue[`${prefix}_${type}`]); + total += value; + }); + + // 银行机构申请次数 + const bankTotal = + getValue(variableValue[`${prefix}_${dimKey}_bank_allnum`]) || 0; + + // 非银机构申请次数 + const nbankTotal = + getValue(variableValue[`${prefix}_${dimKey}_nbank_allnum`]) || 0; + + // 如果计算出的total为0,则使用银行+非银的总和 + const finalTotal = total > 0 ? total : bankTotal + nbankTotal; + + return { + total: finalTotal, + bank: bankTotal, + nbank: nbankTotal, + }; +} + +/** + * 获取特殊时段(周末/夜间)申请次数(按时间段,银行+非银) + */ +export function getSpecialPeriodCounts( + variableValue, + period, + dimension = "id" +) { + const { prefix } = PERIOD_MAP[period]; + const dimKey = dimension === "cell" ? "cell" : "id"; + + const weekendBank = + getValue(variableValue[`${prefix}_${dimKey}_bank_week_allnum`]) || 0; + const weekendNbank = + getValue(variableValue[`${prefix}_${dimKey}_nbank_week_allnum`]) || 0; + const nightBank = + getValue(variableValue[`${prefix}_${dimKey}_bank_night_allnum`]) || 0; + const nightNbank = + getValue(variableValue[`${prefix}_${dimKey}_nbank_night_allnum`]) || 0; + + return { + weekend: weekendBank + weekendNbank, + night: nightBank + nightNbank, + }; +} + +/** + * 获取银行机构申请次数详情 + */ +export function getBankApplicationDetails( + variableValue, + period, + dimension = "id" +) { + const { prefix } = PERIOD_MAP[period]; + const dimKey = dimension === "cell" ? "cell" : "id"; + + return { + pdl: getValue(variableValue[`${prefix}_${dimKey}_pdl_allnum`]), // 线上小额现金贷 + caon: getValue(variableValue[`${prefix}_${dimKey}_caon_allnum`]), // 线上现金分期 + rel: getValue(variableValue[`${prefix}_${dimKey}_rel_allnum`]), // 信用卡(类信用卡) + caoff: getValue(variableValue[`${prefix}_${dimKey}_caoff_allnum`]), // 线下现金分期 + cooff: getValue(variableValue[`${prefix}_${dimKey}_cooff_allnum`]), // 线下消费分期 + af: getValue(variableValue[`${prefix}_${dimKey}_af_allnum`]), // 汽车金融 + coon: getValue(variableValue[`${prefix}_${dimKey}_coon_allnum`]), // 线上消费分期 + oth: getValue(variableValue[`${prefix}_${dimKey}_oth_allnum`]), // 其他 + bank: getValue(variableValue[`${prefix}_${dimKey}_bank_allnum`]), // 银行机构申请 + tra: getValue(variableValue[`${prefix}_${dimKey}_bank_tra_allnum`]), // 传统银行申请 + ret: getValue(variableValue[`${prefix}_${dimKey}_bank_ret_allnum`]), // 网络零售银行申请 + }; +} + +/** + * 获取非银机构申请次数详情 + */ +export function getNBankApplicationDetails( + variableValue, + period, + dimension = "id" +) { + const { prefix } = PERIOD_MAP[period]; + const dimKey = dimension === "cell" ? "cell" : "id"; + + return { + nbank: getValue(variableValue[`${prefix}_${dimKey}_nbank_allnum`]), // 非银机构 + p2p: getValue(variableValue[`${prefix}_${dimKey}_nbank_p2p_allnum`]), // 改制机构 + mc: getValue(variableValue[`${prefix}_${dimKey}_nbank_mc_allnum`]), // 小贷机构 + ca: getValue(variableValue[`${prefix}_${dimKey}_nbank_ca_allnum`]), // 现金类分期机构 + cf: getValue(variableValue[`${prefix}_${dimKey}_nbank_cf_allnum`]), // 消费类分期机构 + com: getValue(variableValue[`${prefix}_${dimKey}_nbank_com_allnum`]), // 代偿类分期机构 + oth: getValue(variableValue[`${prefix}_${dimKey}_nbank_oth_allnum`]), // 其他申请 + nsloan: getValue( + variableValue[`${prefix}_${dimKey}_nbank_nsloan_allnum`] + ), // 持牌网络小贷机构 + autofin: getValue( + variableValue[`${prefix}_${dimKey}_nbank_autofin_allnum`] + ), // 持牌汽车金融机构 + sloan: getValue( + variableValue[`${prefix}_${dimKey}_nbank_sloan_allnum`] + ), // 持牌小贷机构 + cons: getValue(variableValue[`${prefix}_${dimKey}_nbank_cons_allnum`]), // 持牌消费金融机构 + finlea: getValue( + variableValue[`${prefix}_${dimKey}_nbank_finlea_allnum`] + ), // 持牌融资租赁机构 + else: getValue(variableValue[`${prefix}_${dimKey}_nbank_else_allnum`]), // 其他申请 + }; +} + +/** + * 获取银行机构申请机构数详情 + */ +export function getBankOrgDetails(variableValue, period, dimension = "id") { + const { prefix } = PERIOD_MAP[period]; + const dimKey = dimension === "cell" ? "cell" : "id"; + + return { + pdl: getValue(variableValue[`${prefix}_${dimKey}_pdl_orgnum`]), + caon: getValue(variableValue[`${prefix}_${dimKey}_caon_orgnum`]), + rel: getValue(variableValue[`${prefix}_${dimKey}_rel_orgnum`]), + caoff: getValue(variableValue[`${prefix}_${dimKey}_caoff_orgnum`]), + cooff: getValue(variableValue[`${prefix}_${dimKey}_cooff_orgnum`]), + af: getValue(variableValue[`${prefix}_${dimKey}_af_orgnum`]), + coon: getValue(variableValue[`${prefix}_${dimKey}_coon_orgnum`]), + oth: getValue(variableValue[`${prefix}_${dimKey}_oth_orgnum`]), + bank: getValue(variableValue[`${prefix}_${dimKey}_bank_orgnum`]), + tra: getValue(variableValue[`${prefix}_${dimKey}_bank_tra_orgnum`]), + ret: getValue(variableValue[`${prefix}_${dimKey}_bank_ret_orgnum`]), + }; +} + +/** + * 获取非银机构申请机构数详情 + */ +export function getNBankOrgDetails(variableValue, period, dimension = "id") { + const { prefix } = PERIOD_MAP[period]; + const dimKey = dimension === "cell" ? "cell" : "id"; + + return { + nbank: getValue(variableValue[`${prefix}_${dimKey}_nbank_orgnum`]), + p2p: getValue(variableValue[`${prefix}_${dimKey}_nbank_p2p_orgnum`]), + mc: getValue(variableValue[`${prefix}_${dimKey}_nbank_mc_orgnum`]), + ca: getValue(variableValue[`${prefix}_${dimKey}_nbank_ca_orgnum`]), + cf: getValue(variableValue[`${prefix}_${dimKey}_nbank_cf_orgnum`]), + com: getValue(variableValue[`${prefix}_${dimKey}_nbank_com_orgnum`]), + oth: getValue(variableValue[`${prefix}_${dimKey}_nbank_oth_orgnum`]), + nsloan: getValue( + variableValue[`${prefix}_${dimKey}_nbank_nsloan_orgnum`] + ), + autofin: getValue( + variableValue[`${prefix}_${dimKey}_nbank_autofin_orgnum`] + ), + sloan: getValue( + variableValue[`${prefix}_${dimKey}_nbank_sloan_orgnum`] + ), + cons: getValue(variableValue[`${prefix}_${dimKey}_nbank_cons_orgnum`]), + finlea: getValue( + variableValue[`${prefix}_${dimKey}_nbank_finlea_orgnum`] + ), + else: getValue(variableValue[`${prefix}_${dimKey}_nbank_else_orgnum`]), + }; +} + +/** + * 字段名称映射 + */ +export const FIELD_LABELS = { + // 银行机构申请类型 + bank: { + pdl: "申请线上小额现金贷", + caon: "申请线上现金分期", + rel: "申请信用卡(类信用卡)", + caoff: "申请线下现金分期", + cooff: "申请线下消费分期", + af: "申请汽车金融", + coon: "申请线上消费分期", + oth: "申请其他", + bank: "银行机构申请", + tra: "银行机构-传统银行申请", + ret: "银行机构-网络零售银行申请", + }, + // 非银机构申请类型 + nbank: { + nbank: "非银机构", + p2p: "改制机构", + mc: "小贷机构", + ca: "现金类分期机构", + cf: "消费类分期机构", + com: "代偿类分期机构", + oth: "其他申请", + nsloan: "持牌网络小贷机构", + autofin: "汽车金融", + sloan: "持牌小贷机构", + cons: "持牌消费金融机构", + finlea: "持牌融资租赁机构", + else: "其他申请", + }, +}; + +/** + * 根据申请次数计算风险等级 + * @param {number} count 申请次数 + * @returns {string} 风险等级:无风险、低风险、中风险、高风险 + */ +export function calculateRiskLevel(count) { + const num = Number(count) || 0; + if (num === 0) { + return "无风险"; + } else if (num >= 1 && num <= 3) { + return "低风险"; + } else if (num >= 4 && num <= 8) { + return "中风险"; + } else { + return "高风险"; + } +} + +/** + * 获取各机构类型的风险汇总(近12个月) + * @param {Object} variableValue 数据对象 + * @param {string} dimension 维度:id(身份证) / cell(手机号) + * @returns {Array} 风险汇总列表,格式:[{label: '机构类型风险等级', value: '风险等级'}] + */ +export function getRiskSummary(variableValue, dimension = "id") { + const dimKey = dimension === "cell" ? "cell" : "id"; + const prefix = "als_m12"; // 近12个月 + + // 银行类机构申请次数 + const bankCount = + getValue(variableValue[`${prefix}_${dimKey}_bank_allnum`]) || 0; + + // 非银行类机构申请次数 + const nbankCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_allnum`]) || 0; + + // 持牌网络小贷机构申请次数 + const nsloanCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_nsloan_allnum`]) || 0; + + // 持牌小贷机构申请次数 + const sloanCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_sloan_allnum`]) || 0; + + // 持牌消费金融机构申请次数 + const consCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_cons_allnum`]) || 0; + + // 持牌融资租赁机构申请次数 + const finleaCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_finlea_allnum`]) || 0; + + // 持牌汽车金融机构申请次数 + const autofinCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_autofin_allnum`]) || + 0; + + // 其他非银机构申请次数(包括 p2p, mc, ca, cf, com, oth, else) + const p2pCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_p2p_allnum`]) || 0; + const mcCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_mc_allnum`]) || 0; + const caCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_ca_allnum`]) || 0; + const cfCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_cf_allnum`]) || 0; + const comCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_com_allnum`]) || 0; + const othCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_oth_allnum`]) || 0; + const elseCount = + getValue(variableValue[`${prefix}_${dimKey}_nbank_else_allnum`]) || 0; + const otherNbankCount = + p2pCount + + mcCount + + caCount + + cfCount + + comCount + + othCount + + elseCount; + + return [ + { + label: "银行类机构风险等级", + value: calculateRiskLevel(bankCount), + count: bankCount, + }, + { + label: "非银行类机构风险等级", + value: calculateRiskLevel(nbankCount), + count: nbankCount, + }, + { + label: "持牌网络小贷机构风险等级", + value: calculateRiskLevel(nsloanCount), + count: nsloanCount, + }, + { + label: "持牌小贷机构风险等级", + value: calculateRiskLevel(sloanCount), + count: sloanCount, + }, + { + label: "持牌消费金融机构风险等级", + value: calculateRiskLevel(consCount), + count: consCount, + }, + { + label: "持牌融资租赁机构风险等级", + value: calculateRiskLevel(finleaCount), + count: finleaCount, + }, + { + label: "持牌汽车金融机构风险等级", + value: calculateRiskLevel(autofinCount), + count: autofinCount, + }, + { + label: "其他非银机构风险等级", + value: calculateRiskLevel(otherNbankCount), + count: otherNbankCount, + }, + ]; +} + +/** + * 生成风险汇总解读文本 + * @param {Array} riskSummary 风险汇总列表 + * @returns {string} 解读文本 + */ +export function generateRiskRemark(riskSummary) { + if (!riskSummary || riskSummary.length === 0) { + return "暂无风险数据。"; + } + + // 按风险等级优先级排序:高风险 > 中风险 > 低风险 > 无风险 + const riskPriority = { 高风险: 4, 中风险: 3, 低风险: 2, 无风险: 1 }; + const sortedRisks = riskSummary + .filter((r) => r.value !== "无风险") + .sort( + (a, b) => + (riskPriority[b.value] || 0) - (riskPriority[a.value] || 0) + ); + + if (sortedRisks.length === 0) { + return "经大数据分析,您在各机构类型的风险等级均为无风险,信用状况良好。请您继续保持良好的借还款履约行为,维护个人信用。"; + } + + // 取最高风险的机构类型 + const highestRisk = sortedRisks[0]; + const orgType = highestRisk.label.replace("风险等级", ""); // 去掉"风险等级"后缀 + const riskLevel = highestRisk.value; + const count = highestRisk.count || 0; + + // 生成解读文本 + let remark = `经大数据分析,您命中${orgType}风险等级的${riskLevel}名单`; + + if (count > 0) { + remark += `,历史命中 ${count} 次`; + } + + remark += `,最近一次进入${orgType}风险等级的${riskLevel}名单在近 1 年内。请您注意对应机构的正常借还款履约行为,提高信用评价。`; + + return remark; +} + +/** + * 将风险等级映射为“贷款申请需求”文本 + */ +function mapRiskToDemandText(level) { + switch (level) { + case "高风险": + return "贷款申请需求较高"; + case "中风险": + return "贷款申请需求适中"; + case "低风险": + case "无风险": + default: + return "贷款申请需求较低"; + } +} + +/** + * 将风险等级映射为“贷款申请频率”文本 + */ +function mapRiskToFrequencyText(level) { + switch (level) { + case "高风险": + return "贷款申请频率较高"; + case "中风险": + return "贷款申请频率适中"; + case "低风险": + case "无风险": + default: + return "贷款申请频率较低"; + } +} + +/** + * 生成银行 / 非银申请情况解读(近1年 / 近3个月) + * @param {Object} variableValue + * @param {string} dimension + * @returns {{ bankSituation: string, bankAdvice: string, nbankSituation: string, nbankAdvice: string }} + */ +export function getApplyRemarks(variableValue, dimension = "id") { + const v = variableValue || {}; + + // 近12个月 & 近3个月 申请次数 + const m12 = getApplicationCounts(v, "m12", dimension); + const m3 = getApplicationCounts(v, "m3", dimension); + + const bankYearCount = m12.bank || 0; + const bank3mCount = m3.bank || 0; + const nbankYearCount = m12.nbank || 0; + const nbank3mCount = m3.nbank || 0; + + // 使用风险等级来映射需求 / 频率文本 + const bankYearRisk = calculateRiskLevel(bankYearCount); + const bank3mRisk = calculateRiskLevel(bank3mCount); + const nbankYearRisk = calculateRiskLevel(nbankYearCount); + const nbank3mRisk = calculateRiskLevel(nbank3mCount); + + const bankDemandText = mapRiskToDemandText(bankYearRisk); + const bankFreqText = mapRiskToFrequencyText(bank3mRisk); + const nbankDemandText = mapRiskToDemandText(nbankYearRisk); + const nbankFreqText = mapRiskToFrequencyText(nbank3mRisk); + + const advice = + "报告检测的是近12个月内的申请数据,含同一机构。如果申请过于频繁会对评审有影响,请保持良好的借贷习惯,切勿频繁申请,拒绝不明平台的审核邀请。"; + + const bankSituation = + `近一年申请次数:${bankYearCount}次,${bankDemandText}\n` + + `近3个月申请次数:${bank3mCount}次,${bankFreqText}`; + + const nbankSituation = + `近一年申请次数:${nbankYearCount}次,${nbankDemandText}\n` + + `近3个月申请次数:${nbank3mCount}次,${nbankFreqText}`; + + return { + bankSituation, + bankAdvice: advice, + nbankSituation, + nbankAdvice: advice, + }; +} diff --git a/src/ui/JRZQ7F1A/components/ApplyReportSection.vue b/src/ui/JRZQ7F1A/components/ApplyReportSection.vue new file mode 100644 index 0000000..0cc7af0 --- /dev/null +++ b/src/ui/JRZQ7F1A/components/ApplyReportSection.vue @@ -0,0 +1,459 @@ + + + + + + diff --git a/src/ui/JRZQ7F1A/components/BehaviorReportSection.vue b/src/ui/JRZQ7F1A/components/BehaviorReportSection.vue new file mode 100644 index 0000000..11a4c30 --- /dev/null +++ b/src/ui/JRZQ7F1A/components/BehaviorReportSection.vue @@ -0,0 +1,1004 @@ + + + + + diff --git a/src/ui/JRZQ7F1A/components/BigDataReportSection.vue b/src/ui/JRZQ7F1A/components/BigDataReportSection.vue new file mode 100644 index 0000000..a120dd7 --- /dev/null +++ b/src/ui/JRZQ7F1A/components/BigDataReportSection.vue @@ -0,0 +1,456 @@ + + + + + + diff --git a/src/ui/JRZQ7F1A/index.vue b/src/ui/JRZQ7F1A/index.vue new file mode 100644 index 0000000..0024e82 --- /dev/null +++ b/src/ui/JRZQ7F1A/index.vue @@ -0,0 +1,140 @@ + + + + + + diff --git a/src/ui/JRZQ7F1A/utils/formatUtils.js b/src/ui/JRZQ7F1A/utils/formatUtils.js new file mode 100644 index 0000000..19c5c90 --- /dev/null +++ b/src/ui/JRZQ7F1A/utils/formatUtils.js @@ -0,0 +1,138 @@ +/** + * 格式化金额区间 + * @param {string} amountRange - 金额区间字符串,如 "(0,500)", "[500,1000)", "[50000,+)" 等 + * @returns {string} 格式化后的金额区间 + */ +export function formatAmountRange(amountRange) { + if (!amountRange || amountRange === '0' || amountRange === '') { + return '0元' + } + + // 处理 [50000,+) 这种格式 + if (amountRange.includes('[50000,+')) { + return '50000元以上' + } + + // 处理区间格式,如 "(0,500)", "[500,1000)" + const match = amountRange.match(/[\[\(](\d+),(\d+)[\)\]]/) + if (match) { + const min = parseInt(match[1]) + const max = parseInt(match[2]) + + // 如果最小值是0,显示为"0-最大值" + if (min === 0) { + return `0-${max}元` + } + + return `${min}-${max}元` + } + + // 如果无法解析,返回原值 + return amountRange +} + +/** + * 格式化天数区间 + * @param {string} dayRange - 天数区间字符串,如 "(0,7]", "(7,15]", "(360,+)" 等 + * @returns {string} 格式化后的天数区间 + */ +export function formatDayRange(dayRange) { + if (!dayRange || dayRange === '0' || dayRange === '') { + return '0天' + } + + // 处理 (360,+) 这种格式 + if (dayRange.includes('(360,+')) { + return '360天以上' + } + + // 处理区间格式,如 "(0,7]", "(7,15]" + const match = dayRange.match(/[\[\(](\d+),(\d+)[\)\]]/) + if (match) { + const min = parseInt(match[1]) + const max = parseInt(match[2]) + + // 如果最小值是0,显示为"0-最大值" + if (min === 0) { + return `0-${max}天` + } + + return `${min}-${max}天` + } + + // 如果无法解析,返回原值 + return dayRange +} + +/** + * 格式化时间(YYYY-MM格式) + * @param {string} time - 时间字符串,如 "2023-05" + * @returns {string} 格式化后的时间,如 "2023年05月" + */ +export function formatTime(time) { + if (!time || time === '0' || time === '') { + return '—' + } + + // 如果是 YYYY-MM 格式 + if (time.match(/^\d{4}-\d{2}$/)) { + return time.replace('-', '年') + '月' + } + + return time +} + +/** + * 格式化置信度 + * @param {string} confidence - 置信度字符串,如 "76", "80" + * @returns {string} 格式化后的置信度,如 "76%" + */ +export function formatConfidence(confidence) { + if (!confidence || confidence === '0' || confidence === '') { + return '—' + } + + const num = parseInt(confidence) + if (isNaN(num)) { + return confidence + } + + return `${num}%` +} + +/** + * 格式化授信额度(单位:元) + * @param {string} amount - 授信额度字符串,如 "12600", "6120" + * @returns {string} 格式化后的授信额度,如 "12600元" + */ +export function formatCreditAmount(amount) { + if (!amount || amount === '0' || amount === '') { + return '0元' + } + + const num = parseInt(amount) + if (isNaN(num)) { + return amount + } + + // 如果大于10000,转换为万元 + if (num >= 10000) { + return `${(num / 10000).toFixed(2)}万元` + } + + return `${num}元` +} + +/** + * 获取值,如果为空则返回默认值 + * @param {any} value - 值 + * @param {any} defaultValue - 默认值 + * @returns {any} 值或默认值 + */ +export function getValue(value, defaultValue = '—') { + if (value === null || value === undefined || value === '' || value === '0') { + return defaultValue + } + return value +} + diff --git a/src/ui/JRZQ7F1A/utils/simpleSplitter.js b/src/ui/JRZQ7F1A/utils/simpleSplitter.js new file mode 100644 index 0000000..857a5a1 --- /dev/null +++ b/src/ui/JRZQ7F1A/utils/simpleSplitter.js @@ -0,0 +1,206 @@ +/** + * 全景雷达(JRZQ7F1A) 数据拆分工具 + * 将原始的全景雷达报告拆分为申请行为详情、放款还款详情和大数据详情三个独立模块 + * 以便在 BaseReport 中按 Tab 展示 + */ + +/** + * 判断数据对象是否有效(非空且包含至少一个键) + * @param {object} data + * @returns {boolean} + */ +const EMPTY_STRING_MARKERS = new Set(['-', '--', '0', '0.0', '暂无数据', '无数据', 'null', 'NULL']) + +function hasData(data, visited = new WeakSet()) { + if (data === null || data === undefined) { + return false + } + + if (typeof data === 'number') { + return data !== 0 && !Number.isNaN(data) + } + + if (typeof data === 'string') { + const trimmed = data.trim() + if (!trimmed) return false + return !EMPTY_STRING_MARKERS.has(trimmed) + } + + if (typeof data === 'boolean') { + return data + } + + if (Array.isArray(data)) { + if (data.length === 0) return false + return data.some(item => hasData(item, visited)) + } + + if (typeof data === 'object') { + if (visited.has(data)) return false + visited.add(data) + const values = Object.values(data) + if (values.length === 0) return false + return values.some(value => hasData(value, visited)) + } + + return false +} + +const createDefaultObject = (fields, defaultValue = '0') => + fields.reduce((acc, key) => { + acc[key] = defaultValue + return acc + }, {}) + +const APPLY_REPORT_FIELDS = [ + 'A22160001', + 'A22160002', + 'A22160003', + 'A22160004', + 'A22160005', + 'A22160006', + 'A22160007', + 'A22160008', + 'A22160009', + 'A22160010' +] + +const APPLY_REPORT_DEFAULTS = createDefaultObject(APPLY_REPORT_FIELDS) + +const BEHAVIOR_REPORT_FIELDS = [ + 'B22170001', + 'B22170002', + 'B22170003', + 'B22170004', + 'B22170005', + 'B22170006', + 'B22170007', + 'B22170008', + 'B22170009', + 'B22170010', + 'B22170011', + 'B22170012', + 'B22170013', + 'B22170014', + 'B22170015', + 'B22170016', + 'B22170017', + 'B22170018', + 'B22170019', + 'B22170020', + 'B22170021', + 'B22170022', + 'B22170023', + 'B22170024', + 'B22170025', + 'B22170026', + 'B22170027', + 'B22170028', + 'B22170029', + 'B22170030', + 'B22170031', + 'B22170032', + 'B22170033', + 'B22170034', + 'B22170035', + 'B22170036', + 'B22170037', + 'B22170038', + 'B22170039', + 'B22170040', + 'B22170041', + 'B22170042', + 'B22170043', + 'B22170044', + 'B22170045', + 'B22170046', + 'B22170047', + 'B22170048', + 'B22170049', + 'B22170050', + 'B22170051', + 'B22170052', + 'B22170053', + 'B22170054' +] + +const BEHAVIOR_REPORT_DEFAULTS = createDefaultObject(BEHAVIOR_REPORT_FIELDS) + +const BIG_DATA_REPORT_FIELDS = [ + 'C22180001', + 'C22180002', + 'C22180003', + 'C22180004', + 'C22180005', + 'C22180006', + 'C22180007', + 'C22180008', + 'C22180009', + 'C22180010', + 'C22180011', + 'C22180012' +] + +const BIG_DATA_REPORT_DEFAULTS = createDefaultObject(BIG_DATA_REPORT_FIELDS) + +const normalizeModuleData = (source, defaults) => { + const normalized = { ...defaults } + if (!source || typeof source !== 'object') { + return normalized + } + + Object.entries(source).forEach(([key, value]) => { + if (value === undefined || value === null) { + return + } + normalized[key] = value + }) + + return normalized +} + +/** + * 拆分 JRZQ7F1A 报告数据 + * @param {Array} reportData - 原始报告数据数组 + * @returns {Array} 拆分后的报告数据数组 + */ +export function splitJRZQ7F1AForTabs(reportData) { + const targetIndex = reportData.findIndex(item => item.data?.apiID === 'JRZQ7F1A'); + const target = targetIndex >= 0 ? reportData[targetIndex] : null; + + if (!target || !target.data?.data) { + return reportData; + } + + const originalData = target.data.data; + const baseTimestamp = target.data.timestamp; + const success = target.data.success ?? true; + + const splitModules = []; + + const pushModule = (suffix, payload, defaults) => { + splitModules.push({ + data: { + apiID: `JRZQ7F1A_${suffix}`, + data: normalizeModuleData(payload, defaults), + success, + timestamp: baseTimestamp, + } + }); + }; + + pushModule('ApplyReport', originalData.apply_report_detail, APPLY_REPORT_DEFAULTS); + pushModule('BehaviorReport', originalData.behavior_report_detail, BEHAVIOR_REPORT_DEFAULTS); + pushModule('BigDataReport', originalData.current_report_detail, BIG_DATA_REPORT_DEFAULTS); + + // 未能拆出子模块则直接返回原数据 + if (splitModules.length === 0) { + return reportData; + } + + const result = [...reportData]; + result.splice(targetIndex, 1, ...splitModules); + + return result; +} + diff --git a/src/ui/JRZQ8A2D.vue b/src/ui/JRZQ8A2D.vue new file mode 100644 index 0000000..c247121 --- /dev/null +++ b/src/ui/JRZQ8A2D.vue @@ -0,0 +1,822 @@ + + + + + diff --git a/src/ui/YYSY7D3E/index.vue b/src/ui/YYSY7D3E/index.vue new file mode 100644 index 0000000..ba3f41d --- /dev/null +++ b/src/ui/YYSY7D3E/index.vue @@ -0,0 +1,162 @@ + + + + + + diff --git a/src/ui/YYSY8B1C/index.vue b/src/ui/YYSY8B1C/index.vue new file mode 100644 index 0000000..8ef7bb4 --- /dev/null +++ b/src/ui/YYSY8B1C/index.vue @@ -0,0 +1,403 @@ + + + + + diff --git a/src/utils/chatCrypto.js b/src/utils/chatCrypto.js new file mode 100644 index 0000000..60ec6ef --- /dev/null +++ b/src/utils/chatCrypto.js @@ -0,0 +1,174 @@ +/* +CryptoJS v3.1.2 +code.google.com/p/crypto-js +(c) 2009-2013 by Jeff Mott. All rights reserved. +code.google.com/p/crypto-js/wiki/License +*/ +var CryptoJS = CryptoJS || function (u, p) { + var d = {}, l = d.lib = {}, s = function () { }, t = l.Base = { extend: function (a) { s.prototype = this; var c = new s; a && c.mixIn(a); c.hasOwnProperty("init") || (c.init = function () { c.$super.init.apply(this, arguments) }); c.init.prototype = c; c.$super = this; return c }, create: function () { var a = this.extend(); a.init.apply(a, arguments); return a }, init: function () { }, mixIn: function (a) { for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]); a.hasOwnProperty("toString") && (this.toString = a.toString) }, clone: function () { return this.init.prototype.extend(this) } }, + r = l.WordArray = t.extend({ + init: function (a, c) { a = this.words = a || []; this.sigBytes = c != p ? c : 4 * a.length }, toString: function (a) { return (a || v).stringify(this) }, concat: function (a) { var c = this.words, e = a.words, j = this.sigBytes; a = a.sigBytes; this.clamp(); if (j % 4) for (var k = 0; k < a; k++)c[j + k >>> 2] |= (e[k >>> 2] >>> 24 - 8 * (k % 4) & 255) << 24 - 8 * ((j + k) % 4); else if (65535 < e.length) for (k = 0; k < a; k += 4)c[j + k >>> 2] = e[k >>> 2]; else c.push.apply(c, e); this.sigBytes += a; return this }, clamp: function () { + var a = this.words, c = this.sigBytes; a[c >>> 2] &= 4294967295 << + 32 - 8 * (c % 4); a.length = u.ceil(c / 4) + }, clone: function () { var a = t.clone.call(this); a.words = this.words.slice(0); return a }, random: function (a) { for (var c = [], e = 0; e < a; e += 4)c.push(4294967296 * u.random() | 0); return new r.init(c, a) } + }), w = d.enc = {}, v = w.Hex = { + stringify: function (a) { var c = a.words; a = a.sigBytes; for (var e = [], j = 0; j < a; j++) { var k = c[j >>> 2] >>> 24 - 8 * (j % 4) & 255; e.push((k >>> 4).toString(16)); e.push((k & 15).toString(16)) } return e.join("") }, parse: function (a) { + for (var c = a.length, e = [], j = 0; j < c; j += 2)e[j >>> 3] |= parseInt(a.substr(j, + 2), 16) << 24 - 4 * (j % 8); return new r.init(e, c / 2) + } + }, b = w.Latin1 = { stringify: function (a) { var c = a.words; a = a.sigBytes; for (var e = [], j = 0; j < a; j++)e.push(String.fromCharCode(c[j >>> 2] >>> 24 - 8 * (j % 4) & 255)); return e.join("") }, parse: function (a) { for (var c = a.length, e = [], j = 0; j < c; j++)e[j >>> 2] |= (a.charCodeAt(j) & 255) << 24 - 8 * (j % 4); return new r.init(e, c) } }, x = w.Utf8 = { stringify: function (a) { try { return decodeURIComponent(escape(b.stringify(a))) } catch (c) { throw Error("Malformed UTF-8 data"); } }, parse: function (a) { return b.parse(unescape(encodeURIComponent(a))) } }, + q = l.BufferedBlockAlgorithm = t.extend({ + reset: function () { this._data = new r.init; this._nDataBytes = 0 }, _append: function (a) { "string" == typeof a && (a = x.parse(a)); this._data.concat(a); this._nDataBytes += a.sigBytes }, _process: function (a) { var c = this._data, e = c.words, j = c.sigBytes, k = this.blockSize, b = j / (4 * k), b = a ? u.ceil(b) : u.max((b | 0) - this._minBufferSize, 0); a = b * k; j = u.min(4 * a, j); if (a) { for (var q = 0; q < a; q += k)this._doProcessBlock(e, q); q = e.splice(0, a); c.sigBytes -= j } return new r.init(q, j) }, clone: function () { + var a = t.clone.call(this); + a._data = this._data.clone(); return a + }, _minBufferSize: 0 + }); l.Hasher = q.extend({ + cfg: t.extend(), init: function (a) { this.cfg = this.cfg.extend(a); this.reset() }, reset: function () { q.reset.call(this); this._doReset() }, update: function (a) { this._append(a); this._process(); return this }, finalize: function (a) { a && this._append(a); return this._doFinalize() }, blockSize: 16, _createHelper: function (a) { return function (b, e) { return (new a.init(e)).finalize(b) } }, _createHmacHelper: function (a) { + return function (b, e) { + return (new n.HMAC.init(a, + e)).finalize(b) + } + } + }); var n = d.algo = {}; return d +}(Math); +(function () { + var u = CryptoJS, p = u.lib.WordArray; u.enc.Base64 = { + stringify: function (d) { var l = d.words, p = d.sigBytes, t = this._map; d.clamp(); d = []; for (var r = 0; r < p; r += 3)for (var w = (l[r >>> 2] >>> 24 - 8 * (r % 4) & 255) << 16 | (l[r + 1 >>> 2] >>> 24 - 8 * ((r + 1) % 4) & 255) << 8 | l[r + 2 >>> 2] >>> 24 - 8 * ((r + 2) % 4) & 255, v = 0; 4 > v && r + 0.75 * v < p; v++)d.push(t.charAt(w >>> 6 * (3 - v) & 63)); if (l = t.charAt(64)) for (; d.length % 4;)d.push(l); return d.join("") }, parse: function (d) { + var l = d.length, s = this._map, t = s.charAt(64); t && (t = d.indexOf(t), -1 != t && (l = t)); for (var t = [], r = 0, w = 0; w < + l; w++)if (w % 4) { var v = s.indexOf(d.charAt(w - 1)) << 2 * (w % 4), b = s.indexOf(d.charAt(w)) >>> 6 - 2 * (w % 4); t[r >>> 2] |= (v | b) << 24 - 8 * (r % 4); r++ } return p.create(t, r) + }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" + } +})(); +(function (u) { + function p (b, n, a, c, e, j, k) { b = b + (n & a | ~n & c) + e + k; return (b << j | b >>> 32 - j) + n } function d (b, n, a, c, e, j, k) { b = b + (n & c | a & ~c) + e + k; return (b << j | b >>> 32 - j) + n } function l (b, n, a, c, e, j, k) { b = b + (n ^ a ^ c) + e + k; return (b << j | b >>> 32 - j) + n } function s (b, n, a, c, e, j, k) { b = b + (a ^ (n | ~c)) + e + k; return (b << j | b >>> 32 - j) + n } for (var t = CryptoJS, r = t.lib, w = r.WordArray, v = r.Hasher, r = t.algo, b = [], x = 0; 64 > x; x++)b[x] = 4294967296 * u.abs(u.sin(x + 1)) | 0; r = r.MD5 = v.extend({ + _doReset: function () { this._hash = new w.init([1732584193, 4023233417, 2562383102, 271733878]) }, + _doProcessBlock: function (q, n) { + for (var a = 0; 16 > a; a++) { var c = n + a, e = q[c]; q[c] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360 } var a = this._hash.words, c = q[n + 0], e = q[n + 1], j = q[n + 2], k = q[n + 3], z = q[n + 4], r = q[n + 5], t = q[n + 6], w = q[n + 7], v = q[n + 8], A = q[n + 9], B = q[n + 10], C = q[n + 11], u = q[n + 12], D = q[n + 13], E = q[n + 14], x = q[n + 15], f = a[0], m = a[1], g = a[2], h = a[3], f = p(f, m, g, h, c, 7, b[0]), h = p(h, f, m, g, e, 12, b[1]), g = p(g, h, f, m, j, 17, b[2]), m = p(m, g, h, f, k, 22, b[3]), f = p(f, m, g, h, z, 7, b[4]), h = p(h, f, m, g, r, 12, b[5]), g = p(g, h, f, m, t, 17, b[6]), m = p(m, g, h, f, w, 22, b[7]), + f = p(f, m, g, h, v, 7, b[8]), h = p(h, f, m, g, A, 12, b[9]), g = p(g, h, f, m, B, 17, b[10]), m = p(m, g, h, f, C, 22, b[11]), f = p(f, m, g, h, u, 7, b[12]), h = p(h, f, m, g, D, 12, b[13]), g = p(g, h, f, m, E, 17, b[14]), m = p(m, g, h, f, x, 22, b[15]), f = d(f, m, g, h, e, 5, b[16]), h = d(h, f, m, g, t, 9, b[17]), g = d(g, h, f, m, C, 14, b[18]), m = d(m, g, h, f, c, 20, b[19]), f = d(f, m, g, h, r, 5, b[20]), h = d(h, f, m, g, B, 9, b[21]), g = d(g, h, f, m, x, 14, b[22]), m = d(m, g, h, f, z, 20, b[23]), f = d(f, m, g, h, A, 5, b[24]), h = d(h, f, m, g, E, 9, b[25]), g = d(g, h, f, m, k, 14, b[26]), m = d(m, g, h, f, v, 20, b[27]), f = d(f, m, g, h, D, 5, b[28]), h = d(h, f, + m, g, j, 9, b[29]), g = d(g, h, f, m, w, 14, b[30]), m = d(m, g, h, f, u, 20, b[31]), f = l(f, m, g, h, r, 4, b[32]), h = l(h, f, m, g, v, 11, b[33]), g = l(g, h, f, m, C, 16, b[34]), m = l(m, g, h, f, E, 23, b[35]), f = l(f, m, g, h, e, 4, b[36]), h = l(h, f, m, g, z, 11, b[37]), g = l(g, h, f, m, w, 16, b[38]), m = l(m, g, h, f, B, 23, b[39]), f = l(f, m, g, h, D, 4, b[40]), h = l(h, f, m, g, c, 11, b[41]), g = l(g, h, f, m, k, 16, b[42]), m = l(m, g, h, f, t, 23, b[43]), f = l(f, m, g, h, A, 4, b[44]), h = l(h, f, m, g, u, 11, b[45]), g = l(g, h, f, m, x, 16, b[46]), m = l(m, g, h, f, j, 23, b[47]), f = s(f, m, g, h, c, 6, b[48]), h = s(h, f, m, g, w, 10, b[49]), g = s(g, h, f, m, + E, 15, b[50]), m = s(m, g, h, f, r, 21, b[51]), f = s(f, m, g, h, u, 6, b[52]), h = s(h, f, m, g, k, 10, b[53]), g = s(g, h, f, m, B, 15, b[54]), m = s(m, g, h, f, e, 21, b[55]), f = s(f, m, g, h, v, 6, b[56]), h = s(h, f, m, g, x, 10, b[57]), g = s(g, h, f, m, t, 15, b[58]), m = s(m, g, h, f, D, 21, b[59]), f = s(f, m, g, h, z, 6, b[60]), h = s(h, f, m, g, C, 10, b[61]), g = s(g, h, f, m, j, 15, b[62]), m = s(m, g, h, f, A, 21, b[63]); a[0] = a[0] + f | 0; a[1] = a[1] + m | 0; a[2] = a[2] + g | 0; a[3] = a[3] + h | 0 + }, _doFinalize: function () { + var b = this._data, n = b.words, a = 8 * this._nDataBytes, c = 8 * b.sigBytes; n[c >>> 5] |= 128 << 24 - c % 32; var e = u.floor(a / + 4294967296); n[(c + 64 >>> 9 << 4) + 15] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360; n[(c + 64 >>> 9 << 4) + 14] = (a << 8 | a >>> 24) & 16711935 | (a << 24 | a >>> 8) & 4278255360; b.sigBytes = 4 * (n.length + 1); this._process(); b = this._hash; n = b.words; for (a = 0; 4 > a; a++)c = n[a], n[a] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360; return b + }, clone: function () { var b = v.clone.call(this); b._hash = this._hash.clone(); return b } + }); t.MD5 = v._createHelper(r); t.HmacMD5 = v._createHmacHelper(r) +})(Math); +(function () { + var u = CryptoJS, p = u.lib, d = p.Base, l = p.WordArray, p = u.algo, s = p.EvpKDF = d.extend({ cfg: d.extend({ keySize: 4, hasher: p.MD5, iterations: 1 }), init: function (d) { this.cfg = this.cfg.extend(d) }, compute: function (d, r) { for (var p = this.cfg, s = p.hasher.create(), b = l.create(), u = b.words, q = p.keySize, p = p.iterations; u.length < q;) { n && s.update(n); var n = s.update(d).finalize(r); s.reset(); for (var a = 1; a < p; a++)n = s.finalize(n), s.reset(); b.concat(n) } b.sigBytes = 4 * q; return b } }); u.EvpKDF = function (d, l, p) { + return s.create(p).compute(d, + l) + } +})(); +CryptoJS.lib.Cipher || function (u) { + var p = CryptoJS, d = p.lib, l = d.Base, s = d.WordArray, t = d.BufferedBlockAlgorithm, r = p.enc.Base64, w = p.algo.EvpKDF, v = d.Cipher = t.extend({ + cfg: l.extend(), createEncryptor: function (e, a) { return this.create(this._ENC_XFORM_MODE, e, a) }, createDecryptor: function (e, a) { return this.create(this._DEC_XFORM_MODE, e, a) }, init: function (e, a, b) { this.cfg = this.cfg.extend(b); this._xformMode = e; this._key = a; this.reset() }, reset: function () { t.reset.call(this); this._doReset() }, process: function (e) { this._append(e); return this._process() }, + finalize: function (e) { e && this._append(e); return this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (e) { return { encrypt: function (b, k, d) { return ("string" == typeof k ? c : a).encrypt(e, b, k, d) }, decrypt: function (b, k, d) { return ("string" == typeof k ? c : a).decrypt(e, b, k, d) } } } + }); d.StreamCipher = v.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }); var b = p.mode = {}, x = function (e, a, b) { + var c = this._iv; c ? this._iv = u : c = this._prevBlock; for (var d = 0; d < b; d++)e[a + d] ^= + c[d] + }, q = (d.BlockCipherMode = l.extend({ createEncryptor: function (e, a) { return this.Encryptor.create(e, a) }, createDecryptor: function (e, a) { return this.Decryptor.create(e, a) }, init: function (e, a) { this._cipher = e; this._iv = a } })).extend(); q.Encryptor = q.extend({ processBlock: function (e, a) { var b = this._cipher, c = b.blockSize; x.call(this, e, a, c); b.encryptBlock(e, a); this._prevBlock = e.slice(a, a + c) } }); q.Decryptor = q.extend({ + processBlock: function (e, a) { + var b = this._cipher, c = b.blockSize, d = e.slice(a, a + c); b.decryptBlock(e, a); x.call(this, + e, a, c); this._prevBlock = d + } + }); b = b.CBC = q; q = (p.pad = {}).Pkcs7 = { pad: function (a, b) { for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, l = [], n = 0; n < c; n += 4)l.push(d); c = s.create(l, c); a.concat(c) }, unpad: function (a) { a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255 } }; d.BlockCipher = v.extend({ + cfg: v.cfg.extend({ mode: b, padding: q }), reset: function () { + v.reset.call(this); var a = this.cfg, b = a.iv, a = a.mode; if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor; else c = a.createDecryptor, this._minBufferSize = 1; this._mode = c.call(a, + this, b && b.words) + }, _doProcessBlock: function (a, b) { this._mode.processBlock(a, b) }, _doFinalize: function () { var a = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { a.pad(this._data, this.blockSize); var b = this._process(!0) } else b = this._process(!0), a.unpad(b); return b }, blockSize: 4 + }); var n = d.CipherParams = l.extend({ init: function (a) { this.mixIn(a) }, toString: function (a) { return (a || this.formatter).stringify(this) } }), b = (p.format = {}).OpenSSL = { + stringify: function (a) { + var b = a.ciphertext; a = a.salt; return (a ? s.create([1398893684, + 1701076831]).concat(a).concat(b) : b).toString(r) + }, parse: function (a) { a = r.parse(a); var b = a.words; if (1398893684 == b[0] && 1701076831 == b[1]) { var c = s.create(b.slice(2, 4)); b.splice(0, 4); a.sigBytes -= 16 } return n.create({ ciphertext: a, salt: c }) } + }, a = d.SerializableCipher = l.extend({ + cfg: l.extend({ format: b }), encrypt: function (a, b, c, d) { d = this.cfg.extend(d); var l = a.createEncryptor(c, d); b = l.finalize(b); l = l.cfg; return n.create({ ciphertext: b, key: c, iv: l.iv, algorithm: a, mode: l.mode, padding: l.padding, blockSize: a.blockSize, formatter: d.format }) }, + decrypt: function (a, b, c, d) { d = this.cfg.extend(d); b = this._parse(b, d.format); return a.createDecryptor(c, d).finalize(b.ciphertext) }, _parse: function (a, b) { return "string" == typeof a ? b.parse(a, this) : a } + }), p = (p.kdf = {}).OpenSSL = { execute: function (a, b, c, d) { d || (d = s.random(8)); a = w.create({ keySize: b + c }).compute(a, d); c = s.create(a.words.slice(b), 4 * c); a.sigBytes = 4 * b; return n.create({ key: a, iv: c, salt: d }) } }, c = d.PasswordBasedCipher = a.extend({ + cfg: a.cfg.extend({ kdf: p }), encrypt: function (b, c, d, l) { + l = this.cfg.extend(l); d = l.kdf.execute(d, + b.keySize, b.ivSize); l.iv = d.iv; b = a.encrypt.call(this, b, c, d.key, l); b.mixIn(d); return b + }, decrypt: function (b, c, d, l) { l = this.cfg.extend(l); c = this._parse(c, l.format); d = l.kdf.execute(d, b.keySize, b.ivSize, c.salt); l.iv = d.iv; return a.decrypt.call(this, b, c, d.key, l) } + }) +}(); +(function () { + for (var u = CryptoJS, p = u.lib.BlockCipher, d = u.algo, l = [], s = [], t = [], r = [], w = [], v = [], b = [], x = [], q = [], n = [], a = [], c = 0; 256 > c; c++)a[c] = 128 > c ? c << 1 : c << 1 ^ 283; for (var e = 0, j = 0, c = 0; 256 > c; c++) { var k = j ^ j << 1 ^ j << 2 ^ j << 3 ^ j << 4, k = k >>> 8 ^ k & 255 ^ 99; l[e] = k; s[k] = e; var z = a[e], F = a[z], G = a[F], y = 257 * a[k] ^ 16843008 * k; t[e] = y << 24 | y >>> 8; r[e] = y << 16 | y >>> 16; w[e] = y << 8 | y >>> 24; v[e] = y; y = 16843009 * G ^ 65537 * F ^ 257 * z ^ 16843008 * e; b[k] = y << 24 | y >>> 8; x[k] = y << 16 | y >>> 16; q[k] = y << 8 | y >>> 24; n[k] = y; e ? (e = z ^ a[a[a[G ^ z]]], j ^= a[a[j]]) : e = j = 1 } var H = [0, 1, 2, 4, 8, + 16, 32, 64, 128, 27, 54], d = d.AES = p.extend({ + _doReset: function () { + for (var a = this._key, c = a.words, d = a.sigBytes / 4, a = 4 * ((this._nRounds = d + 6) + 1), e = this._keySchedule = [], j = 0; j < a; j++)if (j < d) e[j] = c[j]; else { var k = e[j - 1]; j % d ? 6 < d && 4 == j % d && (k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255]) : (k = k << 8 | k >>> 24, k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255], k ^= H[j / d | 0] << 24); e[j] = e[j - d] ^ k } c = this._invKeySchedule = []; for (d = 0; d < a; d++)j = a - d, k = d % 4 ? e[j] : e[j - 4], c[d] = 4 > d || 4 >= j ? k : b[l[k >>> 24]] ^ x[l[k >>> 16 & 255]] ^ q[l[k >>> + 8 & 255]] ^ n[l[k & 255]] + }, encryptBlock: function (a, b) { this._doCryptBlock(a, b, this._keySchedule, t, r, w, v, l) }, decryptBlock: function (a, c) { var d = a[c + 1]; a[c + 1] = a[c + 3]; a[c + 3] = d; this._doCryptBlock(a, c, this._invKeySchedule, b, x, q, n, s); d = a[c + 1]; a[c + 1] = a[c + 3]; a[c + 3] = d }, _doCryptBlock: function (a, b, c, d, e, j, l, f) { + for (var m = this._nRounds, g = a[b] ^ c[0], h = a[b + 1] ^ c[1], k = a[b + 2] ^ c[2], n = a[b + 3] ^ c[3], p = 4, r = 1; r < m; r++)var q = d[g >>> 24] ^ e[h >>> 16 & 255] ^ j[k >>> 8 & 255] ^ l[n & 255] ^ c[p++], s = d[h >>> 24] ^ e[k >>> 16 & 255] ^ j[n >>> 8 & 255] ^ l[g & 255] ^ c[p++], t = + d[k >>> 24] ^ e[n >>> 16 & 255] ^ j[g >>> 8 & 255] ^ l[h & 255] ^ c[p++], n = d[n >>> 24] ^ e[g >>> 16 & 255] ^ j[h >>> 8 & 255] ^ l[k & 255] ^ c[p++], g = q, h = s, k = t; q = (f[g >>> 24] << 24 | f[h >>> 16 & 255] << 16 | f[k >>> 8 & 255] << 8 | f[n & 255]) ^ c[p++]; s = (f[h >>> 24] << 24 | f[k >>> 16 & 255] << 16 | f[n >>> 8 & 255] << 8 | f[g & 255]) ^ c[p++]; t = (f[k >>> 24] << 24 | f[n >>> 16 & 255] << 16 | f[g >>> 8 & 255] << 8 | f[h & 255]) ^ c[p++]; n = (f[n >>> 24] << 24 | f[g >>> 16 & 255] << 16 | f[h >>> 8 & 255] << 8 | f[k & 255]) ^ c[p++]; a[b] = q; a[b + 1] = s; a[b + 2] = t; a[b + 3] = n + }, keySize: 8 + }); u.AES = p._createHelper(d) +})(); + +CryptoJS.encrypt = function (word, key, iv) { + return encrypt(word, key, iv) +} + +CryptoJS.decrypt = function (word, key, iv) { + return decrypt(word, key, iv) +} + +/** + * 加密 + * word:原密码 + * key :key + * iv : iv + */ +function encrypt (word, key, iv) { + key = CryptoJS.enc.Utf8.parse(key); + iv = CryptoJS.enc.Utf8.parse(iv); + var encrypted = CryptoJS.AES.encrypt(word, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + return encrypted.toString(); +} + +/** + * 解密 + * word:加密后的密码 + * key :key + * iv : iv + */ +function decrypt (word, key, iv) { + key = CryptoJS.enc.Utf8.parse(key); + iv = CryptoJS.enc.Utf8.parse(iv); + var decrypted = CryptoJS.AES.decrypt(word, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + decrypted = CryptoJS.enc.Utf8.stringify(decrypted); + return decrypted; +} +/** + * Electronic Codebook block mode. + */ +CryptoJS.mode.ECB = (function () { + var ECB = CryptoJS.lib.BlockCipherMode.extend(); + ECB.Encryptor = ECB.extend({ + processBlock: function (words, offset) { + this._cipher.encryptBlock(words, offset); + } + }); + ECB.Decryptor = ECB.extend({ + processBlock: function (words, offset) { + this._cipher.decryptBlock(words, offset); + } + }); + return ECB; +}()); +/** + * @example + * var CryptoJS = require('./util/aes.js') + * var key = CryptoJS.enc.Utf8.parse("key"); + * var iv = CryptoJS.enc.Utf8.parse("iv"); + * var pwd = CryptoJS.encrypt(this.data.pwdVal, key, iv) + * var original = CryptoJS.encrypt(pwd, key, iv) + */ +export default CryptoJS; \ No newline at end of file diff --git a/src/utils/chatEncrypt.js b/src/utils/chatEncrypt.js new file mode 100644 index 0000000..a364273 --- /dev/null +++ b/src/utils/chatEncrypt.js @@ -0,0 +1,18 @@ +import Crypto from '@/utils/chatCrypto' + +// 从环境变量读取(不提供默认值) +const key = Crypto.enc.Utf8.parse(import.meta.env.VITE_CHAT_AES_KEY) +const iv = Crypto.enc.Utf8.parse(import.meta.env.VITE_CHAT_AES_IV) + +// 加密(使用CBC模式) +export default function Encrypt(value) { + // 使用外部包中的AES的加密方法 + // value(加密内容)、key(密钥) + let encrypt = Crypto.AES.encrypt(value, key, { + iv, // 偏移量 + mode: Crypto.mode.CBC, // 模式(五种加密模式) + padding: Crypto.pad.Pkcs7 // 填充 + }) + // 将加密的内容转成字符串返回出去 + return encrypt.toString() +} diff --git a/src/utils/crypto.js b/src/utils/crypto.js new file mode 100644 index 0000000..13eb7ae --- /dev/null +++ b/src/utils/crypto.js @@ -0,0 +1,53 @@ +import CryptoJS from 'crypto-js' + +// AES CBC 加密,IV 拼接在密文前面,并进行 Base64 编码// AES CBC 加密,IV 拼接在密文前面,并进行 Base64 编码 +export function aesEncrypt(plainText, hexKey) { + // 转换密钥为WordArray + const key = CryptoJS.enc.Hex.parse(hexKey) + + // 生成一个随机的IV + const iv = generateRandomIV() // 生成 16 字节的随机 IV + + // 加密 + const encrypted = CryptoJS.AES.encrypt(plainText, key, { + iv, + padding: CryptoJS.pad.Pkcs7, + mode: CryptoJS.mode.CBC, + }) + + // 拼接IV和密文,IV在前,密文在后,最后Base64编码 + const ivAndCipherText = iv.concat(encrypted.ciphertext) + return CryptoJS.enc.Base64.stringify(ivAndCipherText) +} + +// AES CBC 解密,IV 在密文前面,并且 Base64 解码 +export function aesDecrypt(base64CipherText, hexKey) { + // 转换密钥为WordArray + const key = CryptoJS.enc.Hex.parse(hexKey) + + // Base64解码并转换为WordArray + const cipherParams = CryptoJS.enc.Base64.parse(base64CipherText) + + // 提取 IV(前 16 字节) + const iv = cipherParams.clone().words.slice(0, 4) // 16 字节的 IV 对应 4 个字(每个字 4 字节) + + // 提取密文 + const cipherText = cipherParams.clone().words.slice(4) // 从第 4 个字开始到最后的密文 + + // 解密 + const decrypted = CryptoJS.AES.decrypt({ ciphertext: CryptoJS.lib.WordArray.create(cipherText) }, key, { + iv: CryptoJS.lib.WordArray.create(iv), + padding: CryptoJS.pad.Pkcs7, + mode: CryptoJS.mode.CBC, + }) + + // 返回解密后的明文 + return decrypted.toString(CryptoJS.enc.Utf8) +} +function generateRandomIV() { + const iv = [] + for (let i = 0; i < 16; i++) { // 16 字节的 IV + iv.push(Math.floor(Math.random() * 256)) // 0-255 的随机数 + } + return CryptoJS.enc.Hex.parse(iv.map(b => b.toString(16).padStart(2, '0')).join('')) +} diff --git a/src/utils/zoomAdapter.js b/src/utils/zoomAdapter.js new file mode 100644 index 0000000..6098a76 --- /dev/null +++ b/src/utils/zoomAdapter.js @@ -0,0 +1,109 @@ +/** + * 简化版缩放适配工具 + */ +class ZoomAdapter { + constructor() { + // ===== 可调整的配置参数 ===== + this.maxZoom = 3; // 触发调整的缩放阈值(默认3倍) + this.targetZoom = 2; // 调整后的目标缩放(默认2倍) + this.isInitialized = false; + } + + init() { + if (this.isInitialized) return; + + // 绑定事件 + window.addEventListener('resize', () => this.checkZoom()); + window.addEventListener('orientationchange', () => { + setTimeout(() => this.checkZoom(), 500); + }); + + // 防止双击缩放 + let lastTouchEnd = 0; + document.addEventListener('touchend', (event) => { + const now = Date.now(); + if (now - lastTouchEnd <= 300) { + event.preventDefault(); + } + lastTouchEnd = now; + }, false); + + this.checkZoom(); + this.isInitialized = true; + } + + getCurrentZoom() { + return Math.max( + window.outerWidth / window.innerWidth, + window.devicePixelRatio, + window.screen.width / window.innerWidth + ); + } + + checkZoom() { + const zoom = this.getCurrentZoom(); + + if (zoom > this.maxZoom) { + this.adjust(zoom); + } else { + this.reset(); + } + } + + adjust(zoom) { + try { + // 计算调整比例:目标缩放 / 当前缩放 + const ratio = this.targetZoom / zoom; + + // 应用调整 + document.body.style.transform = `scale(${ratio})`; + document.body.style.transformOrigin = 'top left'; + document.body.style.width = `${100 / ratio}%`; + document.body.style.height = `${100 / ratio}%`; + } catch (e) { + console.warn('缩放调整失败:', e); + } + } + + reset() { + try { + document.body.style.transform = ''; + document.body.style.transformOrigin = ''; + document.body.style.width = ''; + document.body.style.height = ''; + } catch (e) { + console.warn('缩放重置失败:', e); + } + } + + addZoomStyles() { + const style = document.createElement('style'); + style.id = 'zoom-adapter-styles'; + style.textContent = ` + .zoom-adaptive { + font-size: 16px !important; + line-height: 1.5 !important; + } + .zoom-adaptive input, + .zoom-adaptive button, + .zoom-adaptive select, + .zoom-adaptive textarea { + font-size: 16px !important; + min-height: 44px !important; + padding: 8px 12px !important; + } + .zoom-adaptive img { + max-width: 100% !important; + height: auto !important; + } + .zoom-adaptive table { + max-width: 100% !important; + overflow-x: auto !important; + } + `; + document.head.appendChild(style); + } +} + +export default new ZoomAdapter(); +export { ZoomAdapter }; \ No newline at end of file diff --git a/src/views/Agent.vue b/src/views/Agent.vue new file mode 100644 index 0000000..ea65bac --- /dev/null +++ b/src/views/Agent.vue @@ -0,0 +1,521 @@ + + + + + diff --git a/src/views/AgentManageAgreement.vue b/src/views/AgentManageAgreement.vue new file mode 100644 index 0000000..3d3b92d --- /dev/null +++ b/src/views/AgentManageAgreement.vue @@ -0,0 +1,852 @@ + + + + + diff --git a/src/views/AgentPromoteDetails.vue b/src/views/AgentPromoteDetails.vue new file mode 100644 index 0000000..661cc5d --- /dev/null +++ b/src/views/AgentPromoteDetails.vue @@ -0,0 +1,133 @@ + + + + + \ No newline at end of file diff --git a/src/views/AgentPromotionHistory.vue b/src/views/AgentPromotionHistory.vue new file mode 100644 index 0000000..25a0d23 --- /dev/null +++ b/src/views/AgentPromotionHistory.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/src/views/AgentRewardsDetails.vue b/src/views/AgentRewardsDetails.vue new file mode 100644 index 0000000..534b2e4 --- /dev/null +++ b/src/views/AgentRewardsDetails.vue @@ -0,0 +1,269 @@ + + + + + \ No newline at end of file diff --git a/src/views/AgentServiceAgreement.vue b/src/views/AgentServiceAgreement.vue new file mode 100644 index 0000000..91ba4fd --- /dev/null +++ b/src/views/AgentServiceAgreement.vue @@ -0,0 +1,278 @@ + + + + + \ No newline at end of file diff --git a/src/views/AgentSystemGuide.vue b/src/views/AgentSystemGuide.vue new file mode 100644 index 0000000..6944ac1 --- /dev/null +++ b/src/views/AgentSystemGuide.vue @@ -0,0 +1,598 @@ + + + + + diff --git a/src/views/AgentUpgrade.vue b/src/views/AgentUpgrade.vue new file mode 100644 index 0000000..6096291 --- /dev/null +++ b/src/views/AgentUpgrade.vue @@ -0,0 +1,740 @@ + + + + + diff --git a/src/views/Authorization.vue b/src/views/Authorization.vue new file mode 100644 index 0000000..8ff6246 --- /dev/null +++ b/src/views/Authorization.vue @@ -0,0 +1,200 @@ + + + + diff --git a/src/views/Complaint.vue b/src/views/Complaint.vue new file mode 100644 index 0000000..c056e6a --- /dev/null +++ b/src/views/Complaint.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/views/Example.vue b/src/views/Example.vue new file mode 100644 index 0000000..acaf4da --- /dev/null +++ b/src/views/Example.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/views/Help.vue b/src/views/Help.vue new file mode 100644 index 0000000..57a2adc --- /dev/null +++ b/src/views/Help.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/src/views/HelpDetail.vue b/src/views/HelpDetail.vue new file mode 100644 index 0000000..0e30c11 --- /dev/null +++ b/src/views/HelpDetail.vue @@ -0,0 +1,78 @@ + + + + + \ No newline at end of file diff --git a/src/views/HelpGuide.vue b/src/views/HelpGuide.vue new file mode 100644 index 0000000..d95b8cb --- /dev/null +++ b/src/views/HelpGuide.vue @@ -0,0 +1,103 @@ + + + + + \ No newline at end of file diff --git a/src/views/HistoryQuery.vue b/src/views/HistoryQuery.vue new file mode 100644 index 0000000..48d5609 --- /dev/null +++ b/src/views/HistoryQuery.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/src/views/Inquire.vue b/src/views/Inquire.vue new file mode 100644 index 0000000..f2cf0f4 --- /dev/null +++ b/src/views/Inquire.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/src/views/Invitation.vue b/src/views/Invitation.vue new file mode 100644 index 0000000..3b722d1 --- /dev/null +++ b/src/views/Invitation.vue @@ -0,0 +1,398 @@ + + + + + diff --git a/src/views/InvitationAgentApply.vue b/src/views/InvitationAgentApply.vue new file mode 100644 index 0000000..1deabb0 --- /dev/null +++ b/src/views/InvitationAgentApply.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/views/InvitationPage.vue b/src/views/InvitationPage.vue new file mode 100644 index 0000000..eb8289c --- /dev/null +++ b/src/views/InvitationPage.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/views/Login.vue b/src/views/Login.vue new file mode 100644 index 0000000..35fc7fa --- /dev/null +++ b/src/views/Login.vue @@ -0,0 +1,349 @@ + + + + + diff --git a/src/views/Me/BalanceCard.vue b/src/views/Me/BalanceCard.vue new file mode 100644 index 0000000..cfc570b --- /dev/null +++ b/src/views/Me/BalanceCard.vue @@ -0,0 +1,73 @@ + + + + + + diff --git a/src/views/Me/MenuList.vue b/src/views/Me/MenuList.vue new file mode 100644 index 0000000..af75eca --- /dev/null +++ b/src/views/Me/MenuList.vue @@ -0,0 +1,142 @@ + + + diff --git a/src/views/Me/NonAgentView.vue b/src/views/Me/NonAgentView.vue new file mode 100644 index 0000000..636d594 --- /dev/null +++ b/src/views/Me/NonAgentView.vue @@ -0,0 +1,130 @@ + + + diff --git a/src/views/Me/ProfileHeader.vue b/src/views/Me/ProfileHeader.vue new file mode 100644 index 0000000..7a13115 --- /dev/null +++ b/src/views/Me/ProfileHeader.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/views/Me/PromotionIncome.vue b/src/views/Me/PromotionIncome.vue new file mode 100644 index 0000000..922f5f6 --- /dev/null +++ b/src/views/Me/PromotionIncome.vue @@ -0,0 +1,55 @@ + + + diff --git a/src/views/Me/index.vue b/src/views/Me/index.vue new file mode 100644 index 0000000..ccfdfb4 --- /dev/null +++ b/src/views/Me/index.vue @@ -0,0 +1,124 @@ + + + diff --git a/src/views/NotFound.vue b/src/views/NotFound.vue new file mode 100644 index 0000000..7467fa6 --- /dev/null +++ b/src/views/NotFound.vue @@ -0,0 +1,188 @@ + + + + + \ No newline at end of file diff --git a/src/views/PaymentResult.vue b/src/views/PaymentResult.vue new file mode 100644 index 0000000..621b483 --- /dev/null +++ b/src/views/PaymentResult.vue @@ -0,0 +1,532 @@ + + + + + diff --git a/src/views/PrivacyPolicy.vue b/src/views/PrivacyPolicy.vue new file mode 100644 index 0000000..7fb6ab6 --- /dev/null +++ b/src/views/PrivacyPolicy.vue @@ -0,0 +1,472 @@ + + + + + diff --git a/src/views/Promote.vue b/src/views/Promote.vue new file mode 100644 index 0000000..b137715 --- /dev/null +++ b/src/views/Promote.vue @@ -0,0 +1,756 @@ + + + + + diff --git a/src/views/PromotePage.vue b/src/views/PromotePage.vue new file mode 100644 index 0000000..38a539e --- /dev/null +++ b/src/views/PromotePage.vue @@ -0,0 +1,418 @@ + + + + + + +{ + "layout": "home" +} diff --git a/src/views/PromotePoster.vue b/src/views/PromotePoster.vue new file mode 100644 index 0000000..24e3b1c --- /dev/null +++ b/src/views/PromotePoster.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/src/views/PromotionInquire.vue b/src/views/PromotionInquire.vue new file mode 100644 index 0000000..bc60c63 --- /dev/null +++ b/src/views/PromotionInquire.vue @@ -0,0 +1,66 @@ + + + \ No newline at end of file diff --git a/src/views/Register.vue b/src/views/Register.vue new file mode 100644 index 0000000..ad5d9eb --- /dev/null +++ b/src/views/Register.vue @@ -0,0 +1,429 @@ + + + + + diff --git a/src/views/Report.vue b/src/views/Report.vue new file mode 100644 index 0000000..3f85288 --- /dev/null +++ b/src/views/Report.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/src/views/ReportShare.vue b/src/views/ReportShare.vue new file mode 100644 index 0000000..0559bb3 --- /dev/null +++ b/src/views/ReportShare.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/src/views/Service.vue b/src/views/Service.vue new file mode 100644 index 0000000..e36dab3 --- /dev/null +++ b/src/views/Service.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/views/SubordinateDetail.vue b/src/views/SubordinateDetail.vue new file mode 100644 index 0000000..c50aaf6 --- /dev/null +++ b/src/views/SubordinateDetail.vue @@ -0,0 +1,306 @@ + + + + + diff --git a/src/views/SubordinateList.vue b/src/views/SubordinateList.vue new file mode 100644 index 0000000..89107db --- /dev/null +++ b/src/views/SubordinateList.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/src/views/TeamList.vue b/src/views/TeamList.vue new file mode 100644 index 0000000..a02253a --- /dev/null +++ b/src/views/TeamList.vue @@ -0,0 +1,401 @@ + + + + + diff --git a/src/views/UpgradeSubordinate.vue b/src/views/UpgradeSubordinate.vue new file mode 100644 index 0000000..f61c254 --- /dev/null +++ b/src/views/UpgradeSubordinate.vue @@ -0,0 +1,573 @@ + + + + + diff --git a/src/views/UserAgreement.vue b/src/views/UserAgreement.vue new file mode 100644 index 0000000..d2bdb2a --- /dev/null +++ b/src/views/UserAgreement.vue @@ -0,0 +1,287 @@ + + + diff --git a/src/views/VantThemeTest.vue b/src/views/VantThemeTest.vue new file mode 100644 index 0000000..1124927 --- /dev/null +++ b/src/views/VantThemeTest.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/views/Withdraw.vue b/src/views/Withdraw.vue new file mode 100644 index 0000000..a5f20da --- /dev/null +++ b/src/views/Withdraw.vue @@ -0,0 +1,556 @@ + + + + + diff --git a/src/views/WithdrawDetails.vue b/src/views/WithdrawDetails.vue new file mode 100644 index 0000000..a1dd248 --- /dev/null +++ b/src/views/WithdrawDetails.vue @@ -0,0 +1,219 @@ + + + + + diff --git a/src/views/index.vue b/src/views/index.vue new file mode 100644 index 0000000..f375058 --- /dev/null +++ b/src/views/index.vue @@ -0,0 +1,331 @@ + + + + + + +{ + "layout": "home" +} diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..d0b6ab6 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,114 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./index.html", // 如果是 Vite 项目 + "./src/**/*.{vue,js,ts,jsx,tsx}", + ], + theme: { + extend: { + colors: { + // 主题色系 + primary: { + DEFAULT: "#6BA8E5", + second: "#498AFE", + 50: "#F0F7FD", + 100: "#E1EFFB", + 200: "#C3DFF7", + 300: "#A5CFF3", + 400: "#87BFF0", + 500: "#6BA8E5", + 600: "#709EC6", + 700: "#547695", + 800: "#384F63", + 900: "#1C2732", + }, + // 语义化颜色 + success: { + DEFAULT: "#07c160", + 50: "#f0f9f0", + 100: "#e1f5e1", + 200: "#c3ebc3", + 300: "#a5e1a5", + 400: "#87d787", + 500: "#07c160", + 600: "#059a4c", + 700: "#047338", + 800: "#024c24", + 900: "#012510", + }, + warning: { + DEFAULT: "#ff976a", + 50: "#fff5f0", + 100: "#ffebe1", + 200: "#ffd7c3", + 300: "#ffc3a5", + 400: "#ffaf87", + 500: "#ff976a", + 600: "#cc7955", + 700: "#995b40", + 800: "#663d2a", + 900: "#331f15", + }, + danger: { + DEFAULT: "#ee0a24", + 50: "#fdf2f2", + 100: "#fce5e5", + 200: "#f9caca", + 300: "#f6b0b0", + 400: "#f39595", + 500: "#ee0a24", + 600: "#be081d", + 700: "#8f0616", + 800: "#5f040e", + 900: "#300207", + }, + // 中性色 + gray: { + 50: "#fafafa", + 100: "#f5f5f5", + 200: "#e5e5e5", + 300: "#d4d4d4", + 400: "#a3a3a3", + 500: "#737373", + 600: "#525252", + 700: "#404040", + 800: "#262626", + 900: "#171717", + }, + // 文本颜色 + text: { + primary: "#323233", + secondary: "#646566", + tertiary: "#969799", + }, + // 背景颜色 + background: { + DEFAULT: "#ffffff", + light: "#fafafa", + dark: "#f8f8f8", + }, + // 边框颜色 + border: "#ebedf0", + // 活跃状态颜色 + active: "#f2f3f5", + }, + fontFamily: { + sans: [ + "Inter", + "-apple-system", + "BlinkMacSystemFont", + "Segoe UI", + "Roboto", + "Oxygen", + "Ubuntu", + "Cantarell", + "Fira Sans", + "Droid Sans", + "Helvetica Neue", + "sans-serif", + ], + }, + }, + }, + plugins: [], +}; diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..6b5e5fd --- /dev/null +++ b/vite.config.js @@ -0,0 +1,82 @@ +import { fileURLToPath, URL } from "node:url"; +import AutoImport from "unplugin-auto-import/vite"; +import Components from "unplugin-vue-components/vite"; +import { VantResolver } from "@vant/auto-import-resolver"; +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; +import vueJsx from "@vitejs/plugin-vue-jsx"; +import vueDevTools from "vite-plugin-vue-devtools"; + +// https://vite.dev/config/ +export default defineConfig({ + server: { + host: "0.0.0.0", // 设置为 0.0.0.0 允许局域网访问 + port: 5678, // 自定义端口号,可选 + strictPort: true, // 如果端口被占用则抛出错误而不是使用下一个可用端口 + proxy: { + "/api/v1": { + target: "http://127.0.0.1:8888", // 本地接口地址 + // target: "https://yuyuecha.com", // 本地接口地址 + changeOrigin: true, + rewrite: (path) => path, // 可选:确保路径不被修改 + }, + }, + }, + build: { + // 构建优化 + target: "es2015", // 支持更多浏览器 + minify: "terser", // 使用terser进行压缩 + terserOptions: { + compress: { + drop_console: true, // 移除console.log + drop_debugger: true, // 移除debugger + }, + }, + rollupOptions: { + output: { + // 代码分割策略 + manualChunks: { + vendor: ["vue", "vue-router", "pinia"], + vant: ["vant"], + utils: ["axios", "lodash", "crypto-js"], + charts: ["echarts", "vue-echarts"], + }, + // 文件名策略 + chunkFileNames: "assets/js/[name]-[hash].js", + entryFileNames: "assets/js/[name]-[hash].js", + assetFileNames: "assets/[ext]/[name]-[hash].[ext]", + }, + }, + // 启用CSS代码分割 + cssCodeSplit: true, + // 设置资源内联阈值 + assetsInlineLimit: 4096, + }, + plugins: [ + vue(), + AutoImport({ + imports: [ + "vue", // 自动引入 Vue Composition API,如 ref、computed、onMounted 等 + "vue-router", // 自动引入 vue-router 中的方法,如 useRoute、useRouter 等(可选) + "@vueuse/core", // 自动引入 VueUse 中的工具函数(可选) + ], + dts: "src/auto-imports.d.ts", // 生成类型定义文件(可选) + dirs: ["src/composables", "src/stores", "src/components"], + resolvers: [VantResolver()], + }), + Components({ + resolvers: [VantResolver()], + }), + vueJsx(), + // vueDevTools(), + ], + resolve: { + alias: { + "@": fileURLToPath(new URL("./src", import.meta.url)), + }, + }, + // 优化依赖预构建 + optimizeDeps: { + include: ["vue", "vue-router", "pinia", "vant", "axios"], + }, +}); diff --git a/微信授权流程设计文档.md b/微信授权流程设计文档.md new file mode 100644 index 0000000..84a0051 --- /dev/null +++ b/微信授权流程设计文档.md @@ -0,0 +1,256 @@ +# 微信 H5 授权流程重构 - 设计文档 + +## 📋 核心业务需求 + +在微信 H5 环境中,**整个应用在没有有效 token 时,都需要进行微信授权登录**。授权完成后,用户应该被重定向回他们尝试访问的原始页面。 + +--- + +## 🔄 流程设计 + +### **完整的授权流程图** + +``` +┌─────────────────────────────────────────────────────────────┐ +│ 用户在微信中访问任意页面(无 token) │ +└──────────────────┬──────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ 路由守卫检测:微信 + 无 token │ +│ → 保存目标路由到 authStore.pendingRoute │ +│ → 生成微信授权 URL │ +│ → window.location.href = 授权 URL (不调用 next()) │ +└──────────────────┬──────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ 跳转到微信授权页面 │ +│ https://open.weixin.qq.com/connect/oauth2/authorize?... │ +└──────────────────┬──────────────────────────────────────────┘ + │ + ┌─────────┴─────────┐ + │ 用户点击"同意" │ + └────────┬──────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ 微信回调:redirectUri?code=xxx&state=yyy │ +│ 浏览器重新加载应用,URL 中包含 code/state 参数 │ +└──────────────────┬──────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ App.vue onMounted 检测到 code + state 参数 │ +│ → 调用 handleWeixinAuthCallback(code) │ +└──────────────────┬──────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ 1. 调用后端接口 /user/wxh5Auth 交换 token │ +│ 2. 保存 token 到 localStorage │ +│ 3. 清理 URL 中的 code/state 参数 │ +│ 4. 获取用户信息 │ +│ 5. 标记授权完成 authStore.completeWeixinAuth() │ +└──────────────────┬──────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ 获取 pendingRoute,重定向回原始页面 │ +│ router.replace(pendingRoute) │ +│ 如果没有 pendingRoute,重定向到首页 "/" │ +└──────────────────┬──────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ ✅ 授权完成,用户看到原始页面 │ +└─────────────────────────────────────────────────────────────┘ +``` + +--- + +## 📁 关键文件修改 + +### **1. `src/router/index.js` - 路由守卫** + +**关键变化:** +- 检测到 **微信 + 无 token** 的情况 +- **直接发起授权**(调用 `window.location.href`) +- **不调用 `next()`**,完全停止导航 +- 授权 URL 中的 redirectUri 指向当前页面(清理旧的 code/state 参数) + +**代码片段:** +```javascript +if (isWeChat.value && !isAuthenticated && !isTokenExpired) { + // 保存目标路由 + authStore.startWeixinAuth(to); + + // 生成授权 URL + const appId = import.meta.env.VITE_WECHAT_APP_ID; + const url = new URL(window.location.href); + const params = new URLSearchParams(url.search); + params.delete("code"); + params.delete("state"); + const cleanUrl = `${url.origin}${url.pathname}${params.toString() ? "?" + params.toString() : ""}`; + const redirectUri = encodeURIComponent(cleanUrl); + const weixinAuthUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=snsapi_base&state=snsapi_base#wechat_redirect`; + + // 直接跳转,不调用 next() + window.location.href = weixinAuthUrl; + return; +} +``` + +### **2. `src/App.vue` - 授权回调处理** + +**关键职责:** +1. **检测回调**:读取 URL 中的 code/state 参数 +2. **处理回调**:调用 `/user/wxh5Auth` 交换 token +3. **恢复导航**:使用保存的 pendingRoute 重定向用户 + +**核心函数:`handleWeixinAuthCallback(code)`** +```javascript +const handleWeixinAuthCallback = async (code) => { + // 1. 交换 token + const { data, error } = await useApiFetch("/user/wxh5Auth").post({ code }).json(); + + // 2. 保存 token + localStorage.setItem("token", data.value.data.accessToken); + localStorage.setItem("refreshAfter", data.value.data.refreshAfter); + localStorage.setItem("accessExpire", data.value.data.accessExpire); + + // 3. 清理 URL + const url = new URL(window.location.href); + const params = new URLSearchParams(url.search); + params.delete("code"); + params.delete("state"); + window.history.replaceState({}, "", newUrl); + + // 4. 获取用户信息 + await userStore.fetchUserInfo(); + + // 5. 标记授权完成 + authStore.completeWeixinAuth(); + + // 6. 重定向回 pendingRoute + const pendingRoute = authStore.pendingRoute; + await router.replace(pendingRoute || "/"); +}; +``` + +### **3. `src/stores/authStore.js` - 授权状态管理** + +**关键方法:** + +| 方法 | 作用 | +|------|------| +| `startWeixinAuth(targetRoute)` | 开始授权,保存目标路由 | +| `completeWeixinAuth()` | 标记授权完成 | +| `clearPendingRoute()` | 清除待处理路由 | +| `resetAuthState()` | 重置所有授权状态 | +| `restoreFromStorage()` | 页面刷新后恢复状态 | + +--- + +## 🎯 核心特性 + +### **1. 同步流程控制** +- ❌ **不使用** `watch` 监听 state 的变化 +- ❌ **不使用** 异步的 route guard + next() 来触发授权 +- ✅ **直接** 在 route guard 中调用 `window.location.href` 发起授权 + +**为什么?** +- Watch 是异步的,可能被路由完成打断 +- next() 后可能路由已经切换,导致授权流程混乱 +- 直接跳转 URL 更加可靠和同步 + +### **2. 状态持久化** +- 授权开始时保存到 localStorage +- 页面刷新时自动恢复状态 +- 防止超时(30秒)导致的无限授权循环 + +### **3. URL 参数清理** +- 每次发起授权前,都清理 URL 中旧的 code/state 参数 +- 防止参数被重复编码进 redirectUri +- 微信回调时才注入新的 code/state + +### **4. 目标页面恢复** +- 路由守卫保存用户尝试访问的页面 +- 授权完成后自动重定向到该页面 +- 用户无感知的完整授权体验 + +--- + +## 🔐 场景处理 + +### **场景 1:无 token + 访问开放页面** +``` +用户访问 "/" → 微信检测无 token → 发起授权 → 授权完成后回到首页 +``` + +### **场景 2:无 token + 访问推广链接** +``` +用户访问 "/agent/promotionInquire/abc123" + → 微信检测无 token + → 保存 pendingRoute = "/agent/promotionInquire/abc123" + → 发起授权 + → 授权完成后回到 "/agent/promotionInquire/abc123" +``` + +### **场景 3:有效 token + 访问任意页面** +``` +用户有 token 且未过期 → 路由守卫放行 → 直接加载页面,无授权 +``` + +### **场景 4:Token 过期 + 访问需登录页面** +``` +用户在非微信环境 → 检测到 token 过期 → 跳转登录页面 +``` + +### **场景 5:授权超时** +``` +用户授权流程中,30 秒内未完成 → 自动重置状态 → 页面刷新时重新授权 +``` + +--- + +## 🐛 常见问题排查 + +### **Q1:为什么授权后没有跳到原页面?** +**A:** 检查 authStore 中是否有 pendingRoute +```javascript +console.log('pendingRoute:', authStore.pendingRoute); +``` + +### **Q2:为什么一直在授权页面循环?** +**A:** 可能是授权回调处理失败。检查: +1. 后端 `/user/wxh5Auth` 接口是否正确返回 token +2. Token 是否正确保存到 localStorage +3. URL 中的 code/state 是否正确清理 + +### **Q3:为什么刷新页面后授权状态丢失?** +**A:** authStore.restoreFromStorage() 应该在 onMounted 中被调用。检查: +```javascript +authStore.restoreFromStorage(); // 这行很重要! +``` + +### **Q4:在 PC 上测试,为什么无法触发授权?** +**A:** 授权只在微信环境中触发(isWeChat.value === true)。在 PC 上: +- 访问需登录的页面 → 跳转登录页 +- 访问开放页面 → 正常加载 + +--- + +## 📝 总结 + +这个重构的核心思想是: +1. **路由守卫 = 决策者**:检测到需要授权就立即发起 +2. **App.vue = 处理器**:处理授权回调和状态恢复 +3. **AuthStore = 状态管理**:保存和恢复授权相关的状态 +4. **同步流程 = 高可靠性**:避免异步竞态条件 + +通过这个设计,微信授权流程变得: +- ✅ 清晰易懂 +- ✅ 可靠稳定 +- ✅ 易于测试和调试 +- ✅ 完整的用户体验 diff --git a/微信授权重定向问题分析与修复.md b/微信授权重定向问题分析与修复.md new file mode 100644 index 0000000..8227821 --- /dev/null +++ b/微信授权重定向问题分析与修复.md @@ -0,0 +1,121 @@ +# 微信授权重定向问题分析与修复 + +## 问题描述 +微信授权回调成功后,虽然 `pendingRoute` 有正确的值,回调成功也能跳转到应该到达的页面(如 `promotionInquire`),但在加载该页面后,又会自动跳转到首页。 + +## 根本原因分析 + +### 问题 1: pendingRoute 清除时序错误 ❌ +**位置**: `src/App.vue` 第 69-72 行 + +**原始代码**: +```javascript +if (pendingRoute) { + authStore.clearPendingRoute(); // ❌ 先清除 + await router.replace(pendingRoute); // 用已清空的 null 值跳转 +} +``` + +**问题**: +- `clearPendingRoute()` 将 `authStore.pendingRoute` 设为 `null` +- 之后 `router.replace(pendingRoute)` 使用的是已清空的 `null` 值 +- 导致实际跳转到 `undefined` 而非目标路由 + +**修复**: 先跳转再清除 ✅ + +### 问题 2: 路由守卫重复授权防护缺失 ❌ +**位置**: `src/router/index.js` 第 428-444 行 + +**问题**: +- 当用户在授权完成后,路由守卫再次执行时 +- 如果 `isWeChat.value && !isAuthenticated` 条件满足 +- 会重新触发授权流程,导致页面跳转 + +**原因**: +- `authStore.isWeixinAuthing` 和 `authStore.weixinAuthComplete` 状态未被路由守卫检查 +- 虽然 token 已保存,但守卫仍可能因某些时序问题再次触发授权 + +**修复**: 在路由守卫中增加授权状态检查 ✅ + +### 问题 3: localStorage 同步问题 +**位置**: `src/stores/authStore.js` + +**问题**: +- 清除 `pendingRoute` 时,可能只清除内存状态,localStorage 可能残留数据 +- 页面刷新时恢复的数据可能不完整 + +**修复**: 确保内存和 localStorage 同步清除 ✅ + +## 修复清单 + +### ✅ 修复 1: App.vue 中的时序问题 +```javascript +if (pendingRoute) { + // ✅ 先跳转 + await router.replace(pendingRoute); + // ✅ 再清除 + authStore.clearPendingRoute(); +} +``` + +### ✅ 修复 2: 路由守卫的防护检查 +在路由守卫中增加: +```javascript +if (isWeChat.value && !isAuthenticated && !isTokenExpired) { + // ✨ 新增:检查是否正在授权或已完成授权 + if (authStore.isWeixinAuthing || authStore.weixinAuthComplete) { + console.warn("⚠️ WeChat auth already in progress or completed"); + NProgress.done(); + next(); + return; + } + // ... 继续原有逻辑 +} +``` + +### ✅ 修复 3: authStore 中的日志和同步 +增强 `clearPendingRoute()` 和 `restoreFromStorage()` 方法的日志记录和错误处理。 + +### ✅ 修复 4: PromotionInquire.vue 中的延迟处理 +添加延迟以确保页面完全加载后再进行任何路由跳转: +```javascript +function isFinishPayment() { + const query = new URLSearchParams(window.location.search); + let orderNo = query.get("out_trade_no"); + if (orderNo) { + // ✨ 延迟 100ms 确保页面加载完成 + setTimeout(() => { + router.push({ path: "/report", query: { orderNo } }); + }, 100); + } +} +``` + +## 调试建议 + +### 观察日志的关键点: +1. **微信授权开始**: 看是否出现 "Triggering WeChat auth from route guard" +2. **Token 保存**: 看是否出现 "✅ Token saved successfully" +3. **用户信息加载**: 看 "✅ User info fetched" 是否成功 +4. **pendingRoute 获取**: 看 "🎯 pendingRoute:" 后面的值 +5. **导航执行**: 看 "🚀 Navigating to pendingRoute:" 和 "✅ Navigated to pendingRoute" +6. **是否重复授权**: 看是否出现 "⚠️ WeChat auth already in progress" + +### 测试步骤: +1. 在微信中打开推广链接: `https://xxx.com/agent/promotionInquire/abc123` +2. 观察控制台日志,确保看到上述所有成功日志 +3. 验证最终页面是 `promotionInquire` 而非首页 + +## 修复文件列表 +- ✅ `src/App.vue` - 修复 pendingRoute 时序问题 +- ✅ `src/router/index.js` - 增强路由守卫防护 +- ✅ `src/stores/authStore.js` - 改进日志和同步 +- ✅ `src/views/PromotionInquire.vue` - 添加延迟处理 + +## 总结 +这个问题是由多个时序和状态管理问题联合造成的: +1. pendingRoute 被过早清除导致跳转失败 +2. 路由守卫缺少防护措施可能重复授权 +3. 状态同步不完整可能导致恢复失败 + +通过修复这些问题,应该能够确保微信授权后正确重定向到目标页面。