diff --git a/src/assets/v3/Line/chanpin1.png b/src/assets/v3/Line/chanpin1.png new file mode 100644 index 0000000..7d766ad Binary files /dev/null and b/src/assets/v3/Line/chanpin1.png differ diff --git a/src/assets/v3/Line/chanpin2.png b/src/assets/v3/Line/chanpin2.png new file mode 100644 index 0000000..50ddf19 Binary files /dev/null and b/src/assets/v3/Line/chanpin2.png differ diff --git a/src/assets/v3/Line/chuangxin1.png b/src/assets/v3/Line/chuangxin1.png new file mode 100644 index 0000000..f7c3811 Binary files /dev/null and b/src/assets/v3/Line/chuangxin1.png differ diff --git a/src/assets/v3/Line/chuangxin2.png b/src/assets/v3/Line/chuangxin2.png new file mode 100644 index 0000000..3f68d25 Binary files /dev/null and b/src/assets/v3/Line/chuangxin2.png differ diff --git a/src/assets/v3/Line/jiance.png b/src/assets/v3/Line/jiance.png index 2bec1ff..06e6967 100644 Binary files a/src/assets/v3/Line/jiance.png and b/src/assets/v3/Line/jiance.png differ diff --git a/src/assets/v3/Line/jiance1.png b/src/assets/v3/Line/jiance1.png new file mode 100644 index 0000000..e3c6761 Binary files /dev/null and b/src/assets/v3/Line/jiance1.png differ diff --git a/src/assets/v3/Line/jiance2.png b/src/assets/v3/Line/jiance2.png new file mode 100644 index 0000000..8d51635 Binary files /dev/null and b/src/assets/v3/Line/jiance2.png differ diff --git a/src/assets/v3/Line/jiance3.png b/src/assets/v3/Line/jiance3.png new file mode 100644 index 0000000..1a7bc3e Binary files /dev/null and b/src/assets/v3/Line/jiance3.png differ diff --git a/src/assets/v3/Line/jiance4.png b/src/assets/v3/Line/jiance4.png new file mode 100644 index 0000000..6a379ed Binary files /dev/null and b/src/assets/v3/Line/jiance4.png differ diff --git a/src/assets/v3/Line/jishu1.png b/src/assets/v3/Line/jishu1.png new file mode 100644 index 0000000..a36c5f4 Binary files /dev/null and b/src/assets/v3/Line/jishu1.png differ diff --git a/src/assets/v3/Line/jishu2.png b/src/assets/v3/Line/jishu2.png new file mode 100644 index 0000000..b3a79c7 Binary files /dev/null and b/src/assets/v3/Line/jishu2.png differ diff --git a/src/assets/v3/Line/jishu3.png b/src/assets/v3/Line/jishu3.png new file mode 100644 index 0000000..b2779f3 Binary files /dev/null and b/src/assets/v3/Line/jishu3.png differ diff --git a/src/assets/v3/Line/jishu4.png b/src/assets/v3/Line/jishu4.png new file mode 100644 index 0000000..3f316ed Binary files /dev/null and b/src/assets/v3/Line/jishu4.png differ diff --git a/src/assets/v3/Line/jushu1.png b/src/assets/v3/Line/jushu1.png deleted file mode 100644 index cb301c2..0000000 Binary files a/src/assets/v3/Line/jushu1.png and /dev/null differ diff --git a/src/assets/v3/Line/jushu2.png b/src/assets/v3/Line/jushu2.png deleted file mode 100644 index 580b33a..0000000 Binary files a/src/assets/v3/Line/jushu2.png and /dev/null differ diff --git a/src/assets/v3/Line/jushu3.png b/src/assets/v3/Line/jushu3.png deleted file mode 100644 index 1ae9532..0000000 Binary files a/src/assets/v3/Line/jushu3.png and /dev/null differ diff --git a/src/assets/v3/Line/jushu4.png b/src/assets/v3/Line/jushu4.png deleted file mode 100644 index 7029c9d..0000000 Binary files a/src/assets/v3/Line/jushu4.png and /dev/null differ diff --git a/src/assets/v3/Line/kehu.png b/src/assets/v3/Line/kehu.png new file mode 100644 index 0000000..fa60eaf Binary files /dev/null and b/src/assets/v3/Line/kehu.png differ diff --git a/src/components/Header/index.vue b/src/components/Header/index.vue index d96d89a..e7a9063 100644 --- a/src/components/Header/index.vue +++ b/src/components/Header/index.vue @@ -14,7 +14,27 @@
  • 解决方案
  • -
  • 数据服务
  • + + + +
  • 态势感知中心
  • 定价
  • 关于我们
  • @@ -30,6 +50,30 @@ import {ref, reactive} from 'vue'; import {emitEvent} from "@/utils/eventBus"; +const dataSubMenus = [ + { + icon: '🗄️', + title: '漏洞数据库', + desc: '聚合 NVD/CNNVD/OSV 数据,提供标准化漏洞详情查询。', + linkText: '[ 查询漏洞 > ]', + path: '/VulnerabilityDatabase' + }, + { + icon: '🧠', + title: '威胁情报库', + desc: '实时推送 CISA KEV 列表及供应链攻击情报 IOC。', + linkText: '[ 订阅情报 > ]', + path: '/ThreatIntelligence' + }, + { + icon: '🚨', + title: '安全事件中心', + desc: '全球重大开源安全事件历史档案与复盘分析。', + linkText: '[ 查看事件 > ]', + path: '/News' + } +]; + const handleLogin = (type) => { emitEvent('login', {type, triggerType: '主动注册'}); }; @@ -111,4 +155,90 @@ const handleLogin = (type) => { background: #A01218; } } + + +.dropdown-trigger { + position: relative; + + &:hover .dropdown-menu { + opacity: 1; + visibility: visible; + transform: translateY(0); + } +} + +.dropdown-menu { + position: absolute; + top: 30px; + left: -130px; + transform: translateX(-50%) translateY(10px); + width: 320px; + background: #1a1a1a; /* 深色背景符合专业感 */ + border-radius: 8px; + box-shadow: 0 10px 40px rgba(0,0,0,0.2); + opacity: 0; + visibility: hidden; + transition: all 0.3s ease; + z-index: 1001; + padding: 12px; + + /* 顶部三角形箭头 */ + &::before { + content: ''; + position: absolute; + top: -6px; left: 50%; + transform: translateX(-50%); + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #1a1a1a; + } +} + +.dropdown-item { + display: flex; + padding: 16px; + border-radius: 6px; + cursor: pointer; + transition: background 0.2s; + text-decoration: none; + + &:hover { + background: #262626; + + .item-title { color: #C8161D; } + .item-link { color: #C8161D; } + } +} + +.item-icon { + font-size: 24px; + margin-right: 16px; + padding-top: 2px; +} + +.item-content { + flex: 1; +} + +.item-title { + margin: 0 0 6px 0; + color: #fff; + font-size: 15px; + font-weight: 600; + transition: color 0.2s; +} + +.item-desc { + margin: 0 0 8px 0; + color: #999; + font-size: 12px; + line-height: 1.5; +} + +.item-link { + font-size: 12px; + color: #666; + font-weight: 500; + transition: color 0.2s; +} diff --git a/src/views/Jyh/Home/component/ComProject/index.vue b/src/views/Jyh/Home/component/ComProject/index.vue index 1425a4b..644a950 100644 --- a/src/views/Jyh/Home/component/ComProject/index.vue +++ b/src/views/Jyh/Home/component/ComProject/index.vue @@ -55,7 +55,7 @@ const activeIndex = ref(0); const menuList = [ { name: '可信开源态势感知平台(源感)' }, { name: '金银湖代码安全大模型(源鉴)' }, - { name: '供应链安全检测系统(源链)'}, + { name: '供应链安全检测系统(源链)' }, { name: '智能终端应用安全监测平台(源端)' } ]; diff --git a/src/views/Jyh/Home/component/ComProject/product3.vue b/src/views/Jyh/Home/component/ComProject/product3.vue index 06723fc..f9a01dc 100644 --- a/src/views/Jyh/Home/component/ComProject/product3.vue +++ b/src/views/Jyh/Home/component/ComProject/product3.vue @@ -33,10 +33,10 @@
    - 技术优势图1 - 技术优势图2 - 技术优势图3 - 技术优势图4 + 技术优势图4 + + 技术优势图2 + 技术优势图1

    💡 技术优势

    @@ -62,24 +62,20 @@ 03.以组件知识图谱与漏洞知识图谱为核心,构建影响软件版本节点与组件节点的关联,形成完整供应链知识图谱
    -
    -
    - +
    + + +
    - 🎯 市场推广 + 🎯 客户群体
    -

    - 面向客户:强合规型(能源、金融、运营商、政务/信创等)、高敏捷型(互联网大厂、车联网、AI厂商等)
    - 收费模式:订阅服务(定期按月/年支付费用,获取软件的使用权、更新和支持服务)、解决方案服务(一次性支付费用,满足定制化、高安全和完全内网部署需求) -

    +
    @@ -93,12 +89,12 @@ 包管理器SCA引擎:针对常见包管理器(如npm、PyPI、Maven)的依赖分析引擎,自动识别组件及其版本

    -
    -
    +

    C/C++ SCA引擎:处理C/C++项目成分分析,支持源代码和编译依赖扫描

    二进制SCA引擎:针对二进制文件分析,通过反编译和特征匹配识别成分和漏洞

    @@ -289,7 +285,7 @@ onUnmounted(() => { font-weight: 500; color: #fff; line-height: 36px; - margin-top: 90px + margin-top: 90px; } .secondEdition .secondEditionContent .hadoop .hadoopdesc { @@ -311,20 +307,29 @@ onUnmounted(() => { } .secondEdition .secondEditionContent .oneStop .oneStopContent { - display: flex + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: flex-start } .secondEdition .secondEditionContent .oneStop .oneStopContent .osLeftMain { - display: flex; - justify-content: flex-start; - align-items: flex-start; + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: 1fr 1fr; + gap: 15px; position: relative; - margin-bottom: 182px + margin-bottom: 182px; + margin-left: 290px; + width: 450px; + height: 320px; + flex-shrink: 0 } .secondEdition .secondEditionContent .oneStop .oneStopContent .osRightMain { - margin-left: 22px; - text-align: left + margin-left: 30px; + text-align: left; + flex: 1 } .secondEdition .secondEditionContent .oneStop .oneStopContent .osRightMain .osRightTitle { @@ -336,7 +341,7 @@ onUnmounted(() => { background: -webkit-linear-gradient(112deg, #ff8b75, #dd2476); -webkit-background-clip: text; -webkit-text-fill-color: transparent; - margin-top: 28px + margin-top: 0 } .secondEdition .secondEditionContent .oneStop .oneStopContent .osRightMain p { @@ -352,42 +357,74 @@ onUnmounted(() => { font-weight: 500 } -.secondEdition .secondEditionContent .oneStop .imgring, -.secondEdition .secondEditionContent .oneStop .osleftPosi { +.secondEdition .secondEditionContent .oneStop .imgring { transition: 3s; opacity: 0 } -.secondEdition .secondEditionContent .oneStop .osleftPosi1, -.secondEdition .secondEditionContent .oneStop .osleftPosi2 { - position: absolute; - right: -200px; - top: 102px; - transition: 2s; +.secondEdition .secondEditionContent .oneStop .osLeftMain img { opacity: 0; + transition: all 2s ease-out; + position: absolute; + border-radius: 8px; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12) +} + +.secondEdition .secondEditionContent .oneStop .osLeftMain .img1 { + left: -150px; + top: 10px; z-index: 1 } -.secondEdition .secondEditionContent .oneStop .osleftPosi2 { - top: 317px; - right: 10px; - transition: 2.5s; - z-index: 2 +.secondEdition .secondEditionContent .oneStop .osLeftMain .img2 { + right: -150px; + top: 0; + z-index: 3; + transition-delay: 0.3s } -.secondEdition .secondEditionContent .oneStop.activeCode, -.secondEdition .secondEditionContent .oneStop.activeCode .osleftPosi, -.secondEdition .secondEditionContent .oneStop.activeCode .osleftPosi1, -.secondEdition .secondEditionContent .oneStop.activeCode .osleftPosi2 { +.secondEdition .secondEditionContent .oneStop .osLeftMain .img3 { + left: -150px; + bottom: -50px; + z-index: 2; + transition-delay: 0.2s +} + +.secondEdition .secondEditionContent .oneStop .osLeftMain .img4 { + right: -150px; + bottom: 20px; + z-index: 4; + transition-delay: 0.4s +} + +.secondEdition .secondEditionContent .oneStop.activeCode { opacity: 1 } -.secondEdition .secondEditionContent .oneStop.activeCode .osleftPosi1 { - right: 10px +.secondEdition .secondEditionContent .oneStop.activeCode .osLeftMain img { + opacity: 1 } -.secondEdition .secondEditionContent .oneStop.activeCode .osleftPosi2 { - top: 217px +.secondEdition .secondEditionContent .oneStop.activeCode .osLeftMain .img1 { + left: -190px; + top: 15px +} + +.secondEdition .secondEditionContent .oneStop.activeCode .osLeftMain .img2 { + right: 30px; + top: 0 +} + +.secondEdition .secondEditionContent .oneStop.activeCode .osLeftMain .img3 { + left: -150px; + bottom: 15px; + top: 100px; +} + +.secondEdition .secondEditionContent .oneStop.activeCode .osLeftMain .img4 { + right: 15px; + bottom: 20px; + top: 200px; } .secondEdition .secondEditionContent .oneStop.activeCode .imgring { @@ -399,7 +436,8 @@ onUnmounted(() => { } .secondEdition .secondEditionContent .highDevops.activeCode .highDoContent img { - opacity: 1 + opacity: 1; + padding-top:10px; } .secondEdition .secondEditionContent .highDevops.activeCode .highDoContent img.highImg1 { @@ -550,13 +588,13 @@ onUnmounted(() => { -webkit-background-clip: text; -webkit-text-fill-color: transparent; line-height: 50px; - margin-top: 20px + margin-top: -20px } .secondEdition .secondEditionContent .multipleAnalyse .maContent { - height: 400px; - width: 723px; - background: url(@/assets/v3/Line/2-4-1.802eb322.png) no-repeat; + height: 150px; + width: 600px; + background: url(@/assets/v3/Line/kehu.png) no-repeat; background-size: 100% 100%; margin: 26px 0; transition: 3s @@ -628,7 +666,8 @@ onUnmounted(() => { .secondEdition .secondEditionContent .multidimensional .activeCode .multidimensinalPart img { left: 0; - opacity: 1 + opacity: 1; + top:10 } .secondEdition .secondEditionContent .multidimensional .activeCode .multidimensinalhalf img { @@ -650,7 +689,7 @@ onUnmounted(() => { left: 620px; bottom: -20px; opacity: 0; - transition: 3s + transition: 3s; } .secondEdition .secondEditionContent .multidimensinalPart p { @@ -729,7 +768,9 @@ onUnmounted(() => { transform: translateX(-50%); transition: top 0.3s ease-in-out; } - +.wdsdsf{ + margin-left: -100px; +} html li { list-style: none; } @@ -796,7 +837,7 @@ video { .activeCode>img.activeImg { right: 0; - top: 0px; + top: 30px; opacity: 1; width: 705px; transition: 1s; diff --git a/src/views/Jyh/Pricing/component/PricingComparisonTable.vue b/src/views/Jyh/Pricing/component/PricingComparisonTable.vue index 2a8db64..074339b 100644 --- a/src/views/Jyh/Pricing/component/PricingComparisonTable.vue +++ b/src/views/Jyh/Pricing/component/PricingComparisonTable.vue @@ -257,7 +257,7 @@ const comparisonData = ref([ display: inline-flex; align-items: center; justify-content: center; - background-color: #000; + background-color: #BD2025; color: #fff; text-decoration: none; padding: 8px 16px; diff --git a/src/views/Jyh/Pricing/index.vue b/src/views/Jyh/Pricing/index.vue index 97f619e..dd4686d 100644 --- a/src/views/Jyh/Pricing/index.vue +++ b/src/views/Jyh/Pricing/index.vue @@ -1,10 +1,21 @@