From f37e0dd927931dedfae6367999e5cd8a3b818989 Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Sat, 4 Jan 2025 00:38:57 +0800 Subject: [PATCH] v1.0.0 --- index.html | 11 +- src/App.vue | 35 +- src/assets/base.css | 6 +- src/assets/images/ai_picture.webp | Bin 0 -> 53158 bytes src/assets/images/banner.png | Bin 0 -> 134065 bytes src/assets/images/baogao-icon.png | Bin 0 -> 20154 bytes src/assets/images/bg_2.png | Bin 0 -> 37001 bytes src/assets/images/bg_icon.png | Bin 0 -> 20154 bytes src/assets/images/icon_1.png | Bin 0 -> 7706 bytes src/assets/images/icon_2.png | Bin 0 -> 6571 bytes src/assets/images/icon_3.png | Bin 0 -> 10297 bytes src/assets/images/icon_4.png | Bin 0 -> 11258 bytes src/assets/images/index_icon_1.png | Bin 0 -> 116596 bytes src/assets/images/index_icon_2.png | Bin 0 -> 11713 bytes src/assets/images/index_icon_3.png | Bin 0 -> 44853 bytes src/assets/images/index_icon_4.png | Bin 0 -> 11449 bytes src/assets/images/index_icon_4_1.png | Bin 0 -> 11686 bytes src/assets/images/index_icon_5.png | Bin 0 -> 9757 bytes src/assets/images/index_icon_6.png | Bin 0 -> 9659 bytes src/assets/images/index_icon_7.png | Bin 0 -> 9346 bytes src/assets/images/liu.png | Bin 0 -> 73278 bytes src/assets/images/llqdk.jpg | Bin 0 -> 64885 bytes src/assets/images/login_bg.png | Bin 0 -> 518772 bytes src/assets/images/logo copy.png | Bin 0 -> 118725 bytes src/assets/images/logo.png | Bin 0 -> 118725 bytes src/assets/images/logo_title.png | Bin 0 -> 16930 bytes src/assets/images/pendding.svg | 87 ++++ .../images/public_security_record_icon.png | Bin 0 -> 11143 bytes src/assets/uni-webview.js | 1 + src/auto-imports.d.ts | 2 + src/components/Authorization.vue | 4 +- src/components/LEmpty.vue | 4 +- src/components/LPendding.vue | 71 +++ src/components/LTitle.vue | 6 +- src/components/Payment.vue | 65 ++- src/components/WechatOverlay.vue | 72 +++ src/composables/useApiFetch.js | 23 +- src/composables/useUni.js | 49 -- src/composables/useWebView.js | 115 ++++- src/layouts/GlobalLayout.vue | 93 ++++ src/layouts/HomeLayout.vue | 139 +++++ src/layouts/PageLayout.vue | 35 ++ src/main.js | 2 - src/router/index.js | 184 ++++--- src/ui/CBad.vue | 56 +- src/ui/CCAR061.vue | 38 ++ src/ui/CDualMarriage.vue | 21 - src/ui/CFIN019.vue | 39 +- src/ui/CG02BJ02.vue | 11 +- src/ui/CG03HZ01.vue | 19 +- src/ui/CG19BJ02.vue | 1 - src/ui/CG20GZ01.vue | 24 +- src/ui/CIDCardTwoElements.vue | 15 +- src/ui/CMarriage.vue | 28 +- src/ui/CP_C_B332.vue | 24 +- src/ui/CPhoneThreeElements.vue | 20 +- src/ui/CPhoneTwoElements.vue | 11 - src/utils/chatCrypto.js | 174 +++++++ src/utils/chatEncrypt.js | 19 + src/views/Ai.vue | 195 +++++++ src/views/Authorization.vue | 204 ++++---- src/views/Complaint.vue | 2 - src/views/Example copy.vue | 261 ++++++++++ src/views/Example.vue | 481 ++++++++++-------- src/views/HistoryQuery.vue | 130 +++++ src/views/Home.vue | 68 +-- src/views/Inquire.vue | 113 ++-- src/views/Login.vue | 209 ++++++++ src/views/Me.vue | 129 +++++ src/views/PrivacyPolicy.vue | 210 +------- src/views/Report.vue | 215 +++++++- src/views/Service.vue | 3 +- src/views/UserAgreement.vue | 3 +- src/views/index.vue | 118 +++++ src/views/list_lawsuit.vue | 5 +- src/views/list_marriage.vue | 1 - src/views/list_risk.vue | 6 +- src/views/list_verify.vue | 18 +- vite.config.js | 16 +- 79 files changed, 2838 insertions(+), 1053 deletions(-) create mode 100644 src/assets/images/ai_picture.webp create mode 100644 src/assets/images/banner.png create mode 100644 src/assets/images/baogao-icon.png create mode 100644 src/assets/images/bg_2.png create mode 100644 src/assets/images/bg_icon.png create mode 100644 src/assets/images/icon_1.png create mode 100644 src/assets/images/icon_2.png create mode 100644 src/assets/images/icon_3.png create mode 100644 src/assets/images/icon_4.png create mode 100644 src/assets/images/index_icon_1.png create mode 100644 src/assets/images/index_icon_2.png create mode 100644 src/assets/images/index_icon_3.png create mode 100644 src/assets/images/index_icon_4.png create mode 100644 src/assets/images/index_icon_4_1.png create mode 100644 src/assets/images/index_icon_5.png create mode 100644 src/assets/images/index_icon_6.png create mode 100644 src/assets/images/index_icon_7.png create mode 100644 src/assets/images/liu.png create mode 100644 src/assets/images/llqdk.jpg create mode 100644 src/assets/images/login_bg.png create mode 100644 src/assets/images/logo copy.png create mode 100644 src/assets/images/logo.png create mode 100644 src/assets/images/logo_title.png create mode 100644 src/assets/images/pendding.svg create mode 100644 src/assets/images/public_security_record_icon.png create mode 100644 src/assets/uni-webview.js create mode 100644 src/components/LPendding.vue create mode 100644 src/components/WechatOverlay.vue delete mode 100644 src/composables/useUni.js create mode 100644 src/layouts/GlobalLayout.vue create mode 100644 src/layouts/HomeLayout.vue create mode 100644 src/layouts/PageLayout.vue create mode 100644 src/ui/CCAR061.vue create mode 100644 src/utils/chatCrypto.js create mode 100644 src/utils/chatEncrypt.js create mode 100644 src/views/Ai.vue create mode 100644 src/views/Example copy.vue create mode 100644 src/views/HistoryQuery.vue create mode 100644 src/views/Login.vue create mode 100644 src/views/Me.vue create mode 100644 src/views/index.vue diff --git a/index.html b/index.html index 610d791..7587bb0 100644 --- a/index.html +++ b/index.html @@ -4,9 +4,14 @@ - - 全能查-专业防风险 - + + 全能查 - 婚恋评估、司法涉诉查询、婚姻状态、判决书查询工具 + + + + diff --git a/src/components/LTitle.vue b/src/components/LTitle.vue index cee961e..41dfada 100644 --- a/src/components/LTitle.vue +++ b/src/components/LTitle.vue @@ -45,7 +45,8 @@ const lineClass = computed(() => { -
+
@@ -54,5 +55,4 @@ const lineClass = computed(() => {
- + diff --git a/src/components/Payment.vue b/src/components/Payment.vue index b452c1a..3611338 100644 --- a/src/components/Payment.vue +++ b/src/components/Payment.vue @@ -5,14 +5,27 @@

支付

-

{{ data.product_name }}

-

¥ {{ data.sell_price }}

+
{{ data.product_name }}
+
+ +
+ ¥ {{ data.sell_price }} +
+
+ ¥ {{ discountPrice ? (data.sell_price * 0.2).toFixed(2) : data.sell_price }} +
+
+ +
+ 活动价:2折优惠 +
- + @@ -20,20 +33,11 @@ - - - - -
- 确认支付 + 确认支付
@@ -53,13 +57,25 @@ const props = defineProps({ const show = defineModel() const orderId = ref("") const selectedPaymentMethod = ref('alipay') -const { platform } = useUni() -function onConfirmPayment(data) { - window.parent.postMessage({ type: "payment", data: data }, "*"); - show.value = false -} +const discountPrice = ref(false) // 是否应用折扣 +onMounted(() => { + // let m = localStorage.getItem("m") + // let hour = "12" + // if (m === "shifenliangzai") { + // hour = "00" + // } + // const currentDate = new Date() + // const startDate = new Date(`2025-01-01T${hour}:00:00+08:00`) // 2025年1月1日中午12点 + // const endDate = new Date('2025-01-02T12:00:00+08:00') // 2025年1月2日中午12点 + // console.log(startDate, endDate) + // if (currentDate >= startDate && currentDate <= endDate) { + // discountPrice.value = true // 在折扣时间范围内,启用折扣 + // } else { + // discountPrice.value = false // 否则不启用折扣 + // } +}) -async function payment() { +async function getPayment() { const { data, error } = await useApiFetch('/pay/payment') .post({ id: props.id, @@ -69,9 +85,16 @@ async function payment() { if (data.value && !error.value) { orderId.value = data.value.data.order_id - onConfirmPayment(data.value.data.prepay_id) + const prepayUrl = data.value.data.prepay_id; + const paymentForm = document.createElement('form'); + paymentForm.method = 'POST'; + paymentForm.action = prepayUrl; + paymentForm.style.display = 'none'; + document.body.appendChild(paymentForm); + paymentForm.submit(); } + show.value = false } - \ No newline at end of file + 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 index 68a221d..96f61e1 100644 --- a/src/composables/useApiFetch.js +++ b/src/composables/useApiFetch.js @@ -1,8 +1,7 @@ // src/plugins/fetch.js import { createFetch } from '@vueuse/core' import router from '@/router' // 假设你使用 Vue Router -const { getCurrentPlatform, platform } = useUni() // 获取平台信息(如 "app", "h5" 等) -getCurrentPlatform() + // 创建全局的 fetch 实例 const useApiFetch = createFetch({ baseUrl: '/api/v1', // 你的 API 基础路径 @@ -18,12 +17,13 @@ const useApiFetch = createFetch({ // 获取平台信息 const brand = "qnc"; // 固定的品牌信息 + // 在请求前添加通用的 Header,例如 Authorization const token = localStorage.getItem('token') if (token) { options.headers = { ...options.headers, - 'X-Platform': platform.value, // 添加平台信息 + 'X-Platform': 'h5', // 添加平台信息 'X-Brand': brand, // 添加品牌信息 Authorization: `${token}`, } @@ -38,10 +38,7 @@ const useApiFetch = createFetch({ localStorage.removeItem('token') // 跳转到登录页 - router.push('/login') - uni.redirectTo({ - url: '/pages/login', - }) + router.replace('/login') } if (data.code !== 200) { @@ -52,19 +49,19 @@ const useApiFetch = createFetch({ return { data, response } }, async onFetchError({ error, response }) { + console.log("error", error) closeToast(); if (response.status === 401) { // 清除本地存储的 token localStorage.removeItem('token') // 跳转到登录页 - router.push('/login') - uni.redirectTo({ - url: '/pages/login', - }) + router.replace('/login') + } else { + if (typeof error === 'string') { + showToast({ message: error }); + } } - // 全局错误处理 - showToast({ message: error }); return { error } }, }, diff --git a/src/composables/useUni.js b/src/composables/useUni.js deleted file mode 100644 index 20f2dc0..0000000 --- a/src/composables/useUni.js +++ /dev/null @@ -1,49 +0,0 @@ -import { ref, onMounted } from 'vue' - -export function useUni() { - const platform = ref('') // 存储当前的平台 - - // 判断是否在微信浏览器中 - const checkWeixinBrowser = () => { - return /MicroMessenger/i.test(navigator.userAgent) - } - - // 获取当前平台并判断环境 - const getCurrentPlatform = async () => { - try { - uni.getEnv(env => { - if (env.h5) { - // 如果是 H5 环境,检查是否在微信浏览器中 - if (checkWeixinBrowser()) { - platform.value = 'h5-weixin' - } else { - platform.value = 'h5' // 当前是 Web 平台 - } - } else if (env['mp-weixin']) { - platform.value = 'mp-weixin' // 当前是 微信小程序平台 - } else if (env.app) { - platform.value = 'app' // 当前是 App 平台 - } else if (env['mp-qq']) { - platform.value = 'mp-qq' // 当前是 QQ 小程序平台 - } else if (env['mp-alipay']) { - platform.value = 'mp-alipay' // 当前是 支付宝小程序平台 - } else { - platform.value = 'unknown' // 未知平台 - } - }) - } catch (error) { - console.error('获取平台信息失败:', error) - platform.value = 'unknown' - } - } - - // 在组件挂载时执行环境判断 - onMounted(() => { - getCurrentPlatform() - }) - - return { - platform, - getCurrentPlatform, - } -} diff --git a/src/composables/useWebView.js b/src/composables/useWebView.js index fa8240b..318791f 100644 --- a/src/composables/useWebView.js +++ b/src/composables/useWebView.js @@ -1,21 +1,16 @@ import { ref, onMounted } from "vue"; +import "@/assets/uni-webview" export function useWebView() { const platform = ref(""); const token = ref(""); - // 检测环境并通知父窗口加载完毕 - const handleBridgeReady = (platformName) => { - if (platformName.h5) { - window.parent.postMessage({ loaded: true }, "*"); + const handleBridgeReady = () => { + if (platform.value) { + h5PostMessage("loaded", true); } }; - const handlePaymentMessage = () => { - if (platformName.h5) { - window.parent.postMessage({ loaded: true }, "*"); - } - } // 获取 Token(从 URL 中解析) const getTokenFromUrl = () => { @@ -28,13 +23,92 @@ export function useWebView() { return tokenFromUrl; }; - onMounted(() => { - // 检测平台环境 - uni.getEnv((env) => { - platform.value = env; - handleBridgeReady(platform.value); - }); + // 封装 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(); }); @@ -42,6 +116,15 @@ export function useWebView() { return { platform, token, - handlePaymentMessage + 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/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..f00c265 --- /dev/null +++ b/src/layouts/HomeLayout.vue @@ -0,0 +1,139 @@ + + + + + \ No newline at end of file diff --git a/src/layouts/PageLayout.vue b/src/layouts/PageLayout.vue new file mode 100644 index 0000000..60587bb --- /dev/null +++ b/src/layouts/PageLayout.vue @@ -0,0 +1,35 @@ + + + + + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 784ee41..5aac6e5 100644 --- a/src/main.js +++ b/src/main.js @@ -5,9 +5,7 @@ import { createPinia } from 'pinia' import App from './App.vue' import router from './router' import 'vant/lib/index.css'; - const app = createApp(App) - app.use(createPinia()) app.use(router) diff --git a/src/router/index.js b/src/router/index.js index 3a9ddb0..eacfae3 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,74 +1,136 @@ 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'; const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { path: '/', - name: 'home', - component: () => import('@/views/Home.vue'), + component: GlobalLayout, // 使用 Layout 作为父组件 + children: [ + { + path: '', + component: HomeLayout, // 使用 Layout 作为父组件 + children: [ + { + path: '', + name: 'index', + component: index, + }, + { + path: 'ai', + name: 'ai', + component: () => import('@/views/Ai.vue'), + }, + { + path: 'me', + name: 'me', + component: () => import('@/views/Me.vue'), + }, + ] + }, + { + path: '', + component: PageLayout, + children: [ + { + path: '/historyQuery', + name: 'history', + component: () => import('@/views/HistoryQuery.vue'), + meta: { title: '历史报告' }, + }, + { + 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: '报告结果' }, + }, + { + path: '/example', + name: 'example', + component: () => import('@/views/Example.vue'), + meta: { title: '示例报告' }, + }, + { + path: '/authorization', + name: 'authorization', + component: () => import('@/views/Authorization.vue'), + meta: { title: '授权书' }, + }, + { + path: '/privacyPolicy', + name: 'privacyPolicy', + component: () => import('@/views/PrivacyPolicy.vue'), + meta: { title: '隐私政策' }, + }, + { + path: '/userAgreement', + name: 'userAgreement', + component: () => import('@/views/UserAgreement.vue'), + meta: { title: '用户协议' }, + }, + { + path: '/listMarriage', + name: 'listMarriage', + component: () => import('@/views/list_marriage.vue'), + meta: { title: '婚姻查询' }, + }, + { + path: '/listRisk', + name: 'listRisk', + component: () => import('@/views/list_risk.vue'), + meta: { title: '风险查询' }, + }, + { + path: '/listLawsuit', + name: 'listLawsuit', + component: () => import('@/views/list_lawsuit.vue'), + meta: { title: '诉讼查询' }, + }, + { + path: '/listVerify', + name: 'listVerify', + component: () => import('@/views/list_verify.vue'), + meta: { title: '核验查询' }, + }, + { + path: '/inquire/:feature', + name: 'inquire', + component: () => import('@/views/Inquire.vue'), + meta: { title: '查询报告' }, + }, + ], + }, + ] }, + { - path: '/service', - name: 'service', - component: () => import('@/views/Service.vue'), - }, - { - path: '/complaint', - name: 'complaint', - component: () => import('@/views/Complaint.vue'), - }, - { - path: '/report', - name: 'report', - component: () => import('@/views/Report.vue'), - }, - { - path: '/example', - name: 'example', - component: () => import('@/views/Example.vue'), - }, - { - path: '/authorization', - name: 'authorization', - component: () => import('@/views/Authorization.vue'), - }, - { - path: '/privacyPolicy', - name: 'privacyPolicy', - component: () => import('@/views/PrivacyPolicy.vue'), - }, - { - path: '/userAgreement', - name: 'userAgreement', - component: () => import('@/views/UserAgreement.vue'), - }, - { - path: '/listMarriage', - name: 'listMarriage', - component: () => import('@/views/list_marriage.vue'), - }, - { - path: '/listRisk', - name: 'listRisk', - component: () => import('@/views/list_risk.vue'), - }, - { - path: '/listLawsuit', - name: 'listLawsuit', - component: () => import('@/views/list_lawsuit.vue'), - }, - { - path: '/listVerify', - name: 'listVerify', - component: () => import('@/views/list_verify.vue'), - }, - { - path: '/inquire/:feature', - name: 'inquire', - component: () => import('@/views/Inquire.vue'), + path: '/login', + name: 'login', + component: () => import('@/views/Login.vue'), }, + // { + // path: '/home', + // name: 'home', + // component: () => import('@/views/Home.vue'), + // }, + + { path: "/:pathMatch(.*)*", name: "NotFound", diff --git a/src/ui/CBad.vue b/src/ui/CBad.vue index 19a22b5..fcdd8ca 100644 --- a/src/ui/CBad.vue +++ b/src/ui/CBad.vue @@ -16,22 +16,23 @@ const riskLevel = ref(""); const riskLevelText = ref(""); const riskLevelClass = ref(""); const riskInfoList = ref([ - { level: "低风险", description: "涉稳、寻衅滋事", class: "span-lime-600" }, + { + level: "无风险", + description: "无任何不良风险记录", + class: "text-green-600", + }, + { level: "低风险", description: "涉稳、寻衅滋事", class: "text-yellow-500" }, { level: "中风险", description: "吸毒、涉毒、犯罪前科", - class: "text-orange-400", + class: "text-orange-500", }, { level: "高风险", description: "涉案人员、在逃、犯罪嫌疑人", class: "text-red-500", }, - { - level: "无风险", - description: "无任何不良风险记录", - class: "text-green-600", - }, + ]); // 根据风险等级动态设置图表配置 @@ -45,9 +46,17 @@ function getChartOption(level) { E: 90, // 高风险 default: 0, // 未知风险 }; - + const labelNameMap = { + A: "无风险", // 无风险 + F: "低风险", // 低风险 + C: "中风险", // 中风险 + D: "中风险", // 中风险 + B: "高风险", // 高风险 + E: "高风险", // 高风险 + default: "未知风险", // 未知风险 + }; const value = valueMap[level] || valueMap.default; - + const labelName = labelNameMap[level] || valueMap.default; return { tooltip: { formatter: "{a}
{b} : {c}", @@ -66,7 +75,7 @@ function getChartOption(level) { fontWeight: "bold", color: "#333", }, - data: [{ value, name: "风险等级" }], + data: [{ value, name: labelName }], axisLine: { lineStyle: { width: 15, @@ -74,40 +83,33 @@ function getChartOption(level) { shadowColor: "rgba(0, 0, 0, 0.3)", // 阴影颜色 color: [ [ - 0.2, + 0.25, new echarts.graphic.LinearGradient(0, 0, 1, 0, [ { offset: 0, color: "#10B981" }, { offset: 1, color: "#34D399" }, ]), ], // 无风险渐变 [ - 0.4, + 0.5, new echarts.graphic.LinearGradient(0, 0, 1, 0, [ - { offset: 0, color: "#A3E635" }, - { offset: 1, color: "#D9F99D" }, + { offset: 0, color: "#FFC300" }, + { offset: 1, color: "#EAB308" }, ]), ], // 低风险渐变 [ - 0.6, + 0.75, new echarts.graphic.LinearGradient(0, 0, 1, 0, [ { offset: 0, color: "#F97316" }, - { offset: 1, color: "#FDBA74" }, + { offset: 1, color: "#E68416" }, ]), ], // 中风险渐变 - [ - 0.8, - new echarts.graphic.LinearGradient(0, 0, 1, 0, [ - { offset: 0, color: "#EF4444" }, - { offset: 1, color: "#FCA5A5" }, - ]), - ], // 高风险渐变 [ 1, new echarts.graphic.LinearGradient(0, 0, 1, 0, [ - { offset: 0, color: "#9CA3AF" }, - { offset: 1, color: "#E5E7EB" }, + { offset: 0, color: "#EF4444" }, + { offset: 1, color: "#FF6347" }, ]), - ], // 未知风险渐变 + ], // 高风险渐变 ], }, }, @@ -125,7 +127,7 @@ function getChartOption(level) { }, title: { offsetCenter: [0, "75%"], // 标题位置 - fontSize: 14, + fontSize: 20, fontWeight: "bold", }, detail: { diff --git a/src/ui/CCAR061.vue b/src/ui/CCAR061.vue new file mode 100644 index 0000000..8801ac6 --- /dev/null +++ b/src/ui/CCAR061.vue @@ -0,0 +1,38 @@ + + + + + \ No newline at end of file diff --git a/src/ui/CDualMarriage.vue b/src/ui/CDualMarriage.vue index 00f7b9e..a9997a4 100644 --- a/src/ui/CDualMarriage.vue +++ b/src/ui/CDualMarriage.vue @@ -1,27 +1,6 @@