Tcode平台改造升级-系统菜单框架完成、首页页面开发

This commit is contained in:
fmk1023
2025-12-04 10:14:46 +08:00
parent e76110239d
commit 9e86d1e6bc
65 changed files with 2661 additions and 1625 deletions

2
.env
View File

@@ -1,4 +1,4 @@
VITE_APP_TITLE = '可信开源代码库' VITE_APP_TITLE = 'Tcode'
VITE_TEST_REPOID = 34 VITE_TEST_REPOID = 34
VITE_SECRET_KEY = 'SA!nUNPZ5o!OSV&B' VITE_SECRET_KEY = 'SA!nUNPZ5o!OSV&B'

View File

@@ -1,4 +1,4 @@
# 可信开源代码库 # Tcode
架构:基于[create-vue](https://github.com/vuejs/create-vue)构建vite+vue3+pinia+scss 架构:基于[create-vue](https://github.com/vuejs/create-vue)构建vite+vue3+pinia+scss
组件库:[Vue DevUI](https://vue-devui.github.io/) 组件库:[Vue DevUI](https://vue-devui.github.io/)

View File

@@ -9,7 +9,7 @@
<link rel="dns-prefetch" href="//usercenter-app.gitcode.com"> <link rel="dns-prefetch" href="//usercenter-app.gitcode.com">
<link rel="dns-prefetch" href="//res.hc-cdn.com"> <link rel="dns-prefetch" href="//res.hc-cdn.com">
<!-- <meta name="referrer" content="no-referrer"> --> <!-- <meta name="referrer" content="no-referrer"> -->
<title>可信开源代码库</title> <title>Tcode</title>
<style type="text/css"> <style type="text/css">
.icon { .icon {
width: 1em; height: 1em; width: 1em; height: 1em;
@@ -23,19 +23,4 @@
<div id="app"></div> <div id="app"></div>
<script type="module" src="/src/main.ts"></script> <script type="module" src="/src/main.ts"></script>
</body> </body>
<!-- <script type="text/javascript" src="https://cdn-static.gitcode.com/js/gitcode-icon.js"></script>-->
<!-- <script type="text/javascript" src="https://cdn-static.gitcode.com/js/event-msg.min.0.0.2.js"></script>-->
<!-- <script type="text/javascript" src="https://cdn-static.gitcode.com/js/lottie.min.js" defer></script>-->
<!-- <script type="text/javascript" src="https://cdn-static.gitcode.com/js/furion.js" defer></script>-->
<!-- baidu统计 -->
<script>
var _hmt = _hmt || [];
_hmt.push(['_setAutoPageview', false]);
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?62047c952451105d57bab2c4af9ce85b";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
</html> </html>

230
package-lock.json generated
View File

@@ -1,11 +1,11 @@
{ {
"name": "gitcode-v2", "name": "openRepoPortalV2",
"version": "0.0.0", "version": "0.0.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "gitcode-v2", "name": "openRepoPortalV2",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@devui-design/icons": "^1.4.0", "@devui-design/icons": "^1.4.0",
@@ -14,6 +14,7 @@
"@sentry/vue": "^7.101.1", "@sentry/vue": "^7.101.1",
"@types/crypto-js": "^4.1.1", "@types/crypto-js": "^4.1.1",
"@vueuse/core": "^10.2.1", "@vueuse/core": "^10.2.1",
"ant-design-vue": "4.x",
"axios": "^1.6.8", "axios": "^1.6.8",
"canvas-confetti": "^1.9.2", "canvas-confetti": "^1.9.2",
"crypto-js": "^4.2.0", "crypto-js": "^4.2.0",
@@ -37,6 +38,7 @@
"swiper": "^10.3.1", "swiper": "^10.3.1",
"vue": "^3.3.4", "vue": "^3.3.4",
"vue-devui": "^1.6.31", "vue-devui": "^1.6.31",
"vue-fast-marquee": "^1.0.6",
"vue-router": "^4.2.2", "vue-router": "^4.2.2",
"xlsx": "^0.18.5", "xlsx": "^0.18.5",
"yaml": "^2.4.1" "yaml": "^2.4.1"
@@ -103,6 +105,34 @@
"node": ">=6.0.0" "node": ">=6.0.0"
} }
}, },
"node_modules/@ant-design/colors": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz",
"integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
"license": "MIT",
"dependencies": {
"@ctrl/tinycolor": "^3.4.0"
}
},
"node_modules/@ant-design/icons-svg": {
"version": "4.4.2",
"resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz",
"integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==",
"license": "MIT"
},
"node_modules/@ant-design/icons-vue": {
"version": "7.0.1",
"resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-7.0.1.tgz",
"integrity": "sha512-eCqY2unfZK6Fe02AwFlDHLfoyEFreP6rBwAZMIJ1LugmfMiVgwWDYlp1YsRugaPtICYOabV1iWxXdP12u9U43Q==",
"license": "MIT",
"dependencies": {
"@ant-design/colors": "^6.0.0",
"@ant-design/icons-svg": "^4.2.1"
},
"peerDependencies": {
"vue": ">=3.0.3"
}
},
"node_modules/@babel/code-frame": { "node_modules/@babel/code-frame": {
"version": "7.24.2", "version": "7.24.2",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
@@ -1699,7 +1729,6 @@
"version": "7.24.1", "version": "7.24.1",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz",
"integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==",
"dev": true,
"dependencies": { "dependencies": {
"regenerator-runtime": "^0.14.0" "regenerator-runtime": "^0.14.0"
}, },
@@ -1710,8 +1739,7 @@
"node_modules/@babel/runtime/node_modules/regenerator-runtime": { "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
"version": "0.14.1", "version": "0.14.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
"dev": true
}, },
"node_modules/@babel/template": { "node_modules/@babel/template": {
"version": "7.24.0", "version": "7.24.0",
@@ -1765,11 +1793,32 @@
"resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz",
"integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A=="
}, },
"node_modules/@ctrl/tinycolor": {
"version": "3.6.1",
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
"integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
"license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/@devui-design/icons": { "node_modules/@devui-design/icons": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://mirrors.cloud.tencent.com/npm/@devui-design/icons/-/icons-1.4.0.tgz", "resolved": "https://mirrors.cloud.tencent.com/npm/@devui-design/icons/-/icons-1.4.0.tgz",
"integrity": "sha512-taAX1RNW0QHUqQTRPqLTYTB2PZIqUplhWeF4hcmWkSTjpWlDNI40DssG/WRb3sISkfBk/4BMUxxC5XeTL3jo7A==" "integrity": "sha512-taAX1RNW0QHUqQTRPqLTYTB2PZIqUplhWeF4hcmWkSTjpWlDNI40DssG/WRb3sISkfBk/4BMUxxC5XeTL3jo7A=="
}, },
"node_modules/@emotion/hash": {
"version": "0.9.2",
"resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz",
"integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==",
"license": "MIT"
},
"node_modules/@emotion/unitless": {
"version": "0.8.1",
"resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.8.1.tgz",
"integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==",
"license": "MIT"
},
"node_modules/@esbuild/win32-x64": { "node_modules/@esbuild/win32-x64": {
"version": "0.18.20", "version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
@@ -2322,6 +2371,16 @@
"vue": "2.x || 3.x" "vue": "2.x || 3.x"
} }
}, },
"node_modules/@simonwep/pickr": {
"version": "1.8.2",
"resolved": "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz",
"integrity": "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==",
"license": "MIT",
"dependencies": {
"core-js": "^3.15.1",
"nanopop": "^2.1.0"
}
},
"node_modules/@tsconfig/node18": { "node_modules/@tsconfig/node18": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-2.0.1.tgz", "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-2.0.1.tgz",
@@ -3196,6 +3255,46 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/ant-design-vue": {
"version": "4.2.6",
"resolved": "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-4.2.6.tgz",
"integrity": "sha512-t7eX13Yj3i9+i5g9lqFyYneoIb3OzTvQjq9Tts1i+eiOd3Eva/6GagxBSXM1fOCjqemIu0FYVE1ByZ/38epR3Q==",
"license": "MIT",
"dependencies": {
"@ant-design/colors": "^6.0.0",
"@ant-design/icons-vue": "^7.0.0",
"@babel/runtime": "^7.10.5",
"@ctrl/tinycolor": "^3.5.0",
"@emotion/hash": "^0.9.0",
"@emotion/unitless": "^0.8.0",
"@simonwep/pickr": "~1.8.0",
"array-tree-filter": "^2.1.0",
"async-validator": "^4.0.0",
"csstype": "^3.1.1",
"dayjs": "^1.10.5",
"dom-align": "^1.12.1",
"dom-scroll-into-view": "^2.0.0",
"lodash": "^4.17.21",
"lodash-es": "^4.17.15",
"resize-observer-polyfill": "^1.5.1",
"scroll-into-view-if-needed": "^2.2.25",
"shallow-equal": "^1.0.0",
"stylis": "^4.1.3",
"throttle-debounce": "^5.0.0",
"vue-types": "^3.0.0",
"warning": "^4.0.0"
},
"engines": {
"node": ">=12.22.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/ant-design-vue"
},
"peerDependencies": {
"vue": ">=3.2.0"
}
},
"node_modules/any-promise": { "node_modules/any-promise": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
@@ -3242,6 +3341,12 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/array-tree-filter": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
"integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==",
"license": "MIT"
},
"node_modules/array-union": { "node_modules/array-union": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -3686,6 +3791,12 @@
"node": ">=18" "node": ">=18"
} }
}, },
"node_modules/compute-scroll-into-view": {
"version": "1.0.20",
"resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
"integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
"license": "MIT"
},
"node_modules/computeds": { "node_modules/computeds": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
@@ -3708,7 +3819,6 @@
"version": "3.36.1", "version": "3.36.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz",
"integrity": "sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==", "integrity": "sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==",
"dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
@@ -4693,6 +4803,18 @@
"node": ">=6.0.0" "node": ">=6.0.0"
} }
}, },
"node_modules/dom-align": {
"version": "1.12.4",
"resolved": "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.4.tgz",
"integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==",
"license": "MIT"
},
"node_modules/dom-scroll-into-view": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz",
"integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==",
"license": "MIT"
},
"node_modules/dompurify": { "node_modules/dompurify": {
"version": "3.0.11", "version": "3.0.11",
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.11.tgz", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.11.tgz",
@@ -6144,6 +6266,15 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/is-plain-object": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz",
"integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-regex": { "node_modules/is-regex": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
@@ -6294,8 +6425,7 @@
"node_modules/js-tokens": { "node_modules/js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
"dev": true
}, },
"node_modules/js-yaml": { "node_modules/js-yaml": {
"version": "4.1.0", "version": "4.1.0",
@@ -6516,6 +6646,18 @@
"dev": true, "dev": true,
"peer": true "peer": true
}, },
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
"bin": {
"loose-envify": "cli.js"
}
},
"node_modules/lottie-web": { "node_modules/lottie-web": {
"version": "5.12.2", "version": "5.12.2",
"resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.12.2.tgz", "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.12.2.tgz",
@@ -6742,6 +6884,12 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
} }
}, },
"node_modules/nanopop": {
"version": "2.4.2",
"resolved": "https://registry.npmmirror.com/nanopop/-/nanopop-2.4.2.tgz",
"integrity": "sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw==",
"license": "MIT"
},
"node_modules/natural-compare": { "node_modules/natural-compare": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -7667,6 +7815,12 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/resize-observer-polyfill": {
"version": "1.5.1",
"resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
"integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
"license": "MIT"
},
"node_modules/resolve": { "node_modules/resolve": {
"version": "1.22.8", "version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -7866,6 +8020,15 @@
"node": ">=14.0.0" "node": ">=14.0.0"
} }
}, },
"node_modules/scroll-into-view-if-needed": {
"version": "2.2.31",
"resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
"integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
"license": "MIT",
"dependencies": {
"compute-scroll-into-view": "^1.0.20"
}
},
"node_modules/select": { "node_modules/select": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
@@ -7911,6 +8074,12 @@
"node": ">= 0.4" "node": ">= 0.4"
} }
}, },
"node_modules/shallow-equal": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz",
"integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==",
"license": "MIT"
},
"node_modules/shebang-command": { "node_modules/shebang-command": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -8314,7 +8483,7 @@
}, },
"node_modules/swiper": { "node_modules/swiper": {
"version": "10.3.1", "version": "10.3.1",
"resolved": "https://mirrors.cloud.tencent.com/npm/swiper/-/swiper-10.3.1.tgz", "resolved": "https://registry.npmmirror.com/swiper/-/swiper-10.3.1.tgz",
"integrity": "sha512-24Wk3YUdZHxjc9faID97GTu6xnLNia+adMt6qMTZG/HgdSUt4fS0REsGUXJOgpTED0Amh/j+gRGQxsLayJUlBQ==", "integrity": "sha512-24Wk3YUdZHxjc9faID97GTu6xnLNia+adMt6qMTZG/HgdSUt4fS0REsGUXJOgpTED0Amh/j+gRGQxsLayJUlBQ==",
"funding": [ "funding": [
{ {
@@ -8326,6 +8495,7 @@
"url": "http://opencollective.com/swiper" "url": "http://opencollective.com/swiper"
} }
], ],
"license": "MIT",
"engines": { "engines": {
"node": ">= 4.7.0" "node": ">= 4.7.0"
} }
@@ -8425,6 +8595,15 @@
"node": ">=0.8" "node": ">=0.8"
} }
}, },
"node_modules/throttle-debounce": {
"version": "5.0.2",
"resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
"integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==",
"license": "MIT",
"engines": {
"node": ">=12.22"
}
},
"node_modules/tiny-emitter": { "node_modules/tiny-emitter": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
@@ -9028,6 +9207,15 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true "dev": true
}, },
"node_modules/vue-fast-marquee": {
"version": "1.0.6",
"resolved": "https://registry.npmmirror.com/vue-fast-marquee/-/vue-fast-marquee-1.0.6.tgz",
"integrity": "sha512-VMqaeuBSS3L55Q84EuLJPHZ4Zv4UVBDXmh+2hb1IBTLKt/FmurJnWVXv8BNnbQSupA4kHbPlWDLwp+kvEMOF7A==",
"license": "MIT",
"peerDependencies": {
"vue": ">=3.2.0"
}
},
"node_modules/vue-router": { "node_modules/vue-router": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz",
@@ -9102,6 +9290,30 @@
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true "dev": true
}, },
"node_modules/vue-types": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz",
"integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==",
"license": "MIT",
"dependencies": {
"is-plain-object": "3.0.1"
},
"engines": {
"node": ">=10.15.0"
},
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/warning": {
"version": "4.0.3",
"resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"license": "MIT",
"dependencies": {
"loose-envify": "^1.0.0"
}
},
"node_modules/which": { "node_modules/which": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",

View File

@@ -49,6 +49,7 @@
"swiper": "^10.3.1", "swiper": "^10.3.1",
"vue": "^3.3.4", "vue": "^3.3.4",
"vue-devui": "^1.6.31", "vue-devui": "^1.6.31",
"vue-fast-marquee": "^1.0.6",
"vue-router": "^4.2.2", "vue-router": "^4.2.2",
"xlsx": "^0.18.5", "xlsx": "^0.18.5",
"yaml": "^2.4.1" "yaml": "^2.4.1"

View File

@@ -177,54 +177,41 @@ onBeforeUnmount(() => {
</template> </template>
<style lang="scss"> <style lang="scss">
.global-notification { body {
&-mobile { color: #000;
.devui-notification { font-family: PingFangSC, PingFang SC, Helvetica Neue, Helvetica, Arial, Hiragino Sans GB, Microsoft YaHei, sans-serif;
right: 15px; font-size: 14px;
left: 15px; font-weight: 400;
width: #{calc(100vw - 30px )}; word-break: break-word;
top: 60px;
&__title {
padding: 0;
}
}
.devui-notification-item-container {
background: rgba(255, 255, 255, 1);
box-sizing: border-box;
padding: 15px;
opacity: 1;
.devui-notification__item {
padding: 0;
}
}
}
&-pc {
.devui-notification {
width: 296px;
right: 22px;
top: 60px;
&__title {
padding: 0;
}
}
.devui-notification-item-container {
background: rgba(255, 255, 255, 1);
box-sizing: border-box;
padding: 22px;
opacity: 1;
.devui-notification__item {
padding: 0;
}
}
}
.devui-notification__message {
margin-left: 0;
}
.icon-close {
font-size: 0 !important;
&:before {
content: ''
}
}
} }
.LNK:link, .LNK:visited {
color: #fff;
}
img {
-webkit-transition: all .2s ease-out .1s;
transition: all .2s ease-out .1s;
}
img:hover {
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-transform: matrix(1.02, 0, 0, 1.02, 0, 0);
transform: matrix(1.02, 0, 0, 1.02, 0, 0);
}
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.swiper-button-prev, .swiper-button-next {
color: white !important;
}
</style> </style>

View File

@@ -366,28 +366,6 @@ body::-webkit-scrollbar-corner {
border: none !important; border: none !important;
} }
input {
background-color: transparent !important;
// appearance: none;
&:-webkit-autofill,
textarea:-webkit-autofill,
select:-webkit-autofill {
-webkit-text-fill-color: inherit !important;
background-color: transparent !important;
background-image: none;
transition: background-color 36000s ease-in-out 0s; //背景色透明 生效时长 过渡效果 启用时延迟的时间
}
&:-moz-autofill,
textarea:-moz-autofill,
select:-moz-autofill {
-webkit-text-fill-color: inherit !important;
background-color: transparent !important;
background-image: none;
transition: background-color 36000s ease-in-out 0s; //背景色透明 生效时长 过渡效果 启用时延迟的时间
}
}
@media screen and (max-width: 1536px) { @media screen and (max-width: 1536px) {
.g-padding-x { .g-padding-x {
padding: 0 32px; padding: 0 32px;

BIN
src/assets/imgs/logo3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 MiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
src/assets/v3/brand/cm.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
src/assets/v3/brand/sf.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
src/assets/v3/brand/uni.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
src/assets/v3/brand/vip.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
src/assets/v3/brand/xhs.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
src/assets/v3/system-zh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 KiB

View File

@@ -1,242 +1,316 @@
<!--<template>-->
<!-- <div class="comHeader">-->
<!-- <div class="nav"><a aria-current="page" href="/" class="router-link-active router-link-exact-active logo"><img-->
<!-- src="@/assets/imgs/logo3.png" alt="Tcode"></a>-->
<!-- <ul>-->
<!-- <li><a href="javascript:;" rel="noopener noreferrer" class="LNK">知攻善防</a>-->
<!-- <div class="nav-hover hover-product">-->
<!-- <div data-v-bc7d8fb8="" class="menu-zh">-->
<!-- <div data-v-bc7d8fb8="" class="menu-row menu-row1">-->
<!-- <div data-v-bc7d8fb8="" class="menu-row-title">单点安全建设</div>-->
<!-- <div data-v-bc7d8fb8="" class="menu-row-items">-->
<!-- <div data-v-bc7d8fb8="" class="menu-section"><span data-v-bc7d8fb8=""-->
<!-- class="menu-section-title">事前防御</span><h4-->
<!-- data-v-bc7d8fb8="" class="item-tit">安全开发</h4>-->
<!-- <ul data-v-bc7d8fb8="" class="hover-child">-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-yh"></i> 代码审计服务 </a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate?tab=4"-->
<!-- class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>-->
<!-- 上线前安全评估渗透测试服务 </a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/codeinsight" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-yh"></i> 智能静态应用程序安全测试系统慧鉴 </a></li>-->
<!-- </ul>-->
<!-- <h4 data-v-bc7d8fb8="" class="item-tit">安全能力提升</h4>-->
<!-- <ul data-v-bc7d8fb8="" class="hover-child">-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/training" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-mz"></i> 人才培训与能力提升</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/training" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-mz"></i> CTF 办赛与培训</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-mz"></i> 红蓝军建设服务</a></li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- <div data-v-bc7d8fb8="" class="menu-section"><span data-v-bc7d8fb8="" class="menu-section-title">脆弱暴露评估</span>-->
<!-- <ul data-v-bc7d8fb8="" class="hover-child">-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/xray" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 风险评估系统洞鉴 <i data-v-bc7d8fb8="" class="ico-zn2"></i></a>-->
<!-- </li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/cloudatlas" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 资产暴露面运营管理云图 <i data-v-bc7d8fb8="" class="ico-zn2"></i></a>-->
<!-- </li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/alioth" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 安全验证平台御衡</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/xblade" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 自动化渗透测试平台无锋</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/aigc" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-yh"></i> 大模型系统安全评估服务</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-yh"></i> 风险评估服务</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate?tab=3"-->
<!-- class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>-->
<!-- 互联网渗透测试服务</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/defend" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-yh"></i> 安全验证服务</a></li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- <div data-v-bc7d8fb8="" class="menu-section"><span data-v-bc7d8fb8="" class="menu-section-title">网络边界防护</span>-->
<!-- <ul data-v-bc7d8fb8="" class="hover-child">-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/safeline" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> Web 应用防火墙雷池 <i data-v-bc7d8fb8=""-->
<!-- class="ico-zn"></i></a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/safeline" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> Web 应用与 API 防护雷池 <i data-v-bc7d8fb8=""-->
<!-- class="ico-zn"></i></a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/tanswer" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 流量威胁检测响应系统全悉 <i data-v-bc7d8fb8="" class="ico-zn"></i></a>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- <div data-v-bc7d8fb8="" class="menu-section"><span data-v-bc7d8fb8="" class="menu-section-title">入侵检测防御</span>-->
<!-- <ul data-v-bc7d8fb8="" class="hover-child">-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/dsensor" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 主动威胁欺骗防御系统谛听 <i data-v-bc7d8fb8="" class="ico-zn2"></i></a>-->
<!-- </li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 日志审计 </a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 数据库审计 </a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/training?tab=5"-->
<!-- class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>-->
<!-- 沙盘推演服务</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate?tab=6"-->
<!-- class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>-->
<!-- 攻防演练服务</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/defend?tab=2"-->
<!-- class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>-->
<!-- 勒索病毒演练服务</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/defend?tab=3"-->
<!-- class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>-->
<!-- 邮件钓鱼演练服务</a></li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- <div data-v-bc7d8fb8="" class="menu-section"><span data-v-bc7d8fb8="" class="menu-section-title">主机应用防护</span>-->
<!-- <h4 data-v-bc7d8fb8="" class="item-tit">主机与终端防护</h4>-->
<!-- <ul data-v-bc7d8fb8="" class="hover-child">-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/cloudwalker" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 云工作负载保护平台牧云</a></li>-->
<!-- </ul>-->
<!-- <h4 data-v-bc7d8fb8="" class="item-tit">应用防护</h4>-->
<!-- <ul data-v-bc7d8fb8="" class="hover-child">-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/enterprise" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 网站监测</a></li>-->
<!-- <li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/enterprise" class="LNK"><i-->
<!-- data-v-bc7d8fb8="" class="ico-dp"></i> 网页防篡改</a></li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div data-v-bc7d8fb8="" class="menu-row menu-row2">-->
<!-- <div data-v-bc7d8fb8="" class="menu-row-title">智能运营平台</div>-->
<!-- <div data-v-bc7d8fb8="" class="menu-row-content">-->
<!-- <div data-v-bc7d8fb8="" class="content1"><a data-v-bc7d8fb8="" href="/cosmos" class="link-item"><img-->
<!-- data-v-bc7d8fb8="" src="https://www.chaitin.cn/_nuxt/3.B1j6TFrJ.png"><span data-v-bc7d8fb8="">安全分析与运营管理平台万象</span></a><a-->
<!-- data-v-bc7d8fb8="" href="/mssSafe" class="link-item"><img data-v-bc7d8fb8=""-->
<!-- src="https://www.chaitin.cn/_nuxt/3.B1j6TFrJ.png"><span-->
<!-- data-v-bc7d8fb8="">MSS安全托管服务大观</span></a><a data-v-bc7d8fb8="" href="/insight"-->
<!-- class="link-item"><img data-v-bc7d8fb8=""-->
<!-- src="https://www.chaitin.cn/_nuxt/3.B1j6TFrJ.png"><span-->
<!-- data-v-bc7d8fb8="">风险运营管理平台鉴微</span></a><a data-v-bc7d8fb8="" href="/training?tab=4"-->
<!-- class="link-item"><img data-v-bc7d8fb8=""-->
<!-- src="https://www.chaitin.cn/_nuxt/3.B1j6TFrJ.png"><span-->
<!-- data-v-bc7d8fb8="">网络安全实训平台墨攻</span></a></div>-->
<!-- <div data-v-bc7d8fb8="" class="content2"><a data-v-bc7d8fb8="" href="/chaitinAI"-->
<!-- class="link-item"><span-->
<!-- data-v-bc7d8fb8="">安全模型平台问津</span></a></div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>&lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li><a href="javascript:;" rel="noopener noreferrer" class="LNK">智能安全</a>-->
<!-- <div class="nav-hover hover-product hover-product2 EN" style="left: 266px;">-->
<!-- <div class="product-list">-->
<!-- <div class="plist">-->
<!-- <div class="list-item">-->
<!-- <ul>-->
<!-- <li class="hover-item"><a href="javascript:;" rel="noopener noreferrer" class="LNK">AI 赋能安全</a><h4-->
<!-- class="item-tit">攻击入侵平台</h4>-->
<!-- <ul class="hover-child">-->
<!-- <li class="child-item"><a href="/xblade" class="LNK"><i class="ico-dp"></i> AI 自动化渗透测试平台无锋-->
<!-- </a></li>-->
<!-- </ul>-->
<!-- <h4 class="item-tit">安全建设平台</h4>-->
<!-- <ul class="hover-child">-->
<!-- <li class="child-item"><a href="/insight" class="LNK"><i class="ico-dp"></i> AI 风险运营管理平台鉴微-->
<!-- </a></li>-->
<!-- <li class="child-item"><a href="/cosmos" class="LNK"><i class="ico-dp"></i> AI 安全分析与运营管理平台万象-->
<!-- </a></li>-->
<!-- <li class="child-item"><a href="/chaitinAI" class="LNK"><i class="ico-dp"></i> AI 安全运营大模型平台问津-->
<!-- </a></li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- <li class="hover-item"><a href="javascript:;" rel="noopener noreferrer" class="LNK">AI 自身安全</a><h4-->
<!-- class="item-tit">代码安全</h4>-->
<!-- <ul class="hover-child">-->
<!-- <li class="child-item"><a href="/codeinsight" class="LNK"><i class="ico-dp"></i>-->
<!-- 智能静态应用程序安全测试系统慧鉴 </a></li>-->
<!-- <li class="child-item"><a href="/codeforce" class="LNK"><i class="ico-dp"></i> 智能开发与安全一体化平台码力-->
<!-- </a></li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>&lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li><a href="/solutions" class="LNK">解决方案</a></li>-->
<!-- <li><a href="javascript:;" rel="noopener noreferrer" class="LNK">资源中心</a>-->
<!-- <div class="nav-hover">-->
<!-- <ul>-->
<!-- <li class="hover-item">-->
<!-- <ul class="hover-child">-->
<!-- <li class="child-item"><a target="_self" class="LNK" href="/showcase">客户案例</a>&lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li class="child-item"><a target="_self" class="LNK" href="/reports">资料下载</a>&lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li class="child-item"><a target="_blank" class="LNK" href="https://stack.chaitin.com/vuldb/index">漏洞检测</a>-->
<!-- &lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li class="child-item"><a target="_blank" class="LNK" href="https://stack.chaitin.com/techblog/index">技术博客</a>-->
<!-- &lt;!&ndash;&ndash;&gt;</li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- </li>-->
<!-- <li><a href="javascript:;" rel="noopener noreferrer" class="LNK">合作伙伴</a>-->
<!-- <div class="nav-hover">-->
<!-- <ul>-->
<!-- <li class="hover-item">-->
<!-- <ul class="hover-child">-->
<!-- <li class="child-item"><a target="_blank" class="LNK" href="https://wanzhong.chaitin.cn">万众平台</a>-->
<!-- &lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li class="child-item"><a target="_blank" class="LNK" href="https://bbs.chaitin.cn">CT TALK - -->
<!-- 伙伴技术社区</a>&lt;!&ndash;&ndash;&gt;</li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- </li>-->
<!-- <li><a href="/intro" class="LNK">关于我们</a>-->
<!-- <div class="nav-hover">-->
<!-- <ul>-->
<!-- <li class="hover-item">-->
<!-- <ul class="hover-child">-->
<!-- <li class="child-item">&lt;!&ndash;&ndash;&gt;<a href="/intro" class="LNK">公司介绍</a></li>-->
<!-- <li class="child-item"><a target="_self" class="LNK" href="/news">新闻动态</a>&lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li class="child-item"><a target="_blank" class="LNK"-->
<!-- href="https://app.mokahr.com/campus-recruitment/chaitin">加入我们</a>&lt;!&ndash;&ndash;&gt;-->
<!-- </li>-->
<!-- <li class="child-item">&lt;!&ndash;&ndash;&gt;<a href="/contact-us" class="LNK">联系我们</a></li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- </li>-->
<!-- <li><a href="javascript:;" rel="noopener noreferrer" class="LNK">Tcode站点</a>-->
<!-- <div class="nav-hover">-->
<!-- <ul>-->
<!-- <li class="hover-item">-->
<!-- <ul class="hover-child">-->
<!-- <li class="child-item"><a target="_blank" class="LNK" href="https://rivers.chaitin.cn">Tcode百川云</a>-->
<!-- &lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li class="child-item"><a target="_blank" class="LNK" href="https://baizhi.cloud">Tcode百智云</a>&lt;!&ndash;&ndash;&gt;-->
<!-- </li>-->
<!-- <li class="child-item"><a target="_blank" class="LNK" href="https://wanzhong.chaitin.cn">万众平台</a>-->
<!-- &lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li class="child-item"><a target="_blank" class="LNK" href="https://stack.chaitin.com">CT Stack-->
<!-- 安全社区</a>&lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li class="child-item"><a target="_blank" class="LNK" href="https://bbs.chaitin.cn">CT TALK - -->
<!-- 伙伴技术社区</a>&lt;!&ndash;&ndash;&gt;</li>-->
<!-- <li class="child-item"><a target="_blank" class="LNK" href="https://xray.cool">Xray 社区</a>&lt;!&ndash;&ndash;&gt;</li>-->
<!-- </ul>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- </li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- <div class="promo">-->
<!-- <ul>-->
<!-- <li><a class="LNK" href="javascript:;" @click="handleLogin('register')">注册</a></li>-->
<!-- <li><a class="LNK" href="javascript:;" @click="handleLogin('login')">登录</a></li>-->
<!-- </ul>-->
<!-- </div>-->
<!-- </div>-->
<!--</template>-->
<template> <template>
<div class="comHeader"> <div class="comHeader">
<div class="nav"><a aria-current="page" href="/" class="router-link-active router-link-exact-active logo"><img <div class="nav">
src="@/assets/imgs/logo2.png" alt="Tcode"></a> <a aria-current="page" href="/" class="router-link-active router-link-exact-active logo">
<img src="@/assets/imgs/logo3.png" alt="Tcode">
</a>
<ul> <ul>
<li><a href="javascript:;" rel="noopener noreferrer" class="LNK">知攻善防</a> <li><a href="/" class="LNK router-link-exact-active router-link-active">首页</a></li>
<div class="nav-hover hover-product">
<div data-v-bc7d8fb8="" class="menu-zh"> <li><a href="javascript:;" class="LNK">产品服务 <i class="ico-arrow-down"></i></a>
<div data-v-bc7d8fb8="" class="menu-row menu-row1">
<div data-v-bc7d8fb8="" class="menu-row-title">单点安全建设</div>
<div data-v-bc7d8fb8="" class="menu-row-items">
<div data-v-bc7d8fb8="" class="menu-section"><span data-v-bc7d8fb8=""
class="menu-section-title">事前防御</span><h4
data-v-bc7d8fb8="" class="item-tit">安全开发</h4>
<ul data-v-bc7d8fb8="" class="hover-child">
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate" class="LNK"><i
data-v-bc7d8fb8="" class="ico-yh"></i> 代码审计服务 </a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate?tab=4"
class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>
上线前安全评估渗透测试服务 </a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/codeinsight" class="LNK"><i
data-v-bc7d8fb8="" class="ico-yh"></i> 智能静态应用程序安全测试系统慧鉴 </a></li>
</ul>
<h4 data-v-bc7d8fb8="" class="item-tit">安全能力提升</h4>
<ul data-v-bc7d8fb8="" class="hover-child">
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/training" class="LNK"><i
data-v-bc7d8fb8="" class="ico-mz"></i> 人才培训与能力提升</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/training" class="LNK"><i
data-v-bc7d8fb8="" class="ico-mz"></i> CTF 办赛与培训</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate" class="LNK"><i
data-v-bc7d8fb8="" class="ico-mz"></i> 红蓝军建设服务</a></li>
</ul>
</div>
<div data-v-bc7d8fb8="" class="menu-section"><span data-v-bc7d8fb8="" class="menu-section-title">脆弱暴露评估</span>
<ul data-v-bc7d8fb8="" class="hover-child">
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/xray" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 风险评估系统洞鉴 <i data-v-bc7d8fb8="" class="ico-zn2"></i></a>
</li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/cloudatlas" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 资产暴露面运营管理云图 <i data-v-bc7d8fb8="" class="ico-zn2"></i></a>
</li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/alioth" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 安全验证平台御衡</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/xblade" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 自动化渗透测试平台无锋</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/aigc" class="LNK"><i
data-v-bc7d8fb8="" class="ico-yh"></i> 大模型系统安全评估服务</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate" class="LNK"><i
data-v-bc7d8fb8="" class="ico-yh"></i> 风险评估服务</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate?tab=3"
class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>
互联网渗透测试服务</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/defend" class="LNK"><i
data-v-bc7d8fb8="" class="ico-yh"></i> 安全验证服务</a></li>
</ul>
</div>
<div data-v-bc7d8fb8="" class="menu-section"><span data-v-bc7d8fb8="" class="menu-section-title">网络边界防护</span>
<ul data-v-bc7d8fb8="" class="hover-child">
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/safeline" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> Web 应用防火墙雷池 <i data-v-bc7d8fb8=""
class="ico-zn"></i></a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/safeline" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> Web 应用与 API 防护雷池 <i data-v-bc7d8fb8=""
class="ico-zn"></i></a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/tanswer" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 流量威胁检测响应系统全悉 <i data-v-bc7d8fb8="" class="ico-zn"></i></a>
</li>
</ul>
</div>
<div data-v-bc7d8fb8="" class="menu-section"><span data-v-bc7d8fb8="" class="menu-section-title">入侵检测防御</span>
<ul data-v-bc7d8fb8="" class="hover-child">
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/dsensor" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 主动威胁欺骗防御系统谛听 <i data-v-bc7d8fb8="" class="ico-zn2"></i></a>
</li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 日志审计 </a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 数据库审计 </a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/training?tab=5"
class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>
沙盘推演服务</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/evaluate?tab=6"
class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>
攻防演练服务</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/defend?tab=2"
class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>
勒索病毒演练服务</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/defend?tab=3"
class="LNK"><i data-v-bc7d8fb8="" class="ico-yh"></i>
邮件钓鱼演练服务</a></li>
</ul>
</div>
<div data-v-bc7d8fb8="" class="menu-section"><span data-v-bc7d8fb8="" class="menu-section-title">主机应用防护</span>
<h4 data-v-bc7d8fb8="" class="item-tit">主机与终端防护</h4>
<ul data-v-bc7d8fb8="" class="hover-child">
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/cloudwalker" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 云工作负载保护平台牧云</a></li>
</ul>
<h4 data-v-bc7d8fb8="" class="item-tit">应用防护</h4>
<ul data-v-bc7d8fb8="" class="hover-child">
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/enterprise" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 网站监测</a></li>
<li data-v-bc7d8fb8="" class="child-item"><a data-v-bc7d8fb8="" href="/enterprise" class="LNK"><i
data-v-bc7d8fb8="" class="ico-dp"></i> 网页防篡改</a></li>
</ul>
</div>
</div>
</div>
<div data-v-bc7d8fb8="" class="menu-row menu-row2">
<div data-v-bc7d8fb8="" class="menu-row-title">智能运营平台</div>
<div data-v-bc7d8fb8="" class="menu-row-content">
<div data-v-bc7d8fb8="" class="content1"><a data-v-bc7d8fb8="" href="/cosmos" class="link-item"><img
data-v-bc7d8fb8="" src="https://www.chaitin.cn/_nuxt/3.B1j6TFrJ.png"><span data-v-bc7d8fb8="">安全分析与运营管理平台万象</span></a><a
data-v-bc7d8fb8="" href="/mssSafe" class="link-item"><img data-v-bc7d8fb8=""
src="https://www.chaitin.cn/_nuxt/3.B1j6TFrJ.png"><span
data-v-bc7d8fb8="">MSS安全托管服务大观</span></a><a data-v-bc7d8fb8="" href="/insight"
class="link-item"><img data-v-bc7d8fb8=""
src="https://www.chaitin.cn/_nuxt/3.B1j6TFrJ.png"><span
data-v-bc7d8fb8="">风险运营管理平台鉴微</span></a><a data-v-bc7d8fb8="" href="/training?tab=4"
class="link-item"><img data-v-bc7d8fb8=""
src="https://www.chaitin.cn/_nuxt/3.B1j6TFrJ.png"><span
data-v-bc7d8fb8="">网络安全实训平台墨攻</span></a></div>
<div data-v-bc7d8fb8="" class="content2"><a data-v-bc7d8fb8="" href="/chaitinAI"
class="link-item"><span
data-v-bc7d8fb8="">安全模型平台问津</span></a></div>
</div>
</div>
</div>
</div><!----></li>
<li><a href="javascript:;" rel="noopener noreferrer" class="LNK">智能安全</a>
<div class="nav-hover hover-product hover-product2 EN" style="left: 266px;">
<div class="product-list">
<div class="plist">
<div class="list-item">
<ul>
<li class="hover-item"><a href="javascript:;" rel="noopener noreferrer" class="LNK">AI 赋能安全</a><h4
class="item-tit">攻击入侵平台</h4>
<ul class="hover-child">
<li class="child-item"><a href="/xblade" class="LNK"><i class="ico-dp"></i> AI 自动化渗透测试平台无锋
</a></li>
</ul>
<h4 class="item-tit">安全建设平台</h4>
<ul class="hover-child">
<li class="child-item"><a href="/insight" class="LNK"><i class="ico-dp"></i> AI 风险运营管理平台鉴微
</a></li>
<li class="child-item"><a href="/cosmos" class="LNK"><i class="ico-dp"></i> AI 安全分析与运营管理平台万象
</a></li>
<li class="child-item"><a href="/chaitinAI" class="LNK"><i class="ico-dp"></i> AI 安全运营大模型平台问津
</a></li>
</ul>
</li>
<li class="hover-item"><a href="javascript:;" rel="noopener noreferrer" class="LNK">AI 自身安全</a><h4
class="item-tit">代码安全</h4>
<ul class="hover-child">
<li class="child-item"><a href="/codeinsight" class="LNK"><i class="ico-dp"></i>
智能静态应用程序安全测试系统慧鉴 </a></li>
<li class="child-item"><a href="/codeforce" class="LNK"><i class="ico-dp"></i> 智能开发与安全一体化平台码力
</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div><!----></li>
<li><a href="/solutions" class="LNK">解决方案</a></li>
<li><a href="javascript:;" rel="noopener noreferrer" class="LNK">资源中心</a>
<div class="nav-hover"> <div class="nav-hover">
<ul> <ul class="hover-child">
<li class="hover-item"> <li class="child-item"><a href="/product/a" class="LNK">产品服务 A</a></li>
<ul class="hover-child"> <li class="child-item"><a href="/product/b" class="LNK">产品服务 B</a></li>
<li class="child-item"><a target="_self" class="LNK" href="/showcase">客户案例</a><!----></li>
<li class="child-item"><a target="_self" class="LNK" href="/reports">资料下载</a><!----></li>
<li class="child-item"><a target="_blank" class="LNK" href="https://stack.chaitin.com/vuldb/index">漏洞检测</a>
<!----></li>
<li class="child-item"><a target="_blank" class="LNK" href="https://stack.chaitin.com/techblog/index">技术博客</a>
<!----></li>
</ul>
</li>
</ul> </ul>
</div> </div>
</li> </li>
<li><a href="javascript:;" rel="noopener noreferrer" class="LNK">合作伙伴</a>
<li><a href="javascript:;" class="LNK">解决方案 <i class="ico-arrow-down"></i></a>
<div class="nav-hover"> <div class="nav-hover">
<ul> <ul class="hover-child">
<li class="hover-item"> <li class="child-item"><a href="/solutions/industry1" class="LNK">行业解决方案 1</a></li>
<ul class="hover-child"> <li class="child-item"><a href="/solutions/industry2" class="LNK">行业解决方案 2</a></li>
<li class="child-item"><a target="_blank" class="LNK" href="https://wanzhong.chaitin.cn">万众平台</a>
<!----></li>
<li class="child-item"><a target="_blank" class="LNK" href="https://bbs.chaitin.cn">CT TALK -
伙伴技术社区</a><!----></li>
</ul>
</li>
</ul> </ul>
</div> </div>
</li> </li>
<li><a href="/intro" class="LNK">关于我们</a>
<li><a href="javascript:;" class="LNK">数据服务 <i class="ico-arrow-down"></i></a>
<div class="nav-hover"> <div class="nav-hover">
<ul> <ul class="hover-child">
<li class="hover-item"> <li class="child-item"><a href="/data/api" class="LNK">API 数据服务</a></li>
<ul class="hover-child"> <li class="child-item"><a href="/data/report" class="LNK">定制数据报告</a></li>
<li class="child-item"><!----><a href="/intro" class="LNK">公司介绍</a></li>
<li class="child-item"><a target="_self" class="LNK" href="/news">新闻动态</a><!----></li>
<li class="child-item"><a target="_blank" class="LNK"
href="https://app.mokahr.com/campus-recruitment/chaitin">加入我们</a><!---->
</li>
<li class="child-item"><!----><a href="/contact-us" class="LNK">联系我们</a></li>
</ul>
</li>
</ul> </ul>
</div> </div>
</li> </li>
<li><a href="javascript:;" rel="noopener noreferrer" class="LNK">长亭站点</a>
<li><a href="javascript:;" class="LNK">态势感知中心 <i class="ico-arrow-down"></i></a>
<div class="nav-hover"> <div class="nav-hover">
<ul> <ul class="hover-child">
<li class="hover-item"> <li class="child-item"><a href="/awareness/dashboard" class="LNK">实时态势面板</a></li>
<ul class="hover-child"> </ul>
<li class="child-item"><a target="_blank" class="LNK" href="https://rivers.chaitin.cn">长亭百川云</a> </div>
<!----></li> </li>
<li class="child-item"><a target="_blank" class="LNK" href="https://baizhi.cloud">长亭百智云</a><!---->
</li> <li><a href="/pricing" class="LNK">定价</a></li>
<li class="child-item"><a target="_blank" class="LNK" href="https://wanzhong.chaitin.cn">万众平台</a>
<!----></li> <li><a href="javascript:;" class="LNK">开源服务专区 <i class="ico-arrow-down"></i></a>
<li class="child-item"><a target="_blank" class="LNK" href="https://stack.chaitin.com">CT Stack <div class="nav-hover">
安全社区</a><!----></li> <ul class="hover-child">
<li class="child-item"><a target="_blank" class="LNK" href="https://bbs.chaitin.cn">CT TALK - <li class="child-item"><a href="/open/doc" class="LNK">文档与支持</a></li>
伙伴技术社区</a><!----></li> </ul>
<li class="child-item"><a target="_blank" class="LNK" href="https://xray.cool">Xray 社区</a><!----></li> </div>
</ul> </li>
</li>
<li><a href="javascript:;" class="LNK">关于我们 <i class="ico-arrow-down"></i></a>
<div class="nav-hover">
<ul class="hover-child">
<li class="child-item"><a href="/about/intro" class="LNK">公司介绍</a></li>
<li class="child-item"><a href="/about/contact" class="LNK">联系我们</a></li>
</ul> </ul>
</div> </div>
</li> </li>
</ul> </ul>
</div> </div>
<div class="promo"> <div class="promo">
<ul> <ul>
<li><a class="LNK" href="javascript:;" @click="handleLogin('register')">注册</a></li> <li><a class="LNK btn-primary" href="javascript:;" @click="handleLogin('login')">[控制台登录]</a></li>
<li><a class="LNK" href="javascript:;" @click="handleLogin('login')">登录</a></li> <li><a class="LNK btn-secondary" href="javascript:;" @click="handleLogin('login')">[申请试用]</a></li>
</ul> </ul>
</div> </div>
</div> </div>
@@ -270,7 +344,7 @@ const handleLogin = (type) => {
-webkit-box-pack: justify; -webkit-box-pack: justify;
-ms-flex-pack: justify; -ms-flex-pack: justify;
background: #050505; background: #050505;
border-bottom: 1px solid #656565; border-bottom: 0px solid #656565;
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
justify-content: space-between; justify-content: space-between;
@@ -282,7 +356,7 @@ const handleLogin = (type) => {
} }
.comHeader:before { .comHeader:before {
background: url(./bgt.CXTC8XIQ.png) repeat-x top; background: url(@/assets/v3/bgt.CXTC8XIQ.png) repeat-x top;
background-size: 50% auto; background-size: 50% auto;
content: ""; content: "";
height: 60px; height: 60px;

View File

@@ -788,15 +788,15 @@ onUnmounted(() => {
<template #header> <template #header>
<div v-if="formType === 'login'" class="header-h1"> <div v-if="formType === 'login'" class="header-h1">
<img :src="logo" alt="头像"> <img :src="logo" alt="头像">
<div class="headertitel">可信开源代码库账号登录</div> <div class="headertitel">Tcode账号登录</div>
</div> </div>
<div v-else class="header-h1"> <div v-else class="header-h1">
<img :src="logo" alt="头像"> <img :src="logo" alt="头像">
<div class="headertitel">可信开源代码库账号注册</div> <div class="headertitel">Tcode账号注册</div>
</div> </div>
</template> </template>
<template #default> <template #default>
<!-- <div v-if="formType === 'login'" class="header-h1">可信开源代码库账号登录</div>--> <!-- <div v-if="formType === 'login'" class="header-h1">Tcode账号登录</div>-->
<iframe :src="`https://gitcode.com/${formType || 'login'}/?be_nested=1`"></iframe> <iframe :src="`https://gitcode.com/${formType || 'login'}/?be_nested=1`"></iframe>
</template> </template>
</Modal> </Modal>

View File

@@ -39,7 +39,7 @@
<Aside :asideDefaultWidth="240" @on-select="handleClickMenu" style="height: calc(100% - 60px);padding-top: 0px;"></Aside> <Aside :asideDefaultWidth="240" @on-select="handleClickMenu" style="height: calc(100% - 60px);padding-top: 0px;"></Aside>
</d-drawer> </d-drawer>
<d-layout :style="{ marginLeft: mainMarginLeftWidth + 'px', transition: 'margin-left ease 0.1s' }"> <d-layout :style="{ marginLeft: mainMarginLeftWidth + 'px', transition: 'margin-left ease 0.1s' }">
<d-layout :class="responsiveClass" :style="{ minHeight: `calc(100% - ${footerSize?.height.value || 0}px)` }"> <d-layout :class="responsiveClass">
<!-- sidebar --> <!-- sidebar -->
<d-aside class="d-aside mr-[32px] pt-24" v-if="route?.meta?.sidebarType"> <d-aside class="d-aside mr-[32px] pt-24" v-if="route?.meta?.sidebarType">
<slot name="sidebar"></slot> <slot name="sidebar"></slot>
@@ -51,6 +51,8 @@
</slot> </slot>
</d-content> </d-content>
</d-layout> </d-layout>
<ComFooter />
<!-- footer --> <!-- footer -->
<!-- <d-footer v-if="!route?.meta?.hiddenFooter" ref="refFooter"> <!-- <d-footer v-if="!route?.meta?.hiddenFooter" ref="refFooter">
<slot name="footer"> <slot name="footer">
@@ -72,6 +74,7 @@ import { RouterView, useRoute, useRouter } from 'vue-router';
import { computed, ref, watch, watchEffect, onMounted, onUnmounted } from 'vue'; import { computed, ref, watch, watchEffect, onMounted, onUnmounted } from 'vue';
import Header from '@/components/Header/index.vue'; import Header from '@/components/Header/index.vue';
import Footer from '@/components/Footer/index.vue'; import Footer from '@/components/Footer/index.vue';
import ComFooter from '@/views/Jyh/Home/component/ComFooter.vue';
import Aside from './aside.vue'; import Aside from './aside.vue';
import { useGlobalInfoStore } from '@/stores/Global'; import { useGlobalInfoStore } from '@/stores/Global';
@@ -192,21 +195,21 @@ onUnmounted(() => {
vertical-align: middle; vertical-align: middle;
background-position: 0 center; background-position: 0 center;
} }
//
.home-background { //.home-background {
&::before { // &::before {
content: ''; // content: '';
position: absolute; // position: absolute;
top: 0; // top: 0;
left: 0; // left: 0;
width: 100%; // width: 100%;
height: 100%; // height: 100%;
//background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 1)),url('@/assets/imgs/home/首页01_BG_@2x.png'); // //background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 1)),url('@/assets/imgs/home/首页01_BG_@2x.png');
background-image: url('@/assets/imgs/home/首页02_BG_@2x.png'); // background-image: url('@/assets/imgs/home/首页02_BG_@2x.png');
background-size: cover; // background-size: cover;
background-position: center; // background-position: center;
z-index: -1; // z-index: -1;
} // }
//
} //}
</style> </style>

View File

@@ -9,8 +9,8 @@ export const usePageTitle = (title?: string, name?:string) => {
// pageTitle.value = `${title} - ${name} - ${projectName}`; // pageTitle.value = `${title} - ${name} - ${projectName}`;
pageTitle.value = `${title}`; pageTitle.value = `${title}`;
} else { } else {
// pageTitle.value = title ? `${title} - ${projectName}` : (name ? `${name} - ${projectName}` : '可信开源代码库'); // pageTitle.value = title ? `${title} - ${projectName}` : (name ? `${name} - ${projectName}` : 'Tcode');
pageTitle.value = title ? `${title}` : (name ? `${name} - ${projectName}` : '可信开源代码库'); pageTitle.value = title ? `${title}` : (name ? `${name} - ${projectName}` : 'Tcode');
} }
return pageTitle.value; return pageTitle.value;
}; };

View File

@@ -123,6 +123,7 @@ onMounted(() => {
padding: 12px; padding: 12px;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
color: white !important;
border-radius: 100px; border-radius: 100px;
/*border: 2px solid #FFF;*/ /*border: 2px solid #FFF;*/

View File

@@ -92,12 +92,12 @@
<div v-else class="welcome-page"> <div v-else class="welcome-page">
<div class="home-title"> <div class="home-title">
<img src="@/assets/imgs/jyh/ai/aiLogo2.png" alt="logo" /> <img src="@/assets/imgs/jyh/ai/aiLogo2.png" alt="logo" />
<h1>可信开源代码库AI助手</h1> <h1>TcodeAI助手</h1>
</div> </div>
<div class="home-detail"> <div class="home-detail">
<div class="home-detail-1">Hi欢迎使用可信开源代码库AI助手</div> <div class="home-detail-1">Hi欢迎使用TcodeAI助手</div>
<div class="home-detail-2">可信开源代码库AI助手 可以辅助研发人员进行软件查询批量校验查看软件详情等</div> <div class="home-detail-2">TcodeAI助手 可以辅助研发人员进行软件查询批量校验查看软件详情等</div>
<div class="home-detail-2">作为AI模型可信开源代码库AI助手 提供的答案可能不总是确定或准确的但您的反馈可以帮助 可信开源代码库AI助手 做得更好</div> <div class="home-detail-2">作为AI模型TcodeAI助手 提供的答案可能不总是确定或准确的但您的反馈可以帮助 TcodeAI助手 做得更好</div>
</div> </div>
<div style="width: 100%;margin-top: -20px"> <div style="width: 100%;margin-top: -20px">
<SwiperComponent /> <SwiperComponent />

View File

@@ -3,12 +3,12 @@
<div class="home-content"> <div class="home-content">
<div class="home-title"> <div class="home-title">
<img src="@/assets/imgs/jyh/ai/aiLogo2.png" alt="logo" /> <img src="@/assets/imgs/jyh/ai/aiLogo2.png" alt="logo" />
<h1>可信开源代码库AI助手</h1> <h1>TcodeAI助手</h1>
</div> </div>
<div class="home-detail"> <div class="home-detail">
<div class="home-detail-1">Hi欢迎使用可信开源代码库AI助手</div> <div class="home-detail-1">Hi欢迎使用TcodeAI助手</div>
<div class="home-detail-2">可信开源代码库AI助手 可以辅助研发人员进行软件查询批量校验查看软件详情等</div> <div class="home-detail-2">TcodeAI助手 可以辅助研发人员进行软件查询批量校验查看软件详情等</div>
<div class="home-detail-2">作为AI模型可信开源代码库AI助手 提供的答案可能不总是确定或准确的但您的反馈可以帮助 可信开源代码库AI助手 做得更好</div> <div class="home-detail-2">作为AI模型TcodeAI助手 提供的答案可能不总是确定或准确的但您的反馈可以帮助 TcodeAI助手 做得更好</div>
</div> </div>
<!--swiper--> <!--swiper-->
<div style="width: 100%;"> <div style="width: 100%;">

View File

@@ -0,0 +1,157 @@
<template>
<div class="com-authority"><h5 class="wow xsddhxg animated" style="visibility: visible;">屡获国际权威认证硬核技术驱动智能安全</h5>
<ul class="wow xsddhxg animated" style="visibility: visible;">
<li><img
src="http://chaitin-marketing-public.oss-cn-beijing.aliyuncs.com/images/2025/06/20/42f9989f44fb422db95349647b15409c">
<p class="num">/ 01</p>
<p class="title MultiLine">Tcode雷池WAF 软硬件市场营收规模国内安全厂商第一</p>
<p class="line"></p>
<p class="desc MultiLine">近日国际权威咨询机构 IDC 发布针对中国 Web 应用防火墙产品的市场份额系列研究报告报告显示 2024 年中国硬件 WAF 市场份额排名中Tcode科技以
10.6% 的市场份额跃居至第二全面领先于市场主流水平 2024 年私有云WAF市场份额排名中Tcode科技位列第三连续三年稳居前三持续占据领先地位与此同时2024 年国内 WAF
软硬件市场总营收规模Tcode科技位列安全厂商第一</p><a class="EASE btn-more LNK"
href="https://mp.weixin.qq.com/s/0oEiHBJuIALEcEcXqjK-iA" target="_blank">了解更多
<i class="EASE ICO ic-arow"></i></a></li>
<li><img
src="http://chaitin-bbs-test.oss-cn-beijing.aliyuncs.com/images/2025/01/06/94e1522a576e485abaa30473984a07db.jpg">
<p class="num">/ 02</p>
<p class="title MultiLine">攻防技术标杆Tcode荣获 Gartner 三项权威认可</p>
<p class="line"></p>
<p class="desc MultiLine">Tcode科技在攻击面管理ASM入侵和攻击模拟BAS云工作负载保护平台CWPP领域的技术被列入报告 Gartner 认可为推荐厂商Sample
Vendor</p><a class="EASE btn-more LNK" href="https://mp.weixin.qq.com/s/EKov7PEEhkyHP9tOd600hQ"
target="_blank">了解更多 <i class="EASE ICO ic-arow"></i></a></li>
<li><img
src="http://chaitin-bbs-test.oss-cn-beijing.aliyuncs.com/images/2025/01/03/6d7c4427b1874cb2950764d5ff12c9a0.jpg">
<p class="num">/ 03</p>
<p class="title MultiLine">安全咨询能力获认可Tcode入选国际权威报告</p>
<p class="line"></p>
<p class="desc MultiLine">全球权威咨询机构 Forrester 发布报告The Cybersecurity Consulting Services Landscape In Asia
Pacific, Q3 2023Tcode科技安全咨询服务得到国际权威专家的高度认可</p><a class="EASE btn-more LNK"
href="https://mp.weixin.qq.com/s/oFXXhpP2RjBAo6UWH5JVyQ"
target="_blank">了解更多 <i class="EASE ICO ic-arow"></i></a>
</li>
</ul>
</div>
</template>
<script>
export default {
name: "ComAuthority"
}
</script>
<style scoped lang="scss">
.com-authority {
background-color: #f5f5f5;
padding-bottom: 50px;
padding-top: 50px;
text-align: center
}
.com-authority h5 {
color: #333;
font-size: 28px;
font-weight: 400;
letter-spacing: 1.7px;
line-height: 40px
}
.com-authority ul {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin: 54px 0 0;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.com-authority li {
background: #fff;
border-radius: 24px;
-webkit-box-shadow: 0 2px 26px 7px rgba(50,50,50,.06);
box-shadow: 0 2px 26px 7px #3232320f;
list-style: none;
margin: 0 14px;
padding: 33px;
text-align: left;
width: 436px
}
.com-authority li img {
border-radius: 10px;
display: block;
height: 327px;
-o-object-fit: cover;
object-fit: cover;
width: 100%
}
.com-authority li .num {
color: #969696;
font-size: 14px;
font-weight: 400;
line-height: 20px;
margin: 47px 0 0
}
.com-authority li .title {
color: #333;
font-size: 20px;
font-weight: 400;
height: 60px;
letter-spacing: .5px;
line-height: 30px;
margin: 14px 0 0
}
.com-authority li .desc {
color: #4d4d4d;
font-size: 14px;
font-weight: 400;
height: 96px;
line-height: 24px;
-webkit-line-clamp: 4;
letter-spacing: .5px
}
.com-authority li .line {
background-color: #969696;
height: 2px;
margin: 21px 0 29px
}
.com-authority li .btn-more {
background-color: #4bad52;
border-radius: 8px;
color: #fff;
display: block;
height: 44px;
line-height: 44px;
margin: 20px 0 0;
text-align: center;
width: 155px
}
.com-authority li .btn-more:hover {
background-color: #7aba4a;
color: #fff
}
.com-authority li .btn-more:hover .ICO {
left: 15px
}
.com-authority li .btn-more .ICO {
left: 7px;
position: relative
}
.MultiLine {
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-word;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
</style>

View File

@@ -0,0 +1,96 @@
<template>
<div class="com-bank">
<!-- 第一组滚动从左到右对应原 duration: 222.105s -->
<Marquee
class="marquee-group"
:duration="222.105"
direction="normal"
:pause-on-hover="false"
:pause-on-click="false"
:iteration-count="Infinity"
>
<div class="bank-item">
<!-- 无需手动复制图片组件自动实现无缝滚动 -->
<img src="@/assets/v3/brand/aiqiyi.jpg" alt="爱奇艺">
<img src="@/assets/v3/brand/bili.jpg" alt="哔哩哔哩">
<img src="@/assets/v3/brand/chinasouth.jpg" alt="中国南方航空">
<img src="@/assets/v3/brand/cm.jpg" alt="中国移动">
<img src="@/assets/v3/brand/didi.jpg" alt="滴滴">
<img src="@/assets/v3/brand/guangfa.jpg" alt="广发银行">
<img src="@/assets/v3/brand/guangfazhengqusn.jpg" alt="广发证券">
<img src="@/assets/v3/brand/guoxin.jpg" alt="国信证券">
<img src="@/assets/v3/brand/guozai.jpg" alt="国寿">
<img src="@/assets/v3/brand/henanjich.jpg" alt="河南机场">
<img src="@/assets/v3/brand/huawei.jpg" alt="华为">
<img src="@/assets/v3/brand/kaifa.jpg" alt="开发银行">
<img src="@/assets/v3/brand/nankai.jpg" alt="南开大学">
</div>
</Marquee >
<!-- 第二组滚动-->
<Marquee
class="marquee-group"
:duration="205.02"
direction="normal"
:pause-on-hover="false"
:pause-on-click="false"
:iteration-count="Infinity"
style="margin-top: 20px;"
>
<div class="bank-item">
<img src="@/assets/v3/brand/pana.jpg" alt="松下">
<img src="@/assets/v3/brand/sf.jpg" alt="顺丰">
<img src="@/assets/v3/brand/shanghaizhengquan.jpg" alt="上海证券">
<img src="@/assets/v3/brand/shenzhenzhengquan.jpg" alt="深圳证券">
<img src="@/assets/v3/brand/spring.jpg" alt="春秋航空">
<img src="@/assets/v3/brand/state.jpg" alt="国家电网">
<img src="@/assets/v3/brand/tsinghua.jpg" alt="清华大学">
<img src="@/assets/v3/brand/uni.jpg" alt="联合利华">
<img src="@/assets/v3/brand/vip.jpg" alt="唯品会">
<img src="@/assets/v3/brand/vivo.jpg" alt="vivo">
<img src="@/assets/v3/brand/xhs.jpg" alt="小红书">
<img src="@/assets/v3/brand/xingye.jpg" alt="兴业银行">
</div>
</Marquee>
</div>
</template>
<script>
import { Marquee } from 'vue-fast-marquee';
import 'vue-fast-marquee/style.css';
export default {
name: "ComBank",
}
</script>
<style lang="scss" scoped>
.com-bank {
background-color: #fff;
margin: 0 auto;
max-width: 1440px;
overflow: hidden; /* 隐藏滚动溢出部分 */
padding: 61px 0 71px;
width: 100%;
}
/* 滚动容器样式 */
.marquee-group {
width: 100%;
}
/* 图标容器样式 */
.bank-item {
display: flex;
align-items: center;
justify-content: center;
white-space: nowrap;
}
.bank-item img {
height: 66px;
margin: 8px 22px;
width: auto;
object-fit: contain;
}
</style>

View File

@@ -0,0 +1,288 @@
<template>
<div class="com-entry">
<div class="com-slider">
<div class="swiper swiper-creative swiper-3d" ref="swiperContainer">
<div class="swiper-wrapper">
<div class="swiper-slide" data-swiper-slide-index="0">
<div class="sVdo">
<video
class="full-bg-video"
loop muted autoplay
playsinline
src="@/assets/v3/ab622e07e5f14b23be0d5c2e620ea4be.mp4">
</video>
</div>
</div>
<div class="swiper-slide" data-swiper-slide-index="1">
<div class="sImg">
<img src="@/assets/v3/4b518ec439454e7a85d261de0c833c6e.png" />
</div>
</div>
<div class="swiper-slide" data-swiper-slide-index="2">
<div class="sImg">
<img src="@/assets/v3/09d1ab34dd334323a1bb50e4a298bcfb.jpg" />
</div>
</div>
</div>
<div class="swiper-button-prev swiper-button-white" ref="prevButton"></div>
<div class="swiper-button-next swiper-button-white" ref="nextButton"></div>
<div class="swiper-pagination" ref="paginationEl"></div>
</div>
</div>
<ul class="entry-in new-feature-cards">
<li v-for="(item, index) in featureCards" :key="index" class="feature-card">
<h5 class="card-title">{{ item.title }}</h5>
<a class="EASE LNK MultiLine txt" target="_blank" :href="item.link">
{{ item.description1 }}
<br>
{{ item.description2 }}
</a>
<a class="EASE LNK MultiLine card-link" target="_blank" :href="item.link"><i class="EASE ICO ic-arow"></i></a>
</li>
</ul>
</div>
</template>
<script setup lang="ts">
import {onMounted, ref,onBeforeUnmount} from 'vue';
import Swiper from 'swiper';
// 导入 Swiper 样式和模块
import 'swiper/swiper-bundle.css';
import { Navigation, Pagination, EffectCreative,Autoplay } from 'swiper/modules';
const featureCards = [
{
title: 'SBOM 自动化分析',
description1: '生成标准 CycloneDX/SPDX',
description2: '物料清单,透视组件资产。',
link: '/sbom-analysis',
linkText: '[了解详情 >]',
},
{
title: '供应链漏洞检测分析',
description1: '深度解析依赖树,精准定位',
description2: 'CVE 漏洞与传播路径。',
link: '/supply-chain-vulnerability',
linkText: '[了解详情 >]',
},
{
title: '恶意代码投毒检测',
description1: '识别依赖混淆、组件篡改',
description2: '及后门植入攻击。',
link: '/malware-detection',
linkText: '[了解详情 >]',
},
];
// 1. 定义 ref 引用到 DOM 元素
const swiperContainer = ref(null);
const prevButton = ref(null);
const nextButton = ref(null);
const paginationEl = ref(null);
let mySwiper = null;
onMounted(() => {
if (swiperContainer.value) {
// 2. 初始化 Swiper 实例
new Swiper(swiperContainer.value, {
// 3. 注册使用的模块(必须)
modules: [Navigation, Pagination, EffectCreative,Autoplay],
// 4. 配置 Swiper 选项
loop: true, // 确保轮播循环
// 5. 配置 3D Creative 效果(必须)
effect: 'creative',
creativeEffect: {
prev: {
shadow: true,
translate: ['-100%', 0, -1],
},
next: {
translate: ['100%', 0, -1],
},
},
// 6. 配置 Navigation (导航按钮)
navigation: {
// 使用 ref 引用或 CSS 类名指向按钮元素
nextEl: nextButton.value, // 使用 ref 引用更精确
prevEl: prevButton.value, // 使用 ref 引用更精确
// 也可以使用: nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev',
// 但使用 ref 在 Vue 中更稳定。
},
// 7. 配置 Pagination (分页器)
pagination: {
el: paginationEl.value, // 使用 ref 引用指向分页器容器
clickable: true, // 确保点击分页点可以切换
},
// 自动播放(可选,如果需要)
autoplay: {
delay: 4000,
disableOnInteraction: false,
},
// 其他配置,如速度、初始化索引等...
initialSlide: 2, // 假设您想从 index=2 的 Slide 开始
});
}
});
// 在组件销毁时销毁 Swiper 实例,防止内存泄漏 (可选但推荐)
onBeforeUnmount(() => {
if (mySwiper) {
mySwiper.destroy();
}
});
</script>
<style scoped lang="scss">
.com-entry {
position: relative
}
.com-entry .entry-in {
background: #9696964d;
border-radius: 12px;
bottom: 68px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
left: 50%;
padding: 34px 0;
position: absolute;
-webkit-transform: translate(-50%);
transform: translate(-50%);
z-index: 2
}
.com-entry .entry-in li {
border-right: 1px solid #979797;
font-size: 14px;
font-weight: 400;
line-height: 22px;
list-style: none;
padding: 7px 36px 0 40px;
width: 314px
}
.com-entry .entry-in li .ic-arow {
left: 0;
position: relative
}
.com-entry .entry-in li:hover h5 {
color: #fff
}
.com-entry .entry-in li:hover a {
color: #4bad52
}
.com-entry .entry-in li:hover .ic-arow {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAWCAMAAADgvdz9AAAAAXNSR0IArs4c6QAAAKhQTFRFAAAAAP8AgICAVapVVapVSbZJQJ9gRqJdSaRbUa5RRq5RTKpVSa1SSK9QSa9QSq5RSKpVS65RTK5RS6tUSa5RSa9QSqxTTK5RS6xTS6xTTKxTTK1SS65RS61SSq1STKxTS61SS61SSq1STK1SS65RS61SSq1SSq5RS61SS6xTS65RS61SS61SS61SS61SS61SS61SS61SS61SS61SS61SS61SS61SS61SEkaAMAAAADd0Uk5TAAECAwYHCAsOExYbHCAjJicsOTpCSVlhYmlyeYGCiZGSmaGiqbGyucjP1dze4Obq7/L1+Pv8/muR6mgAAACNSURBVHichZLXDoJQEERXUBALRcGuFEWl2p3//zMTY+LL3b3zeiZbh+gv1yRBvbqMBOxXwCngeXd1xSsd8AYneeK2toQOR6CZdXhDWADnKc+NRQscxrzB3t7x2PV5w2j/xmVpEnngVUY6rNYw+xVXjrYRRjPm0mLfs0wY6OfCUZ1YeIn8UE0cNGFSRfEDg08bjv6UEeIAAAAASUVORK5CYII=);
left: 10px
}
.com-entry .entry-in li:last-child {
border: none
}
.com-entry .entry-in li h5 {
color: #4bad52;
font-size: 20px;
font-weight: 400;
letter-spacing: .5px;
line-height: 30px;
margin: 0 0 19px
}
.com-entry .entry-in li .txt {
font-size: 14px;
font-weight: 400;
height: 48px;
letter-spacing: .5px;
line-height: 24px
}
.com-slider {
background-color: #0c0c0f
}
.com-slider .swiper-slide {
background-position: top;
background-repeat: no-repeat;
background-size: cover;
cursor: pointer;
height: 990px
}
.com-slider .swiper-slide .sVdo {
height: 100%;
position: relative;
width: 100%
}
.com-slider .swiper-slide .sVdo video {
max-height: 900px;
width: 100%
}
.com-slider .swiper-slide .sVdo .btn-play {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAAAXNSR0IArs4c6QAAALdQTFRFAAAA////////////////////////////////////////////////////////////////////////////////////////+/379/v49Pr08/rz7vfv6vXr6fXq2O3a1+3Zz+nRxeXHxOTHu+C+ut+9pdaopNanmtGemdGdmNCckM2Uj8yUhsiKhceKfMOBe8OAabtvabtuaLpuZ7ptYrhoXLViWbNgV7JeVrJdT69WT69VTK5TS61ST2RNRwAAABZ0Uk5TAAEJDBYXI1Jyf4KDpaqrv9PZ6PLz/pJYTDUAAAEkSURBVHjanZXHcsMwDERXJbKoqItiepzi9N6chv//rlwyMnvo7JF4QwxAYAkoyvKy6QbeNWWewam0aIWktkitWMK40MRZYnKzXljUzzQsYqOwamSRzMW1cKqKpfsq4VG9upMJr9hUx+gHx9+Kkl78oT4xEl8uz7dcyVO5z59ET3MT5CmATfmEiOj7YtsgCwCtDhK9HulgC2TCBImudzQyQ24F6e1YBXOUdpDodk8OlGhcIL2fSoEGnRMkut+fAh24B6TnKTBg8IEvEuhL/XAgpXYX87FQinG2505rj6vhJ3rD7U94s2s8YfBQhI+ZMrhfRI+HjsFVVuFqeeZchfDlCl7XcANAVPu4SrKp2GM+dfwf2ws30jWsGcBGmNmvvg9u+z5+AJMEhmRVU6aXAAAAAElFTkSuQmCC) no-repeat 50%;
background-size: 100% 100%;
height: 30px;
left: 50%;
position: absolute;
top: 50%;
width: 30px
}
.com-slider .swiper-slide .sImg {
background-position: top;
background-repeat: no-repeat;
background-size: cover;
height: 100%;
width: 100%
}
.MultiLine {
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-word;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.ic-arow {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAWCAMAAADgvdz9AAAAAXNSR0IArs4c6QAAALdQTFRFAAAA////////////////////6urq6+vr8vLy8/Pz6urq6+vr7e3t7+/v7e3t8fHx8fHx7e3t8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v8PDw8PDw8PDw8PDw8PDw8PDw7+/v7+/v8PDw8PDw7+/v8PDw8PDw8PDw8PDw7+/v7+/v8PDw7+/v7+/v7+/v7+/v7+/v8PDw7+/v7+/v7+/v7+/v8PDw7+/v7+/v7+/v7+/v4uiVIAAAADx0Uk5TAAECAwYHDA0UFRgZHR8qNTc4RlNUVldkZWZnc3R2d4SGh5OUlpekpqe2t8PExsvR093f5+nw8fb3+/z+BY9v3gAAAJtJREFUKM99UkcWglAQ+wKKDcGGXVTsXbGT+5/L0Y0bM9kmb14miTE/eFmjILM/NxW6dAB2Vc5b7QRYeFyQi+54jFwuKM9TXDo2F/hb4FhTPDZOwKrCead/xWta4IJ8/MRtIDG54JCYVDpkxydyfEg6cHpibcas1eWxNXvM3yixfEPt2kolY1KJ1UqQLlmhxc8cAm1MoTa2P1N8A11AHbmJaAv2AAAAAElFTkSuQmCC);
margin: 10px 0 0;
width: 16px;
}
.ic-arow, .ic-down {
display: inline-block;
height: 12px;
}
.EASE {
-webkit-transition: all .4s ease-out;
transition: all .4s ease-out;
}
.ICO {
background-position: 50%;
background-repeat: no-repeat;
background-size: 100% 100%;
}
</style>

View File

@@ -0,0 +1,364 @@
<template>
<div class="comFooter">
<div class="footer-top">
<div class="footer-l"><p class="form-tip">立即预约开启智能安全之旅</p>
<form class="form"><input placeholder="请输入您的电话 +86" class="form-ipt" type="tel" maxlength="11"><!---->
<button class="EASE form-sbmt" type="submit">预约 <i class="EASE ICO ic-arow"></i></button>
</form>
<p class="contact-tip">联系我们</p>
<div class="contact-item"><i class="ICO ic-phone-g"></i> 电话400-032-7707</div>
<div class="contact-item"><i class="ICO ic-mail-g"></i> 邮箱info@chaitin.com</div>
<div class="contact-item"><i class="ICO ic-addr-g"></i> 地址北京市朝阳区天辰东路7号国家会议中心写字楼北区6层</div>
<div class="contact-media">
<div class="media-item EASE"><img src="https://www.chaitin.cn/_nuxt/gzh.DU0MJ4ao.png" alt="公众号"> 公众号</div>
<div class="media-item m-sph EASE"><img src="https://www.chaitin.cn/_nuxt/shipinhao.BWbq9rer.png" alt="视频号">
视频号
</div>
<div class="media-item m-bz EASE"><img src="https://www.chaitin.cn/_nuxt/bzhan.CjlwQaqe.png" alt="B站"> B站
</div>
</div>
</div>
<div class="footer-r">
<div class="r-links"><h5>产品与服务</h5>
<ul>
<li><a href="/safeline" class="">下一代 Web 应用防火墙雷池</a></li>
<li><a href="/dsensor" class="">主动威胁欺骗防御系统谛听</a></li>
<li><a href="/xray" class="">风险评估系统洞鉴</a></li>
<li><a href="/cloudwalker" class="">云工作负载保护平台牧云</a></li>
<li><a href="/cosmos" class="">安全分析与运营管理平台万象</a></li>
<li><a href="/cloudatlas" class="">资产暴露面运营管理云图</a></li>
<li><a href="/tanswer" class="">流量威胁检测响应系统全悉</a></li>
<li><a href="/alioth" class="">安全验证平台御衡</a></li>
<li><a href="/chaitinAI" class="">安全大模型问津</a></li>
<li><a href="/insight" class="">风险运营管理平台鉴微</a></li>
<li><a href="/xblade" class="">自动化渗透测试平台无锋</a></li>
<li><a href="/codeinsight" class="">智能静态应用程序安全测试系统慧鉴</a></li>
<li><a href="/codeforce" class="">智能开发与安全一体化平台码力</a></li>
<li><a href="/mssSafe" class="">MSS 安全托管服务大观</a></li>
<li><a href="/firewallv2" class="">第二代网络防火墙</a></li>
<li><a href="/evaluate" class="">评估分析服务</a></li>
<li><a href="/defend" class="">防守运营服务</a></li>
<li><a href="/training" class="">培训展示服务</a></li>
<li><a href="/aigc" class="">大模型系统安全评估服务</a></li>
</ul><!----></div>
<div class="r-links"><h5>解决方案</h5>
<ul>
<li><a href="/solutions#JTabAnchor" class="">热门方案</a></li>
<li><a href="/solutions?tab=industry&amp;catId=1#JTabAnchor" class="">金融行业</a></li>
<li><a href="/solutions?tab=industry&amp;catId=2#JTabAnchor" class="">能源行业</a></li>
<li><a href="/solutions?tab=industry&amp;catId=3#JTabAnchor" class="">通信行业</a></li>
<li><a href="/solutions?tab=industry&amp;catId=4#JTabAnchor" class="">政府行业</a></li>
<li><a href="/solutions?tab=industry&amp;catId=5#JTabAnchor" class="">中央企业</a></li>
<li><a href="/solutions?tab=industry&amp;catId=6#JTabAnchor" class="">制造行业</a></li>
<li><a href="/solutions?tab=industry&amp;catId=7#JTabAnchor" class="">医疗行业</a></li>
</ul>
</div>
<div class="r-links"><h5>资源中心</h5>
<ul>
<li><a target="_blank" href="/showcase">客户案例</a><!----></li>
<li><a target="_blank" href="/reports">资料下载</a><!----></li>
<li><a target="_blank" href="https://stack.chaitin.com/vuldb/index">漏洞检测</a><!----></li>
<li><a target="_blank" href="https://stack.chaitin.com/techblog/index">技术博客</a><!----></li>
</ul>
</div>
<div class="r-links"><h5>关于我们</h5>
<ul>
<li><!----><a href="/intro" class="">公司介绍</a></li>
<li><a target="_self" class="LNK" href="/news">新闻动态</a><!----></li>
<li><a target="_blank" class="LNK" href="https://app.mokahr.com/campus-recruitment/chaitin">加入我们</a><!---->
</li>
<li><!----><a href="/contact-us" class="">联系我们</a></li>
</ul>
</div>
<div class="r-links"><h5>Tcode站点</h5>
<ul>
<li><a target="_blank" href="https://rivers.chaitin.cn">Tcode百川云</a><!----></li>
<li><a target="_blank" href="https://baizhi.cloud">Tcode百智云</a><!----></li>
<li><a target="_blank" href="https://wanzhong.chaitin.cn">万众平台</a><!----></li>
<li><a target="_blank" href="https://stack.chaitin.com">CT Stack 安全社区</a><!----></li>
<li><a target="_blank" href="https://bbs.chaitin.cn">CT TALK - 伙伴技术社区</a><!----></li>
<li><a target="_blank" href="https://xray.cool">Xray 社区</a><!----></li>
</ul>
</div>
</div>
</div>
<div class="footer-botm">
<div class="Wrap">
<div class="beian"> © 2025 北京Tcode科技有限公司 <a href="https://beian.miit.gov.cn/" target="_blank" rel="noreferrer">京ICP备2024055124号-2</a>
<a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010802020947" target="_blank"
rel="noreferrer"> 京公网安备 11010802020947 </a> <a href="/html/legal.html" target="_blank"
rel="noreferrer">法律声明</a> <a
href="/html/privacy.html" target="_blank" rel="noreferrer">隐私政策</a></div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "ComFooter"
}
</script>
<style lang="scss" scoped>
.comFooter {
background-color: #fff
}
.comFooter.EN .r-links {
margin-right: 30px
}
.comFooter.EN .contact-item {
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start
}
.comFooter.EN .contact-item .ICO {
position: relative;
top: 9px
}
.comFooter.EN .contact-item .ic-addr-g {
top: 6px
}
.comFooter .contact-media {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin: 40px 0 0
}
.comFooter .contact-media .media-item {
margin: 0 30px 0 0;
text-align: center;
width: 80px
}
.comFooter .contact-media .media-item img {
background: #fff;
border-radius: 4px;
-webkit-box-shadow: 0 2px 11px 2px rgba(0,0,0,.08);
box-shadow: 0 2px 11px 2px #00000014;
display: block;
margin: 0 0 10px;
padding: 10px;
width: 100%
}
.comFooter .footer-l {
position: relative
}
.comFooter .footer-l:after {
background-color: gray;
bottom: 0;
content: "";
position: absolute;
right: -50px;
top: 0;
width: 1px
}
.comFooter .footer-top {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
position: relative;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
padding: 50px 45px
}
.comFooter .footer-botm {
background-color: #252525;
color: #b0b0b0;
font-size: 12px;
font-weight: 400;
line-height: 17px
}
.comFooter .footer-botm .Wrap {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
line-height: 24px;
padding: 18px 45px
}
.comFooter .form-tip {
color: #333;
font-size: 20px;
font-weight: 400;
letter-spacing: .5px;
line-height: 35px;
margin: 0 0 24px
}
.comFooter .form {
position: relative;
width: 363px
}
.comFooter .form-ipt {
background: #f5f5f5;
border: none;
border-radius: 8px;
color: #333;
font-size: 12px;
font-weight: 400;
height: 41px;
line-height: 40px;
padding: 0 12px;
width: 100%
}
.comFooter .form-ipt:focus-visible {
border: none
}
.comFooter .form-sbmt {
background: #4bad52;
border: none;
border-radius: 0 8px 8px 0;
color: #fff;
cursor: pointer;
font-size: 14px;
height: 41px;
letter-spacing: .5px;
line-height: 41px;
position: absolute;
right: 0;
text-align: center;
top: 0;
width: 119px
}
.comFooter .form-sbmt .ICO {
left: 6px;
position: relative
}
.comFooter .form-sbmt:hover {
background: #7aba4a
}
.comFooter .form-sbmt:hover .ICO {
left: 15px;
position: relative
}
.comFooter .footer-r {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
padding: 0 0 0 100px;
position: relative
}
.comFooter .r-links {
margin: 0 55px 0 0;
white-space: nowrap
}
.comFooter .r-links:last-child {
margin-right: 0
}
.comFooter .r-links h5 {
color: #333;
font-size: 16px;
font-weight: 400;
line-height: 22px
}
.comFooter .r-links ul {
margin: 17px 0 0
}
.comFooter .r-links li {
color: gray;
font-size: 12px;
font-weight: 400;
line-height: 30px;
list-style: none
}
.comFooter .r-links a:link,.comFooter .r-links a:visited {
color: gray;
-webkit-text-decoration: none;
text-decoration: none
}
.comFooter .r-links a:hover {
color: #4bad52
}
.comFooter .contact-tip {
color: #333;
font-size: 16px;
font-weight: 400;
line-height: 22px;
margin: 51px 0 12px
}
.comFooter .contact-item {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
color: #4d4d4d;
font-size: 14px;
font-weight: 400;
line-height: 32px
}
.comFooter .contact-item .ICO {
margin-right: 12px;
-ms-flex-negative: 0;
flex-shrink: 0
}
.comFooter .contact-item .ic-phone-g {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAgCAMAAABAUVr7AAAAAXNSR0IArs4c6QAAAtBQTFRFAAAAAP8AgICAVapVQL9AM5lmVapVSbZJQJ9gVapVVapVTrFOSaRbRKpVUK9QS7RLR6pVUa5RTbNNSapVRq5RTrFOSqpVTrFOTKpVSa1ST7BPTKpVSq1SSK9QTapVS61TTKxTSKpVS65RSrBPTqxTTK5RSq9QUKpVSaxTS69QSrFOSqxTSqxTTK5RTrFSSa1SSq1STa5VTa5RTKtUS6lWS61TS6lTTq5VSa9QS6xTSKxTSq5RTKxTSq5RTatUSq5RS65RSK5RTK1SSa1PSapSSqxTS6xTSq1SS65RS69QS61SSq1SSqxTTK5RSqxTSqxRTKxTTK9TSqxTS61STK5RTKxTTK1QSa1SS6xTTK9QS61USq9STK1SS65RSa5RTK1STKxTS65TTK5RSq5RS6xTS61SSq5RTK5RS61TTK5RS61STK5RSqxTS61QS61TTK1SSq5RS65RS65RS61STKxSTK1STKxTS65RSq1SS6xTS61SS65SS61SSq5RS61STK1RSq1SSa5RTK1SS61SS61SS6xTS6xSSqxTTK1SS61SS65RS61STK1SSq1SS61TS61STKxSSq5RS65RS61SS61RSq1SS65TS6xTS61TS61SS61RTK1SS61SS61STK5TTK5RTKxTTKxRS65RTK1SSq1SS61SSq1SS65RSqxSS61SSq1RS61SS6xTS6xSTK5RTK1STK1RS61SS6xTS65SS65RTK1SS65SS61SS61SS6xSTK5STK5RTK1SSq1SS6xTS6xSSqxSS65RS61STK5SS65RTK1SS61SS61TS61SS61TS65SS65RS61SSq1TS6xSS6xTS61STK5STK1SS61SSqxTTK1SS61RTK1STKxSS61SS65SS61SS65SS61TS61SSq1SS6xTS65RSq1STK1SS61STKxTTK5STK1SS61STKxTTKxSS6xSS65SS61SSq1RS61SOBldxgAAAO90Uk5TAAECAwQFBgcICQwNDg8QERITFBUWFxgaGxwdHh8gISIlJyktLi8wMDEzNDQ3OTs7Pj8/QEFEREVGR0dISkxMT1JSVFRUWVxgYmNjZGhra2tsb29wdXV2dnt8fX+DhISGh4iKiouMjZCTlJWXl5mcnp6go6Slq6ytr7C1t7e5ur2+v8PExcXFxcbGycnKy8zNzs/Q0NDR0tLT09PU1NbY2NjY2dvc3d3f3+Dg4eHh4uLi5OTl5eXm5ufn6Ojp6urq6uvr7Ozs7O3t7u/v7/Dw8fLz8/T09fX29vf4+Pn6+vr6+/v8/Pz9/f39/f3+/v7UCC1AAAAB+ElEQVR42mNgIBYI6lpa6wjgUcDp27/99u1Nvd4cuFSI77n8ZPX0metfn68Rw65CqvX9mgQVfkG13JPvl2NXk/7uuB2E5bDpSTw2FSKz74bC2JEvp/JjUWJ0YqUyjK29dYcuFiW2j2fCPcI795IlFiWm16bBDZddvFkbixL9PQvFYezge1OEsCiRnn9QH8p0OPkwiRGLEpbu9z4QluG+9+2CWMMl7X0dWKvMqrfzRLGHrvGhpYogmq3/jT+uSGx5nwxmlL4vxxWN3jfny4Fol4sb1HAo4et4X8bKwMDA3/m+Be4YAQVNBVaEGsdjp91BtPP+5xWQqNbImbhk3aKuEC64vwtfzJQFMVIuPJ5jwsjAEH7i/Z21y868v96oDlMj2fW+FmQFY/SW99uqPWMOPWhzV5Yxjtr7/ooMTI3WnGdVwiCGfdP59++vPjwgAomcGe/L4HGst+BJJThkuWyK+lZs5IYKW+06agF3stnORxdUIUxmObgrmXveJyIF8tL3k2wwAiT/fTEST6Xx/qYILjQlde9zkLn8mQdvNDuh5CWBOQ88ULQwuU24d6relBORUPKezpJHM1cobOarI32pBuwQbuDhs+GYaUwibvK59wenNhQnBPlxBGzPYMMWqwLm2VN2v3v//v0tL2YlnOUAj65rbFZBCSQAAenMpeRemUEEAAAAAElFTkSuQmCC);
height: 16px;
width: 17px
}
.comFooter .contact-item .ic-addr-g {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAqCAYAAADS4VmSAAAAAXNSR0IArs4c6QAABX9JREFUeNrVWGuMFEUQXhRfaHzjA4QgRBRfwfiKiYYzenDb1bM3Xb3jcRgM+EPhj4lGNPFJEP2lf9QfoIkoEjhmu3rugJzyUCKIQBRNEI2KCAIBJQGjIARO7kzNNsve3s7ea8/ESubPTPdU9Vf1fVUzqdT/zjpSgx4Mg4syLZkrZRiMTEf+mDThNekwGBqEwQUD5pcdCqvqJOm3JOF6QfgTkD4oCE8Aqd+AcJu0eqVHOEdG/l3pRQ9fWBXH3nLvckH4OFj1DRB2uOsoGL1dEG4Cg58C4RawaieQ/if/XLWBVatELiv7jkpHalBdGNwDVq9zTtuE0SuFVbOgqWEcI+JH/sVBGJwHK+ASEQZX8XqRw9fAqs3xHqNPgNVLgaaM7rVzsGoyEO5xzteDVcjOerKdAwKjZ4JV3zlEvgXC+3vsX1g1HQweAUKGdB6/sC8gymXBSLC6OR+E3icjv6bbTTHspPeyc0n48sSFU8/vTw0pqy4Dq4mDkAa3eYsbb6hYcGBVnHNh9dv9dV7EoGGCcEWMRC7bwjQuDz1Xez7nn/cV9sS6oCmjgfBXSXhSRH5jWZ47qjGFsCeFVt9cP2KSabxJhsHwbgPuSA1KEz6XT4XeyGiXFl6dO/0qb7k3pEKahggKpnKqBOHvQNgOhHvB6jUZq4KatTWDK4mZJNzOe2TkP9ApOlY4DsCz6tmkF9w+/7Gz0hHOj1HKB3sSCA8WCdRxj/BVXldufxAGZwrChW7tm+w3fsCCwvIqSR9Nh8GNibSy2UdiahrNFF0gwmA8F5i06l4wMd3apcXDjGYixSO/MS9SuIH9ntb5WNtxOytaorjkGdIuCZ8JwuDs4ufxIaxqdTleWDhdKc2b8M44AKt2FHxxV3ONZVMhqhLjguOcC6O3MrcTTjfeIbQuqRl5YXCtMPqYJPyrLvJHxTe5pYJVbdxYkuSWq93lfHXp6QtrCK8GgwcE4cZKBwGj/2QUMmFwffFNLqbNSRvjl1u1UxDurm3JDCuLQKhqHbxLuOASZH5szByjjxQQiOlh1Q9gcR9zutxGhhQIbayShMsyJUGAbRgHRn8Zo2TVo4mFHGI2rhPSp2sg3Zo+Rxi9LH7QiZ+drXaJvgMI97tTrhNGz/KMr8GquUC4y91fU0nChdFvOBp+1CndYPTz7sG82bNnn5GkZl7kPwRWf1XE/Q6HyjHeq6y6optesyWPAL7SGeJWf4xkZbNqR1KOC2vDYGg8L1g9F6x+B3LZp2UuW8NIVmzzRmtH48P1YXBLF5UDo993avhSEo/7avHpCb9waVpcs2DauV0X5fw0yylYtUs0NYytmveiRgSEf3AtlV3HUUnC99wEE1ZrzPYoVr8D/N600XMrNaxUOmoYwxNvTKdIz+xvKpi+wuhWNxt+1qUNV2g63PH2ZIy+tT/QS6Ofcs4PQXP2vp4WzBCwalG+YDB5hOrG8r1B7XO5fzFJHcujYPR1YPFnNx8+magNCcb1I42OnPPVk8Lg0t6fgPxp+VTo/dxGe7NXWj3Daf4B0Vx/d1+5y6n40J3i46RGVWqqqeFmYdXuPHpqVm/R65qKPCtYPl/oLo9x0zKnPkZwRU+D7iYVODX+4CR9yLNqQtI6Pqmr+nYuvnRL5raqCBl3LZHDD5xAbZiY0HA419JNyp5VT1RVzt2HxY8O2tdLpyIe0yThJ64zRlX7P1DC60Zh+IcE/i2N9goSvrZmMBDOcUW3u0unq5ZxKmTO9QqjttYvmTyC72esqnVz3klh9Ixqd9JO5kf+KCD1fZ4V2XflcjncjWIc1NIB/U90yvgTTBp9XBh9Qri8S8JfClPuQBu3bTB6ftFI1iZyanrqvzTOvzT4tfsX1Fx2whloi/8TWjWhr92S7V9fD3PQ+dnr/wAAAABJRU5ErkJggg==);
height: 21px;
width: 16px
}
.comFooter .contact-item .ic-mail-g {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAcCAMAAAAz6Z0tAAAAAXNSR0IArs4c6QAAAadQTFRFAAAAAP8AgICAVapVQL9AM5lmVapVSbZJVapVTbNNRqJdVapVSaRbRKpVUK9QS7RLVapVR6pVUa5RTbNNSapVRq5RTrFOSrVKR61STrFOSa1ST7BPTKpVTapVS61TSa9QTqpVSq5RSqhXTaxTTK5XSrFOSK1SSKpVS6tUTq1SSa1STK5VTK5RTKpVS7BUS7BPSa5RTapVS61TSqpRSq5RTK1SSq9QSq1VTK5PS69QSq5TSqxTS6tUS65RS6tRTK1SS7BSS61USq1STKtSS65RSqtSTKxTTK5RSqxRS6xTSa1SS61SS6xRS6xTTK1STK1SSq1SS61SSq5RSa1RSq5RS61STK1TS65TSq1SSqxTSq5RS61SSq1STK1STKxTSq1SS65RS61TS61SSqxTS6xTSq5RS61TS61TS6xTS61SS6xSS61SS61STKxTSq5RS61SS6xSTK5SS65RS61SSq1SS61SS6xSTK1STK1SS61SS65TS61SS61SS61SS61RS61STK1TTK1SS61SSq1SS6xTTK1SS61SSqxSTK5RS61SS61SS61SS61SBebJyQAAAIx0Uk5TAAECAwQFBgcJCgsMDg8QERISExQVFhcYGRocHR4hIiMkJiYrLzQ1OTo7Ozw8PD09Pz9ESE9UWV1hY2hucHR0eXp6fICEhoqNkZaWnJ2foqSlp6mrra6vsLKys7S3vcLIyczQ0tXY2drb3Nzd3t7f4eHl5eXp6urr7Ozu7/Lz8/X29vb39/j5+vv8/f77eWZPAAABOUlEQVR42q3T1VMCURTH8R/ILgaCsmBgLHaL3Yrd3R2oCHa3IibC+aN9EHCH3TvDg9/nz9w558xcIKoE0cpMFDUAyja9xO6hGzCu0/stq2eiXiDLc1OVwajmgMb0gJW2BcaQlW4aN+CXqEpzVXJhc9NEMoIkZ/esTmZs+zRpRIhwo3Rdr5aJKSP4ga7gLIYRumuIkYpyF00LQObFaWjcxGG6b5SYEhfNCAAsl+fhjXSDgcdmTVjs0awJEQQJ/f6nFi4s5kyQEcT3fXtb+aBYMEOBIK7H99ahBYqdtJgKRYLYzq9PO1/kpOWQkBFo2z98Qzu0kgYmgbbtlWj1TygQcE1r80mSC1quZARqHS89ssIrkf0jyX45ydMzq/AcAuYtOtpgdkxLAGodAfYf8TsKASC9oJpZfgqi6AdDypbgcduQAQAAAABJRU5ErkJggg==);
height: 14px;
width: 17px
}
.layout {
padding: 64px 0 0
}
input, textarea {
-webkit-user-select: auto;
}
.ic-arow {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAWCAMAAADgvdz9AAAAAXNSR0IArs4c6QAAALdQTFRFAAAA////////////////////6urq6+vr8vLy8/Pz6urq6+vr7e3t7+/v7e3t8fHx8fHx7e3t8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw7+/v8PDw8PDw8PDw8PDw8PDw8PDw7+/v7+/v8PDw8PDw7+/v8PDw8PDw8PDw8PDw7+/v7+/v8PDw7+/v7+/v7+/v7+/v7+/v8PDw7+/v7+/v7+/v7+/v8PDw7+/v7+/v7+/v7+/v4uiVIAAAADx0Uk5TAAECAwYHDA0UFRgZHR8qNTc4RlNUVldkZWZnc3R2d4SGh5OUlpekpqe2t8PExsvR093f5+nw8fb3+/z+BY9v3gAAAJtJREFUKM99UkcWglAQ+wKKDcGGXVTsXbGT+5/L0Y0bM9kmb14miTE/eFmjILM/NxW6dAB2Vc5b7QRYeFyQi+54jFwuKM9TXDo2F/hb4FhTPDZOwKrCead/xWta4IJ8/MRtIDG54JCYVDpkxydyfEg6cHpibcas1eWxNXvM3yixfEPt2kolY1KJ1UqQLlmhxc8cAm1MoTa2P1N8A11AHbmJaAv2AAAAAElFTkSuQmCC);
margin: 10px 0 0;
width: 16px;
}
</style>

View File

@@ -0,0 +1,145 @@
<template>
<div class="com-news"><h4 class="wow animated" style="visibility: visible;">最新动态</h4>
<ul class="wow animated" style="visibility: visible;">
<li><a href="https://mp.weixin.qq.com/s/gFi3Lo1KFcjt0gwhetaT5w" rel="nofollow" class="EASE" target="_blank"><img
src="@/assets/v3/6b8d01d61f9a40d2b0c74bc6783ff296.png"
alt="“Tcode外”夺冠网络攻防从此“攻守易形”AI 智能体才是终极胜负手" class="EASE"></a>
<div class="ptime"><i class="ICO ic-air"></i> 发布时间 <span>2025/11/21</span></div>
<h5 class="EASE MultiLine"><a href="https://mp.weixin.qq.com/s/gFi3Lo1KFcjt0gwhetaT5w" rel="nofollow"
class="EASE" target="_blank">Tcode外夺冠网络攻防从此攻守易形AI 智能体才是终极胜负手</a></h5>
<p class="desc MultiLine">在近日结束的腾讯云黑客松-智能渗透挑战赛线上赛中Tcode科技旗下Tcode外战队力压 238 支全球顶尖战队以全程稳定高分斩获第一名</p></li>
<li><a href="https://mp.weixin.qq.com/s/rczHE9BYY_VRMo_DgJMV-w" rel="nofollow" class="EASE" target="_blank"><img
src="@/assets/v3/2fde85b65bc84c01b5d280151a5fb555.png"
alt="Tcode科技上榜国家专精特新“小巨人”以 AI 安全创新领跑网络安全新赛道" class="EASE"></a>
<div class="ptime"><i class="ICO ic-air"></i> 发布时间 <span>2025/10/27</span></div>
<h5 class="EASE MultiLine"><a href="https://mp.weixin.qq.com/s/rczHE9BYY_VRMo_DgJMV-w" rel="nofollow"
class="EASE" target="_blank">Tcode科技上榜国家专精特新小巨人 AI 安全创新领跑网络安全新赛道</a></h5>
<p class="desc MultiLine">近日北京市经济和信息化局公示了北京市第七批专精特新小巨人企业名单Tcode科技凭借其卓越的科技创新能力和专业化的技术实力成功入选</p></li>
<li><a href="https://mp.weixin.qq.com/s/9KfUvw3zmrH3CfVbXzdLhg" rel="nofollow" class="EASE" target="_blank"><img
src="@/assets/v3/ee5c7cb6d2ef4504b0e47a2bed942d7f.png"
alt="蝉联第一Tcode科技再次问鼎“天网杯”" class="EASE"></a>
<div class="ptime"><i class="ICO ic-air"></i> 发布时间 <span>2025/09/23</span></div>
<h5 class="EASE MultiLine"><a href="https://mp.weixin.qq.com/s/9KfUvw3zmrH3CfVbXzdLhg" rel="nofollow"
class="EASE" target="_blank">蝉联第一Tcode科技再次问鼎天网杯</a></h5>
<p class="desc MultiLine">9 23 2025 年第三届天网杯网络安全大赛的赛场上Tcode科技再次展现其在漏洞挖掘领域的顶尖实力在关键产品漏洞挖掘挑战赛中拔得头筹获得一等奖</p>
</li>
</ul>
</div>
</template>
<script>
export default {
name: "ComNews"
}
</script>
<style lang="scss" scoped>
.com-news {
margin: 0 auto;
padding: 100px 0 50px;
width: 1364px
}
.com-news h4 {
color: #333;
font-size: 28px;
font-weight: 400;
letter-spacing: 1.7px;
line-height: 40px;
margin-bottom: 57px;
text-align: center
}
.com-news ul {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center
}
.com-news li {
list-style: none;
margin: 0 28px 0 0;
width: 33.333%
}
.com-news li img {
border-radius: 10px;
height: 338px;
-o-object-fit: cover;
object-fit: cover;
-o-object-position: center;
object-position: center;
width: 100%
}
.com-news li:hover img {
-webkit-transform: scale(1.02);
transform: scale(1.02)
}
.com-news li:hover h5 {
color: #4bb752
}
.com-news .ptime {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin: 20px 0 0;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
color: #333;
font-size: 14px;
font-weight: 400;
line-height: 20px
}
.com-news .ptime span {
color: #969696;
font-size: 12px;
font-weight: 400;
line-height: 17px
}
.com-news li .ic-air {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAQAAAD/5HvMAAAAAXNSR0IArs4c6QAABFVJREFUeNrNmkloFFkYx4tMCB68itRXtImRqEzAZYLLQRRbBAUPCnEJfXCmIQw4kww0fRAVccFDqwh2VBQRPbkcBioEhY6oB/EyE5AOAWG2nsElM0NrYjSHHJK/dHVXpZd6Ve+rJVT9IXS/qn71y1u+73vve4ri7WpSuyhJGdIpTwUq0gzNUJEKlCedMpRUu5QmZWGuGFEf6TRBcNEE6dQXoxBR2hapCcrRrCtKtWYppybaFgUOs2QxpWmchVKtcUovWRwcTbOWoqJnGFNFLaU0B0CjbqFR3zCmRtUtvmA6WyhLc4HhlDRH2c4WjzhL22kkUBhTI0vbPeBocXUyFBwQ1EktzsXZTzNh4Ria0fZzBnIv09p40azaK9864eMYSFKtpMVD7qzajou7zqzwhrL98HaccZ0tIU10RyPgYJcou+A4JWXFTmIujBe24QiGHK23vUNpDtBnWdqAS3iDaeRcfJyN29VSwaJo6MYgpjBtKOv2dKox3ikGB7MSRzFWQSnriGtwUhcvUToomG24if9rYEra7v7LdE1w6iMatLQMSTxrQCnpI1olosqqQFdN+IVZg3P4yxampJdyRjIx32E5PzB7cB8fhTAl3ZWrKTe/sPHoTFfgJ4w4opR1UtLZVhZN1O8FZjMGMC4A+L1uWB+QrbWvDDTItTA9eITPwvZ4hpd1JWtl69aNRbHEKtTSapzAK8fuuQe9ruS1/D87oTQpapfs4ztwB+9dRstlXG4oe8wJR7oUSro/1orv8dx16H7GMaRsygc4AyKpUMb5kfU4j38kZtIkenHQdvr/wAHKKKSLb+/Dzy4WxtR/2IftNi6jpB0cIF2hvPh2D/6QwvkbcazDnwK30cYByitUcHqgA7ccJnhZY9iADvzqy21YKijuYcdex4n+Al8jhofC+/d5QEVFZtHTjgF8sn3dEFaAcMMB+BRzYaTIrsJ2I9/wstuIgXDcsUMPsYGkI8VWXKiZc+eN0m8FbWdqHbvLCpwfxPGL8ZoppIzvu1B0xHnLddoFx2lvHxeexr84bHze6Goyn3CB8o6GUaTlxt9VNqOqXle4deuurkOsaxIm80durRkp5yrqvIvWukukndxak4zww94YjDngTFU6lxV+8AK0am2qxNXXhc4lz61zwsiQcENYUzncQofxqVvgWB/wh7T3IJ8wjGn8hu7KjLtrA3SGW2efr2XQcOW1Zjt9Z+xzVKuHV+OslTvytlA0gT4hUSlZg6EaoG94NeZ8LqVNoFRNab8VN77jzrCEz82GMtDZhvKNeFpZn7HqG6/JqnnZjikBXbW9o+EEPuAar7607w2rYdyDJry7FXtZYUdDgo+/pXccy3zY+Lo2TS3QpqekRm1zjWFtC7tqTphnjNjGeQRTC5FLvkQwPRXBBF4EU5wRTAJHME0ewYMEETxqEcHDKKbbjdRxHSteitCBJivQjdCRr/krRtRPg1KH4gZDPhRXc30V1rHBL/3JmVpOd2CzAAAAAElFTkSuQmCC);
height: 36px;
margin-right: 14px;
width: 36px
}
.com-news li:last-child {
margin: 0
}
.com-news li h5 {
color: #333;
font-size: 20px;
height: 60px;
line-height: 30px;
margin: 20px 0 0
}
.com-news li .desc,.com-news li h5 {
font-weight: 400;
letter-spacing: .5px
}
.com-news li .desc {
color: #4d4d4d;
font-size: 14px;
line-height: 24px;
margin: 18px 0 0;
-webkit-line-clamp: 4
}
.ICO {
background-position: 50%;
background-repeat: no-repeat;
background-size: 100% 100%;
}
</style>

View File

@@ -0,0 +1,56 @@
<template>
<div class="com-rank">
<div class="rank-item wow xsddhxg animated" style="visibility: visible;"><h5 class="JBFont">
<span>Top&nbsp;</span><span class="comStatistic" data-animation-running="false">3</span></h5>
<p>国内大型攻防演练<br> 3 成绩保持者</p></div>
<div class="rank-item wow xsddhxg animated" style="visibility: visible;"><h5 class="JBFont"><span
class="comStatistic" data-animation-running="false">99.99</span> % </h5>
<p>入侵攻击检出率<br>99.9956%<br>攻击拦截性能行业领先</p></div>
<div class="rank-item wow xsddhxg animated" style="visibility: visible;"><h5 class="JBFont"><span>"大满贯"</span></h5>
<!----><p>3 大国际权威咨询机构<br>大满贯认可</p></div>
</div>
</template>
<script>
export default {
name: "ComSystem"
}
</script>
<style scoped lang="scss">
.com-rank {
background-color: #f5f5f5;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
padding: 100px 0 50px;
text-align: center;
-webkit-box-pack: center;
-ms-flex-pack: center;
background: url(@/assets/v3/index-top-bg.D8cqOFJJ.png) no-repeat bottom;
background-size: cover;
justify-content: center
}
.com-rank .rank-item {
padding: 0 63px;
width: 460px
}
.com-rank .rank-item h5 {
font-family: Avenir;
font-size: 70px;
font-weight: 400;
letter-spacing: 2px;
line-height: 109px
}
.com-rank .rank-item p {
color: #333;
font-size: 16px;
font-weight: 400;
letter-spacing: .5px;
line-height: 24px;
margin: 30px 0 0
}
</style>

View File

@@ -0,0 +1,198 @@
<template>
<div class="com-safe">
<div class="safe-tit wow xsddhxg animated" style="visibility: visible;">
<div class="safe-swip"><span></span>
<div class="swiper swiper-initialized swiper-vertical swiper-backface-hidden">
<div class="swiper-wrapper"
style="transition-duration: 0ms; transform: translate3d(0px, -70px, 0px); transition-delay: 0ms;">
<div class="swiper-slide swiper-slide-next swiper-slide-prev" data-swiper-slide-index="0"
style="height: 70px;"><h5><span class="JBFont">技术驱动</span></h5><!----></div>
<div class="swiper-slide swiper-slide-active" data-swiper-slide-index="1" style="height: 70px;"><h5><span
class="JBFont">实战攻防</span></h5><!----></div>
</div><!----><!----><!----></div>
<span></span>
<div class="swiper swiper-initialized swiper-vertical swiper-backface-hidden">
<div class="swiper-wrapper"
style="transition-duration: 0ms; transform: translate3d(0px, -70px, 0px); transition-delay: 0ms;">
<div class="swiper-slide swiper-slide-next swiper-slide-prev" data-swiper-slide-index="0"
style="height: 70px;"><h5><span class="JBFont">场景沉淀</span></h5><!----></div>
<div class="swiper-slide swiper-slide-active" data-swiper-slide-index="1" style="height: 70px;"><h5><span
class="JBFont">智能安全</span></h5><!----></div>
</div><!----><!----><!----></div>
</div><!----></div>
<div class="safe-item wow xsddhxg animated" style="visibility: visible;"><span class="num">/ 01</span><img
src="@/assets/v3/7a87c819de3a45f69d1697d6344f5483.gif">
<div class="item-r"><h6 class="MultiLine"><a class="EASE" href="https://www.chaitin.cn/solutions">防勒索专项解决方案</a>
</h6>
<div class="desc-out MultiLine"><p class="desc"><a class="EASE" href="https://www.chaitin.cn/solutions">此方案针对勒索攻击特点和企业在防护过程中的薄弱点借鉴
IPDRR 架构建立风险识别防御检测响应与恢复的能力提升应对勒索攻击的能力覆盖事前安全布防事中监测处置和事后复盘优化同时具备对防范勒索攻击体系有效性的验证能力</a></p></div>
<a class="EASE btn-more LNK" href="https://www.chaitin.cn/solutions">了解更多 <i class="EASE ICO ic-arow"></i></a>
</div>
</div>
<div class="safe-item wow xsddhxg animated" style="visibility: visible;"><span class="num">/ 02</span><img
src="@/assets/v3/b173212bc7814f28b4674b9cff1097ed.gif">
<div class="item-r"><h6 class="MultiLine"><a class="EASE"
href="https://www.chaitin.cn/solutions?tab=hot&amp;catId=3">实战攻防常态化保障方案</a>
</h6>
<div class="desc-out MultiLine"><p class="desc"><a class="EASE"
href="https://www.chaitin.cn/solutions?tab=hot&amp;catId=3">通过组建高质量远程值守团队虚拟坐席无需客户数据出网提供远程值守同时基于云图御衡万象等自动化平台降低人工成本提供弹性演练策略消除监控真空期针对一系列专项推出勒索演练两高一弱自查0
Day演练等方案可在演练期兼顾各类专项工作保障总体成效</a></p></div>
<a class="EASE btn-more LNK" href="https://www.chaitin.cn/solutions?tab=hot&amp;catId=3">了解更多 <i
class="EASE ICO ic-arow"></i></a></div>
</div>
<div class="safe-item wow xsddhxg animated" style="visibility: visible;"><span class="num">/ 03</span><img
src="@/assets/v3/a631f17938ec427eb0efcaf7ef19d716.gif">
<div class="item-r"><h6 class="MultiLine"><a class="EASE"
href="https://www.chaitin.cn/solutions?tab=hot&amp;catId=2">CTEM-漏洞运营解决方案</a>
</h6>
<div class="desc-out MultiLine"><p class="desc"><a class="EASE"
href="https://www.chaitin.cn/solutions?tab=hot&amp;catId=2">此方案结合企业现状及漏洞管理成熟度针对性地建立常态化漏洞巡检突发漏洞响应专项漏洞管理漏洞优先级排序漏洞闭环流转等机制实现资产暴露面漏洞的精准发现进而建立覆盖漏洞全生命周期的自动化管理体系实现风险处置的快速闭环</a>
</p></div>
<a class="EASE btn-more LNK" href="https://www.chaitin.cn/solutions?tab=hot&amp;catId=2">了解更多 <i
class="EASE ICO ic-arow"></i></a></div>
</div>
</div>
</template>
<script>
export default {
name: "ComSafe"
}
</script>
<style lang="scss" scoped>
.com-safe {
padding-top: 50px
}
.com-safe .safe-tit {
color: #333;
font-size: 28px;
font-weight: 400;
height: 40px;
letter-spacing: 1.7px;
line-height: 40px;
margin-bottom: 40px;
overflow: hidden;
text-align: center
}
.com-safe .safe-tit span {
margin: 0 20px
}
.com-safe .safe-tit .safe-swip {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center
}
.com-safe .safe-tit .safe-swip .swiper {
height: 40px;
margin: 0
}
.com-safe .safe-item {
border-top: 1px solid #969696;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin: 0 auto;
padding: 63px 0 63px 177px;
position: relative;
width: 1351px
}
.com-safe .safe-item .desc-out {
-webkit-line-clamp: 3
}
.com-safe .safe-item:hover img {
-webkit-transform: scale(1.08);
transform: scale(1.08)
}
.com-safe .safe-item:hover .item-r .btn-more {
background-color: #4bad52;
color: #fff
}
.com-safe .safe-item:hover .item-r .btn-more .ICO {
left: 15px
}
.com-safe .safe-item .num {
color: #1a1a1a;
font-size: 14px;
font-weight: 400;
left: 0;
line-height: 20px;
position: absolute;
top: 76px
}
.com-safe .safe-item img {
height: auto;
-o-object-fit: contain;
object-fit: contain;
width: 160px;
-ms-flex-negative: 0;
flex-shrink: 0
}
.com-safe .safe-item .item-r {
padding: 6px 177px 0 148px
}
.com-safe .safe-item .item-r h6 {
color: #333;
font-size: 20px;
font-weight: 400;
height: 30px;
letter-spacing: .5px;
line-height: 30px;
margin-bottom: 27px;
-webkit-line-clamp: 1
}
.com-safe .safe-item .item-r .desc {
color: #333;
font-size: 14px;
font-style: normal;
font-weight: 400;
letter-spacing: .5px;
line-height: 24px
}
.com-safe .safe-item .item-r .btn-more {
background: #7aba4a;
border-radius: 8px;
color: #fff;
display: block;
height: 38px;
line-height: 38px;
margin: 51px 0 0;
text-align: center;
width: 140px
}
.com-safe .safe-item .item-r .btn-more .ICO {
left: 7px;
position: relative
}
.com-safe .safe-item .item-r .btn-more:hover {
background-color: #4bad52;
color: #fff
}
.com-safe .safe-item .item-r .btn-more:hover .ICO {
left: 15px
}
</style>

View File

@@ -0,0 +1,39 @@
<template>
<div class="com-system"><p class="tip wow xsddhxg animated" style="margin: 0px; visibility: visible;">
知攻善防由攻击视角构建防御体系</p>
<p class="tip tip2 wow xsddhxg animated" style="visibility: visible;">智能安全 AI 驱动重塑安全范式</p><img
class="wow xsddhxg animated" src="@/assets/v3/system-zh.png" alt="立足于攻防,打造智能安全运营体系"
style="visibility: visible;"><!----></div>
</template>
<script>
export default {
name: "ComSystem"
}
</script>
<style scoped lang="scss">
.com-system {
background-color: #050705;
padding: 97px 0 125px;
position: relative;
text-align: center
}
.com-system img {
display: block;
margin: 0 auto;
width: 1200px
}
.com-system .tip {
color: #fff;
font-size: 28px;
font-weight: 400;
letter-spacing: 1.7px;
line-height: 40px;
margin-bottom: 46px;
text-align: center;
width: 100%
}
</style>

View File

@@ -0,0 +1,53 @@
<template>
<div class="com-video"><h5 class="wow xsddhxg animated" style="visibility: visible;">4000+ 客户信赖之选</h5>
<div class="v-in wow xsddhxg animated" style="visibility: visible;">
<video class="video" preload="none" controls="" controlslist="nodownload" loop=""
poster=""
src="https://chaitin-marketing-public.oss-cn-beijing.aliyuncs.com/%E9%95%BF%E4%BA%AD%E6%A1%88%E4%BE%8B_250402.mp4"></video>
</div>
</div>
</template>
<script>
export default {
name: "ComVideo"
}
</script>
<style lang="scss" scoped>
.com-video {
padding: 23px 0 0
}
.com-video h5 {
color: #333;
font-size: 28px;
font-weight: 400;
letter-spacing: 1.7px;
line-height: 40px;
text-align: center
}
.com-video .v-in {
overflow: hidden;
overflow-x: scroll;
padding: 40px 0 100px;
width: 100%
}
.com-video .v-in > * {
display: block;
margin: 0 auto
}
.pg-home .video {
display: block;
height: auto;
margin: 0 auto;
max-width: 1440px;
-o-object-fit: cover;
object-fit: cover;
width: 100%;
}
</style>

View File

@@ -1,198 +1,14 @@
<template> <template>
<div class="home-container"> <div class="pg-home">
<div class="home-content"> <ComEntry />
<div class="home-title animate-fade-in-up"> <ComSystem />
<img src="@/assets/imgs/logo.png" alt="logo"/> <ComRank />
<h1>可信开源代码库</h1> <ComAuthority />
</div> <ComSafe />
<div class="home-search animate-fade-in-up delay-100" ref="homeSearch" :class="{ 'glow-border': inputGlow }"> <ComVideo />
<d-input <ComBank />
ref="searchInput" <ComNews />
placeholder="请输入搜索关键字"
@focus="inputFocus"
@blur="inputBlur"
@keyup.enter="search"
:autocomplete="'off'"
v-model="searchStr"
>
<template #prepend>
<d-dropdown @toggle="onCateToggle($event)">
<div class="flex items-center gap-1 cursor-pointer dropdown-trigger">
{{ searchType }}
<d-icon :rotate="cateRotate" name="icon-chevron-down-2" class="transition-transform"></d-icon>
</div>
<template #menu>
<ul class="list-menu">
<li class="menu-item" @click="onCategoryChange('软件')">软件</li>
<d-dropdown :position="position" :offset="0">
<li class="menu-item">
行业
<i class="icon icon-chevron-right"></i>
</li>
<template #menu>
<ul class="list-menu">
<li class="menu-item" v-for="option in industryList" @click="onCategoryChange(option)">
{{ option.name }}
</li>
</ul>
</template>
</d-dropdown>
</ul>
</template>
</d-dropdown>
</template>
<template #append>
<div id="advancedSearch close-isopen" class="advanced-search" @click="openAdvancedSearch">
<span class="close-isopen">高级筛选</span>
<d-icon class="close-isopen transition-transform" :rotate="rotate" name="icon-chevron-down-2"></d-icon>
</div>
</template>
</d-input>
<d-dropdown-menu v-model="isOpen" :origin="searchInput?.$el" :offset="offset" :clickOutside="closeOutside">
<div class="advanced-search-menu" :style="{ width: dropdownWidth + 'px' }">
<AdvanceSearch @submit="submit($event)" @cancel="isOpen = false" class="p-20" :layout="'vertical'">
<template #title>
<span class="title">高级筛选</span>
</template>
</AdvanceSearch>
</div>
</d-dropdown-menu>
<d-button icon="search" shape="circle" @click="search"></d-button>
</div>
<div style="width: 70%" class="from-blue-50 to-white animate-fade-in-up delay-200">
<d-row :gutter="16" class="mb-8 top-btn">
<div
style="cursor: pointer"
v-for="(item, index) in topButtons"
:key="item.name"
@click="handleButtonClick(item)"
class="hover-lift"
:style="{ animationDelay: `${index * 100}ms` }"
>
<div style="width: 100px;height: 84px;flex-direction: column;padding: 12px 0;margin: 0 12px"
class="bg-white rounded-lg shadow-md flex items-center justify-center mb-2">
<div>
<img style="width: 32px;height: 32px;margin-bottom: 4px" :src="item.icon"
class="text-blue-600 text-xl func-icon transition-transform"></img>
</div>
<div class="text-sm font-medium">{{ item.name }}</div>
</div>
</div>
</d-row>
<div class="dashboard-page">
<d-row :gutter="16" class="main-row">
<d-col :span="14">
<div class="bg-white rounded-xl shadow-md p-4 hover-shadow">
<div class="section-title">全球威胁态势实时监控
<a href="#" class="text-blue-600 text-sm">更多 ></a></div>
<d-row :gutter="24" class="threat-row">
<d-col :span="10">
<d-chart :option="lineOption" style="width: 400px; height: 240px"></d-chart>
</d-col>
<d-col :span="8">
<d-chart :option="pieOption" style="width: 240px; height: 240px"></d-chart>
</d-col>
<d-col :span="6">
<div class="data-card">
<div class="data-item hover-scale">
<span class="data-label">今日检测量</span>
<span class="data-value count-up">128万次</span>
</div>
<div class="data-item hover-scale">
<span class="data-label">高危威胁</span>
<span class="data-value danger count-up">327</span>
</div>
</div>
</d-col>
</d-row>
</div>
</d-col>
<d-col style="height: 320px" :span="10">
<div style="height: 100%" class="bg-white rounded-xl shadow-md p-4 hover-shadow">
<div class="section-title">AI+安全核心能力
<router-link :to="{ name: 'aihome' }" style="cursor: pointer;" class="text-blue-600 text-sm">更多 >
</router-link>
</div>
<d-row :gutter="16" class="ai-capability-row">
<d-col :span="8" v-for="(item, index) in aiCapabilities" :key="index">
<div class="capability-card hover-lift" :style="{ animationDelay: `${index * 150}ms` }">
<div class="capability-icon">
<img :src="item.icon" class="text-blue-600 text-2xl transition-transform"></img>
</div>
<h2 class="capability-title">{{ item.title }}</h2>
<h4>{{ item.rate }}</h4>
<p class="capability-desc">{{ item.desc }}</p>
</div>
</d-col>
</d-row>
</div>
</d-col>
</d-row>
</div>
<d-row style="height: 237px" :gutter="16" class="mb-8">
<d-col style="height: 100%" :span="8">
<div style="height: 100%" class="bg-white rounded-xl shadow-md p-4 mb-4 hover-shadow">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-bold">团队与成果</h3>
<router-link :to="{ name: 'OurTeam' }" style="cursor: pointer;" class="text-blue-600 text-sm">更多 >
</router-link>
</div>
<div class="flex flex-col items-center">
<h4 class="font-medium mb-2">顶尖安全团队</h4>
<div class="flex gap-4 mb-3">
<div class="flex flex-col items-center member-item hover-bob" v-for="(member, index) in teamMembers" :key="member.name" :style="{ animationDelay: `${index * 100}ms` }">
<img src="https://picsum.photos/id/1001/60/60" alt="团队成员" class="w-14 h-14 rounded-full mb-1 member-avatar transition-transform">
<span class="text-sm font-medium">{{ member.name }}</span>
<span class="text-xs text-gray-500">{{ member.title }}</span>
</div>
</div>
<div class="flex gap-2">
<button class="bg-blue-600 text-white text-xs px-3 py-1 rounded hover-scale">国家级安全认证团队</button>
<button class="bg-blue-100 text-blue-600 text-xs px-3 py-1 rounded hover-scale">200+专利技术</button>
<button class="bg-blue-100 text-blue-600 text-xs px-3 py-1 rounded hover-scale">200+专利技术</button>
</div>
</div>
</div>
</d-col>
<d-col style="height: 100%" :span="16">
<div style="height: 100%" class="bg-white rounded-xl shadow-md p-4 hover-shadow">
<div class="flex justify-between items-center mb-4">
<h3 class="text-lg font-bold">最新动态</h3>
<router-link :to="{ name: 'Insights' }" style="cursor: pointer;" class="text-blue-600 text-sm">更多 >
</router-link>
</div>
<div style="overflow: auto; height: calc(100% - 46px);">
<d-timeline direction="vertical" center>
<d-timeline-item
v-for="(news, index) in latestNews"
:key="index"
:time="news.year"
dot-color="#ff6384"
line-color="#e5e7eb"
class="timeline-item animate-fade-in-left"
:style="{ animationDelay: `${index * 150}ms` }"
>
<div class="timeline-content hover-translate-x">
<p class="font-medium transition-color">{{ news.title }}</p>
<p class="text-xs text-gray-500">{{ news.desc }}</p>
</div>
</d-timeline-item>
</d-timeline>
</div>
</div>
</d-col>
</d-row>
</div>
</div>
</div> </div>
<d-modal class="warning-modal" v-model="warningModalVisable" title="" style="width: 600px">
<EarlyWarningDetail :warningData="currentWarning" :type="'user'"></EarlyWarningDetail>
</d-modal>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@@ -200,782 +16,26 @@
import {ref, onMounted, onBeforeUnmount, computed} from 'vue'; import {ref, onMounted, onBeforeUnmount, computed} from 'vue';
import {useRoute, useRouter} from 'vue-router'; import {useRoute, useRouter} from 'vue-router';
import {useAccount} from '@/utils/hooks/useAccount'; import {useAccount} from '@/utils/hooks/useAccount';
import AdvanceSearch from '@/components/AdvanceSearch/index.vue';
import {getHomeNoticeList} from '@/api/jyh';
import EarlyWarningDetail from '@/views/Jyh/PersonalCenter/Detail/EarlyWarningDetail.vue';
import {useGlobalInfoStore} from '@/stores/Global'; import {useGlobalInfoStore} from '@/stores/Global';
import {useDiscussGetUserInfo} from '@/api/discussion/hook';
import {DChart} from 'vue-devui/echarts'; import {DChart} from 'vue-devui/echarts';
import {reactive} from 'vue'; import {reactive} from 'vue';
import ComEntry from './component/ComEntry.vue';
import ComSystem from './component/ComSystem.vue';
import ComRank from './component/ComRank.vue';
import ComAuthority from './component/ComAuthority.vue';
import ComSafe from './component/ComSafe.vue';
import ComVideo from './component/ComVideo.vue';
import ComBank from './component/ComBank.vue';
import ComNews from './component/ComNews.vue';
// --- Echarts Options (保持不变) ---
const lineOption = reactive({
tooltip: {show: true, trigger: 'axis'},
grid: {
left: '0%',
right: '3%',
bottom: '3%',
containLabel: true,
},
xAxis: {
type: 'category',
data: ['0', '30', '60', '90', '120', '150', '180', '210', '240'],
axisLine: {lineStyle: {color: '#909399'}},
axisTick: {show: false},
},
yAxis: {
type: 'value',
max: 550,
axisLine: {show: false},
axisTick: {show: false},
splitLine: {lineStyle: {color: '#eee'}},
},
series: [
{
name: '实时威胁A',
data: [0, 150, 250, 200, 350, 400, 450, 500, 550],
type: 'line',
itemStyle: {color: '#ff9f40'},
lineStyle: {color: '#ff9f40'},
symbol: 'circle',
symbolSize: 6,
},
{
name: '实时威胁B',
data: [0, 100, 200, 150, 300, 350, 400, 450, 500],
type: 'line',
itemStyle: {color: '#36a2eb'},
lineStyle: {color: '#36a2eb'},
symbol: 'circle',
symbolSize: 6,
},
],
});
const pieOption = reactive({
tooltip: {show: true, trigger: 'item'},
legend: {
icon: "rect",
itemHeight: 13,
itemWidth: 13,
itemGap: 10,
top: '0%',
left: '0%',
right: '0%',
},
series: [
{
title: '态势感知',
type: 'pie',
radius: ['40%', '70%'],
data: [
{name: '态势感知', value: 34, itemStyle: {color: '#ff6384'}},
{name: '实时威胁', value: 33, itemStyle: {color: '#36a2eb'}},
{name: '其他', value: 33, itemStyle: {color: '#ffce56'}},
],
label: {
show: true,
formatter: '{b}: {d}%',
position: 'center',
},
labelLine: {show: true},
},
],
});
// --- Data & State (保持不变) ---
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const inputGlow = ref(false);
const searchStr = ref('');
const position = ref(['right-start', 'right-end']);
const searchType = ref('软件');
const offset = ref({mainAxis: 7, crossAxis: -10});
const isOpen = ref(false);
const cateRotate = ref(0);
const warningModalVisable = ref(false);
const currentWarning = ref();
const {isLogin} = useDiscussGetUserInfo();
const homeSearch = ref(null);
const dropdownWidth = ref(0);
import aqts from '@/assets/imgs/jyh/menu/风险预警.png'
import aqqb from '@/assets/imgs/jyh/menu/许可证检测.png'
import aqjc from '@/assets/imgs/jyh/menu/已知漏洞检测.png'
import aqzk from '@/assets/imgs/jyh/menu/可信治理.png'
import kxrj from '@/assets/imgs/jyh/menu/可信软件.png'
// 顶部功能按钮数据 (保持不变)
const topButtons = ref([
{name: '数据服务中心', icon: aqzk},
{name: '安全治理服务', icon: aqjc},
{name: '威胁情报库', icon: aqqb},
{name: '态势感知中心', icon: aqts},
{name: 'AI智能引擎', icon: kxrj},
]);
// 按钮点击事件处理 (保持不变)
const handleButtonClick = (item) => {
const routeMap = {
'数据服务中心': 'Search',
'安全治理服务': 'TestingCenter',
'威胁情报库': 'Insights',
'AI智能引擎': 'aihome',
'态势感知中心': 'http://222.20.126.217:10010/bigScreen/#/kxky'
};
const target = routeMap[item.name];
if (!target) return;
if (item.name === '安全态势') {
window.open(target, '_blank');
} else {
router.push({name: target});
}
};
import znjc from '@/assets/imgs/jyh/menu/AI大模型能力.png'
import aiLogo1 from '@/assets/imgs/jyh/ai/aiLogo1.png'
import vulnerabilityForewarning from '@/assets/imgs/jyh/menu/vulnerabilityForewarning.png'
// AI+安全核心能力数据 (保持不变)
const aiCapabilities = ref([
{
title: '智能检测引擎',
rate: '覆盖99.9%样本率)',
desc: '智能检测引擎具备对各类文件、恶意软件的高精度识别能力。',
icon: znjc
},
{
title: '行为分析模型',
rate: '(实时响应<1秒',
desc: '深度行为分析模型可实时识别异常行为,精准定位威胁根源。',
icon: aiLogo1
},
{
title: '自动溯源系统',
rate: '覆盖99.9%',
desc: '自动溯源系统可快速定位威胁来源,助力威胁事件全链路分析。',
icon: vulnerabilityForewarning
},
]);
// 团队成员数据 (保持不变)
const teamMembers = ref([
{name: '主理', title: '安全专家/负责人'},
{name: '顾问', title: '企业安全专家'},
{name: '架构', title: '技术架构专家'},
]);
// 最新动态数据 (保持不变)
const latestNews = ref([
{year: '2024', title: '中国头安全实验室等合作的智能决策模型授奖', desc: '智能决策模型在多领域安全决策中表现卓越,获行业权威奖项。', more: true},
{year: '2023', title: '智能检测引擎从一定论到再超越的与证明', desc: '2024年深度优化检测在极端场景中达99.9%准确率,性能、智能、召回率再升级。', more: false},
{year: '2023', title: '新闻网常务委员:邻区区委交换稿与证明', desc: '网络空间安全会议上,邻区、外防负责人、专家会首席等共论,包含新成果实证。', more: false},
]);
const rotate = computed(() => {
return isOpen.value ? 180 : 0;
});
// --- Methods (保持不变) ---
const searchInput = ref(null);
const openAdvancedSearch = () => {
isOpen.value = !isOpen.value;
inputGlow.value = isOpen.value;
};
const closeOutside = () => {
return false;
};
const submit = (formData) => {
isOpen.value = false;
router.push({
name: 'Search',
query: {
softwareName: searchStr.value ? searchStr.value : '',
searchType: getIndustryValue(searchType.value),
softwareVersion: formData.softwareVersion || '',
programmingLanguage: formData.programmingLanguage || '',
interestTag: formData.interestTag || '',
industry: formData.industry || '',
licenseName: formData.licenseName || '',
dependentSoftware: formData.dependentSoftware || '',
releaseDateStart: formData.dateRange && formData.dateRange.length > 0 ? formData.dateRange[0] : '',
releaseDateEnd: formData.dateRange && formData.dateRange.length > 0 ? formData.dateRange[1] : ''
}
});
};
const inputFocus = () => {
inputGlow.value = true;
};
const inputBlur = () => {
inputGlow.value = false;
};
const updateDropdownWidth = () => {
if (homeSearch.value) {
dropdownWidth.value = homeSearch.value.offsetWidth * 0.85;
}
};
const globalInfo = useGlobalInfoStore();
const industryList = globalInfo.industryList;
const getIndustryValue = (name) => {
const industry = industryList.find((item) => item.name === name);
return industry ? industry.value : '';
};
const search = () => {
router.push({
name: 'Search',
query: {
softwareName: searchStr.value ? searchStr.value : '',
searchType: getIndustryValue(searchType.value)
}
});
};
const onCategoryChange = (event) => {
searchType.value = event?.name || '软件';
globalInfo.updateHeaderSearch({softwareName: searchStr.value, searchType: event.value});
};
const onCateToggle = (event) => {
cateRotate.value = event ? 180 : 0;
};
let resizeObserver: ResizeObserver | null = null;
onMounted(() => {
resizeObserver = new ResizeObserver(updateDropdownWidth);
if (homeSearch.value) {
resizeObserver.observe(homeSearch.value);
}
updateDropdownWidth();
document.querySelector('body').onclick = (e) => {
const className = e.target.className;
// 优化点击外部关闭逻辑兼容SVG图标
if (
!className.includes ||
(!className.includes('close-isopen') &&
!className.includes('devui-badge__content') &&
!className.includes('advanced-search') &&
e.target.tagName !== 'svg' && e.target.tagName !== 'path')
) {
isOpen.value = false;
}
};
});
onBeforeUnmount(() => {
if (resizeObserver && homeSearch.value) {
resizeObserver.unobserve(homeSearch.value);
}
});
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import 'devui-theme/styles-var/devui-var.scss'; .pg-home {
background-color: #f5f5f5;
// ----------------------------------------------------
// 通用样式与动画
// ----------------------------------------------------
$shadow-base: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
$shadow-hover: 0 8px 24px rgba(0, 0, 0, 0.15);
$primary-color: #5e7ce0;
.transition-transform {
transition: transform 0.3s ease;
} }
.transition-color {
transition: color 0.3s ease;
}
.hover-lift {
transition: transform 0.3s ease, box-shadow 0.3s ease;
&:hover {
transform: translateY(-6px);
//box-shadow: $shadow-hover !important;
}
}
.hover-scale {
transition: transform 0.3s ease, box-shadow 0.3s ease;
&:hover {
transform: scale(1.05);
box-shadow: 0 4px 12px rgba(66, 133, 244, 0.15) !important;
}
}
.hover-shadow {
transition: box-shadow 0.3s ease;
&:hover {
box-shadow: $shadow-hover !important;
}
}
.hover-bob {
transition: transform 0.3s ease;
&:hover {
transform: translateY(-4px);
}
}
.hover-translate-x {
transition: transform 0.3s ease;
&:hover {
transform: translateX(6px);
}
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translate3d(0, 20px, 0);
}
to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
.animate-fade-in-up {
animation: fadeInUp 0.6s ease-out forwards;
}
@keyframes fadeInLeft {
from {
opacity: 0;
transform: translate3d(-20px, 0, 0);
}
to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
}
.animate-fade-in-left {
animation: fadeInLeft 0.6s ease-out forwards;
opacity: 0; // 初始不可见
}
@keyframes countUp {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.count-up {
display: inline-block;
animation: countUp 0.8s ease-out forwards;
}
.delay-100 { animation-delay: 100ms; }
.delay-200 { animation-delay: 200ms; }
.delay-300 { animation-delay: 300ms; }
// 基础样式
.home-container {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
position: relative;
overflow: hidden;
.home-content {
font-size: 14px;
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
justify-self: center;
align-items: center;
gap: 20px;
.home-title {
display: flex;
flex-shrink: 0;
justify-content: center;
align-items: center;
gap: 20px;
h1 {
font-size: xx-large;
font-weight: bold;
}
img {
width: 50px;
}
}
.home-search {
width: 574px;
height: 46px;
border: 1px solid #dfe1e5;
box-shadow: 0px 2px 8px 0px rgba(60, 64, 67, 0.25);
border-radius: 24px;
flex-shrink: 0;
background-color: white;
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px;
transition: all 0.3s ease;
&:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
input {
border: none;
outline: none;
padding: 5px;
font-size: 14px;
}
.dropdown-trigger {
transition: color 0.3s ease;
&:hover {
color: $primary-color;
}
}
.advanced-search {
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
gap: 8px;
transition: color 0.3s ease;
&:hover {
color: $primary-color;
}
&::before {
content: '';
position: absolute;
left: -10px;
top: 50%;
transform: translateY(-50%);
width: 1px;
height: 20px;
background-color: var(--devui-form-control-line, #d7d8da);
}
}
.advanced-search-menu {
height: 300px;
padding: 12px;
background-color: white;
}
}
}
}
.glow-border {
border: 1px solid var(--devui-form-control-line, #d7d8da);
border-color: var(--devui-form-control-line-active, #5e7ce0) !important;
box-shadow: 0 0 0 4px var(--devui-form-control-interactive-outline, rgba(94, 124, 224, 0.15));
transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
// 卡片通用样式
.bg-white {
border-radius: 8px;
box-shadow: $shadow-base;
transition: box-shadow 0.3s ease; // 添加过渡
}
// 顶部功能按钮
.top-btn {
display: flex;
justify-content: center;
align-items: center;
.func-icon {
transition: transform 0.3s ease;
}
&:hover .func-icon {
transform: scale(1.1);
}
}
// 威胁监控卡片
.data-card {
.data-item {
margin-bottom: 20px;
background: #f1f5fc;
border-radius: 8px;
padding: 16px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
.data-label {
font-size: 14px;
color: #606266;
display: block;
margin-bottom: 8px;
}
.data-value {
font-size: 24px;
font-weight: 600;
color: #303133;
margin-right: 16px;
}
.data-value.danger {
color: #f56c6c;
}
}
}
$primary-light: #e8f0fe;
// AI能力卡片
.ai-capability-row {
.capability-card {
height: 100%;
background: white;
border-radius: 10px;
padding: 18px 12px;
border: 1px solid #e9ecef;
text-align: center;
transition: all 0.3s ease;
display: flex;
flex-direction: column;
justify-content: space-between;
&:hover {
border-color: #b8daff;
background: $primary-light;
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(66, 133, 244, 0.1);
}
.capability-icon {
text-align: center;
margin-bottom: 12px;
width: 50px;
height: 50px;
margin-left: auto;
margin-right: auto;
border-radius: 12px;
background-color: rgba(66, 133, 244, 0.1);
display: flex;
align-items: center;
justify-content: center;
img {
display: inline-block;
width: 28px;
}
}
&:hover .capability-icon img {
transform: scale(1.15);
}
.capability-title {
font-size: 16px;
font-weight: 600;
color: #202124;
margin-bottom: 6px;
}
h4 {
font-size: 12px;
color: $primary-color;
margin: 0 0 10px 0;
font-weight: 500;
}
.capability-desc {
font-size: 13px;
color: #5f6368;
line-height: 1.5;
}
}
}
// 团队成员卡片
.member-item {
&:hover .member-avatar {
transform: scale(1.05);
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
}
// 最新动态
.timeline-content {
margin-top: 4px;
cursor: pointer;
&:hover .font-medium {
color: $primary-color;
}
}
// 其他样式保持不变...
.home-search {
:deep(.devui-input-slot__prepend),
:deep(.devui-input-slot__append),
:deep(.devui-input__wrapper) {
border: none;
}
:deep(.devui-select__selection--glow-style),
:deep(.devui-input--glow-style) {
box-shadow: none !important;
}
}
.menu-item {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
padding: 4px;
cursor: pointer;
&:hover {
background-color: var(--devui-list-item-hover-bg, #f2f5fc);
color: var(--devui-list-item-hover-text, #526ecc);
}
}
.list-menu {
padding: 8px;
margin: 0;
width: 100px;
}
.title {
font-size: 14px;
font-weight: 500;
}
.notice-content {
flex: 1;
overflow: hidden;
margin-right: 8px;
span {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: block;
}
}
.time-container {
display: flex;
align-items: center;
gap: 8px;
width: 140px;
flex-shrink: 0;
}
:deep(.devui-timeline-item-data-right) {
width: 80%;
}
// 文本样式
.text-lg {
font-size: 18px;
}
.text-sm {
font-size: 14px;
}
.text-xs {
font-size: 12px;
}
.font-bold {
font-weight: 600;
}
.font-medium {
font-weight: 500;
}
// 间距与布局
.mb-8 {
margin-bottom: 24px;
}
.p-4 {
padding: 16px;
}
.flex-col {
flex-direction: column;
}
.items-center {
align-items: center;
}
.justify-center {
justify-content: center;
}
.dashboard-page {
.section-title {
font-size: 18px;
font-weight: 600;
color: #303133;
margin-bottom: 16px;
display: flex;
justify-content: space-between;
align-items: center;
a {
font-weight: 400;
}
}
.main-row {
margin-bottom: 20px;
}
.ai-capability-row {
height: calc(100% - 46px);
.devui-col {
height: 100%;
}
}
}
/* 时间线样式 */
:deep(.devui-timeline) {
--devui-timeline-item-padding: 0 0 24px 0;
}
:deep(.devui-timeline-item-time) {
/* 年份标签样式 */
background-color: #fee2e2; /* 浅红背景 */
color: #dc2626; /* 红色文字 */
font-size: 12px;
padding: 2px 6px;
border-radius: 4px;
min-width: 40px;
text-align: center;
}
:deep(.devui-timeline-item-data-left) {
flex: none;
}
</style> </style>

View File

@@ -19,12 +19,12 @@
<div class="welcome-page"> <div class="welcome-page">
<div class="home-title"> <div class="home-title">
<img src="@/assets/imgs/jyh/aiLogo2.png" alt="logo" /> <img src="@/assets/imgs/jyh/aiLogo2.png" alt="logo" />
<h1>可信开源代码库AI助手</h1> <h1>TcodeAI助手</h1>
</div> </div>
<div class="home-detail"> <div class="home-detail">
<div class="home-detail-1">Hi欢迎使用可信开源代码库AI助手</div> <div class="home-detail-1">Hi欢迎使用TcodeAI助手</div>
<div class="home-detail-2">可信开源代码库AI助手 可以辅助研发人员进行软件查询批量校验查看软件详情等</div> <div class="home-detail-2">TcodeAI助手 可以辅助研发人员进行软件查询批量校验查看软件详情等</div>
<div class="home-detail-2">作为AI模型可信开源代码库AI助手 提供的答案可能不总是确定或准确的但您的反馈可以帮助 可信开源代码库AI助手 做得更好</div> <div class="home-detail-2">作为AI模型TcodeAI助手 提供的答案可能不总是确定或准确的但您的反馈可以帮助 TcodeAI助手 做得更好</div>
</div> </div>
</div> </div>
<!-- <div class="welcome-icon">--> <!-- <div class="welcome-icon">-->

View File

@@ -101,10 +101,10 @@ console.log(propsData.warningData);
warningData.value = propsData.warningData ?? { warningData.value = propsData.warningData ?? {
subject: '【漏洞排查预警】ApacheIgnite远程代码执行漏洞排查CVE-2024-52577)', subject: '【漏洞排查预警】ApacheIgnite远程代码执行漏洞排查CVE-2024-52577)',
importance: '高', importance: '高',
group: '可信开源代码库运营团队', group: 'Tcode运营团队',
pulishTime: '2025-2-20', pulishTime: '2025-2-20',
overview: `## 一、概要 overview: `## 一、概要
近日安全中心发现Apache lgnite远程代码执行漏洞CVE-2024-52577。在 2.6.0<Apache Ignite< 2.17.0版本中由于lgnite未能正确实施类序列化过滤器攻击者能够利用恶意序列化对象绕过安全检查从而在服务器端反序列化时触发任意代码的执行。经可信开源代码库运营团队评审漏洞技术定级2级/3级若不满足利用条件可举证降为6级。请你按要求在XX时间内完成修复。 近日安全中心发现Apache lgnite远程代码执行漏洞CVE-2024-52577。在 2.6.0<Apache Ignite< 2.17.0版本中由于lgnite未能正确实施类序列化过滤器攻击者能够利用恶意序列化对象绕过安全检查从而在服务器端反序列化时触发任意代码的执行。经Tcode运营团队评审漏洞技术定级2级/3级若不满足利用条件可举证降为6级。请你按要求在XX时间内完成修复。
## 二、修复方案 ## 二、修复方案
升级Apache Ignite至安全版本2.17.0` 升级Apache Ignite至安全版本2.17.0`
}; };

965
yarn.lock

File diff suppressed because it is too large Load Diff