初始化提交
|
|
@ -0,0 +1,24 @@
|
||||||
|
# Nuxt dev/build outputs
|
||||||
|
.output
|
||||||
|
.data
|
||||||
|
.nuxt
|
||||||
|
.nitro
|
||||||
|
.cache
|
||||||
|
dist
|
||||||
|
|
||||||
|
# Node dependencies
|
||||||
|
node_modules
|
||||||
|
|
||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
.DS_Store
|
||||||
|
.fleet
|
||||||
|
.idea
|
||||||
|
|
||||||
|
# Local env files
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
!.env.example
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"i18n-ally.localesPaths": [
|
||||||
|
"src/locale"
|
||||||
|
],
|
||||||
|
"i18n-ally.keystyle": "nested"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,81 @@
|
||||||
|
export default defineNuxtConfig({
|
||||||
|
compatibilityDate: '2025-08-22',
|
||||||
|
devtools: { enabled: true },
|
||||||
|
srcDir: 'src',
|
||||||
|
alias: {
|
||||||
|
'@': '~/',
|
||||||
|
},
|
||||||
|
app: {
|
||||||
|
head: {
|
||||||
|
title: '明阳良光',
|
||||||
|
meta: [
|
||||||
|
{ charset: 'utf-8' },
|
||||||
|
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
|
||||||
|
{ name: 'description', content: '明阳良光' },
|
||||||
|
{ name: 'theme-color', content: '#4f8cef' }
|
||||||
|
],
|
||||||
|
link: [
|
||||||
|
{ rel: 'icon', href: '/favicon.ico' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 静态生成配置
|
||||||
|
nitro: {
|
||||||
|
preset: 'static'
|
||||||
|
},
|
||||||
|
// 预渲染配置
|
||||||
|
routeRules: {
|
||||||
|
'/': { prerender: true },
|
||||||
|
'/about-us': { prerender: true },
|
||||||
|
'/contact-us': { prerender: true },
|
||||||
|
'/product': { prerender: true },
|
||||||
|
'/product/detail': { prerender: true },
|
||||||
|
'/product/rich-detail': { prerender: true },
|
||||||
|
'/privacy-policy': { prerender: true },
|
||||||
|
'/thanks': { prerender: true },
|
||||||
|
|
||||||
|
// 中文路由预渲染(因为默认是英文,所以中文需要前缀)
|
||||||
|
'/cn': { prerender: true },
|
||||||
|
'/cn/about-us': { prerender: true },
|
||||||
|
'/cn/contact-us': { prerender: true },
|
||||||
|
'/cn/product': { prerender: true },
|
||||||
|
'/cn/product/detail': { prerender: true },
|
||||||
|
'/cn/product/rich-detail': { prerender: true },
|
||||||
|
'/cn/privacy-policy': { prerender: true },
|
||||||
|
'/cn/thanks': { prerender: true }
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
'~/plugins/vue-lazyload.js',
|
||||||
|
{ src: '~/plugins/aos-client.js', mode: 'client' },
|
||||||
|
'~/plugins/vue-dompurify-html.js',
|
||||||
|
'~/plugins/image-path.js',
|
||||||
|
{ src: '~/plugins/static-data.client.js', mode: 'client' }
|
||||||
|
],
|
||||||
|
devServer: {
|
||||||
|
port: 1110,
|
||||||
|
},
|
||||||
|
modules: ['@nuxtjs/i18n', '@pinia/nuxt'],
|
||||||
|
i18n: {
|
||||||
|
locales: [
|
||||||
|
{ code: 'en', name: 'English' },
|
||||||
|
{ code: 'cn', name: '简体中文' }
|
||||||
|
],
|
||||||
|
defaultLocale: 'en',
|
||||||
|
detectBrowserLanguage: {
|
||||||
|
useCookie: true,
|
||||||
|
cookieKey: 'i18n_redirected',
|
||||||
|
redirectOn: 'root',
|
||||||
|
alwaysRedirect: false,
|
||||||
|
fallbackLocale: 'en',
|
||||||
|
cookieSecure: false
|
||||||
|
},
|
||||||
|
strategy: 'prefix_except_default',
|
||||||
|
vueI18n: '~/i18n.config.ts'
|
||||||
|
},
|
||||||
|
// Axios配置
|
||||||
|
runtimeConfig: {
|
||||||
|
public: {
|
||||||
|
apiBaseUrl: process.env.API_BASE_URL || 'https://api.example.com'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"name": "nuxt-app",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"build": "nuxt build",
|
||||||
|
"dev": "nuxt dev",
|
||||||
|
"generate": "nuxt generate",
|
||||||
|
"generate:static": "node scripts/generate-static.js && nuxi generate",
|
||||||
|
"preview": "nuxt preview",
|
||||||
|
"postinstall": "nuxt prepare"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@nuxtjs/i18n": "^10.0.6",
|
||||||
|
"@pinia/nuxt": "^0.11.2",
|
||||||
|
"aos": "^2.3.4",
|
||||||
|
"axios": "^1.11.0",
|
||||||
|
"nuxt": "^4.0.3",
|
||||||
|
"pinia": "^3.0.3",
|
||||||
|
"swiper": "^11.2.10",
|
||||||
|
"vue": "^3.5.19",
|
||||||
|
"vue-dompurify-html": "^5.3.0",
|
||||||
|
"vue3-lazyload": "^0.3.8"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^24.3.0",
|
||||||
|
"sass": "^1.90.0"
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"vue": "^3.5.19"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,798 @@
|
||||||
|
// 默认样式清除
|
||||||
|
body, div, span, header, footer, nav, section, aside, article, ul, dl, dt, dd, li, a, p, h1, h2, h3, h4,h5, h6, i, b, textarea, button, input, select, figure, figcaption{
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
list-style: none;
|
||||||
|
font-style: normal;
|
||||||
|
text-decoration: none;
|
||||||
|
border: none;
|
||||||
|
font-weight: normal;
|
||||||
|
font-family: MiSans-Normal;
|
||||||
|
box-sizing: border-box;
|
||||||
|
-webkit-tap-highlight-color:transparent;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
&:hover{
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
ul,
|
||||||
|
ol,
|
||||||
|
li {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
outline: none;
|
||||||
|
color: #333;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
a:focus {
|
||||||
|
outline: none;
|
||||||
|
-moz-outline: none;
|
||||||
|
}
|
||||||
|
a img {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
select,
|
||||||
|
input,
|
||||||
|
textarea {
|
||||||
|
border-radius: 0;
|
||||||
|
-webkit-border-radius: 0;
|
||||||
|
}
|
||||||
|
input:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
input,
|
||||||
|
button,
|
||||||
|
select,
|
||||||
|
textarea {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
textarea {
|
||||||
|
resize: none;
|
||||||
|
}
|
||||||
|
textarea,
|
||||||
|
input,
|
||||||
|
select {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
background-color: transparent;
|
||||||
|
border-spacing: 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 0.75em;
|
||||||
|
width: 100%;
|
||||||
|
border-top: solid 1px #ddd;
|
||||||
|
border-left: solid 1px #ddd;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
table th {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
text-align: center;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
table td,
|
||||||
|
table th {
|
||||||
|
padding: 5px 10px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="button"],
|
||||||
|
input[type="submit"],
|
||||||
|
input[type="file"],
|
||||||
|
button {
|
||||||
|
cursor: pointer;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
html{
|
||||||
|
font-size: calc(100 * 100vw / 1920) !important;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
html,body{
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
user-select: text;
|
||||||
|
font-size: 0.16rem;
|
||||||
|
color: #3f4552;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
/* **************滚动条*****************/
|
||||||
|
html::-webkit-scrollbar {
|
||||||
|
overflow: hidden;
|
||||||
|
/* 高宽分别对应纵横向滚动条 */
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
@media (max-width:750px) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
html::-webkit-scrollbar-track {
|
||||||
|
/*滚动条里面轨道*/
|
||||||
|
box-shadow: inset 0 0 8px rgba(0, 0, 0, 0.2);
|
||||||
|
border-radius: 5px;
|
||||||
|
background: #ededed;
|
||||||
|
}
|
||||||
|
|
||||||
|
html::-webkit-scrollbar-thumb {
|
||||||
|
background: #262729;
|
||||||
|
}
|
||||||
|
|
||||||
|
image {
|
||||||
|
border: 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
max-width: 100%
|
||||||
|
}
|
||||||
|
|
||||||
|
.define-topBar__components {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.autowidth {
|
||||||
|
width: 18rem;
|
||||||
|
margin: auto;
|
||||||
|
max-width: 90%;
|
||||||
|
@media (max-width: 1366px) {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 动画
|
||||||
|
.animationDH {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animateLt {
|
||||||
|
animation: 1s dh_left linear both;
|
||||||
|
-webkit-animation: 1s dh_left linear both;
|
||||||
|
}
|
||||||
|
.animateRt {
|
||||||
|
animation: 1s dh_right linear both;
|
||||||
|
-webkit-animation: 1s dh_right linear both;
|
||||||
|
}
|
||||||
|
.animateBt {
|
||||||
|
animation: 1s dh_buttom linear both;
|
||||||
|
-webkit-animation: 1s dh_buttom linear both;
|
||||||
|
}
|
||||||
|
// 首页专用
|
||||||
|
.dhLeft {
|
||||||
|
// opacity: 0;
|
||||||
|
-webkit-opacity: 0;
|
||||||
|
transform: translate(75px, 0);
|
||||||
|
-webkit-transform: translate(75px, 0);
|
||||||
|
transition: 1s;
|
||||||
|
-webkit-transition: 1s;
|
||||||
|
}
|
||||||
|
.dhRight {
|
||||||
|
// opacity: 0;
|
||||||
|
-webkit-opacity: 0;
|
||||||
|
transform: translate(-45px, 0);
|
||||||
|
-webkit-transform: translate(-45px, 0);
|
||||||
|
transition: 1s;
|
||||||
|
-webkit-transition: 1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhTop {
|
||||||
|
// opacity: 0;
|
||||||
|
// -webkit-opacity: 0;
|
||||||
|
transform: translate(0, 45px);
|
||||||
|
-webkit-transform: translate(0, 45px);
|
||||||
|
transition: transform 1s;
|
||||||
|
-webkit-transition: transform 1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhBottom {
|
||||||
|
// opacity: 0;
|
||||||
|
-webkit-opacity: 0;
|
||||||
|
transform: translate(0, -45px);
|
||||||
|
-webkit-transform: translate(0, -45px);
|
||||||
|
transition: 1s;
|
||||||
|
-webkit-transition: 1s;
|
||||||
|
}
|
||||||
|
// 四档
|
||||||
|
.dhyc1 {
|
||||||
|
transition-delay: 0.25s;
|
||||||
|
-webkit-transition-delay: 0.25s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhyc2 {
|
||||||
|
transition-delay: 0.5s;
|
||||||
|
-webkit-transition-delay: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhyc3 {
|
||||||
|
transition-delay: 0.75s;
|
||||||
|
-webkit-transition-delay: 0.75s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhyc4 {
|
||||||
|
transition-delay: 1s;
|
||||||
|
-webkit-transition-delay: 1s;
|
||||||
|
}
|
||||||
|
// 右边
|
||||||
|
@-webkit-keyframes dh_right {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate(60px, 0%);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes dh_right {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translate(60px, 0%);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 左边
|
||||||
|
@-webkit-keyframes dh_left {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate(-60px, 0%);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes dh_left {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translate(-60px, 0%);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 底部
|
||||||
|
@-webkit-keyframes dh_buttom {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate(0, 60px);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes dh_buttom {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translate(0, 60px);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*页面banner部分*/
|
||||||
|
.banner {
|
||||||
|
margin-top: 0.52rem;
|
||||||
|
overflow: hidden;
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
margin-top: 0.7rem;
|
||||||
|
}
|
||||||
|
@media (max-width:1099px) {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
height:5.5rem;
|
||||||
|
background-size: cover !important;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
box-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 230px;
|
||||||
|
|
||||||
|
@media (max-width: 1100px) {
|
||||||
|
height: 7.5rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 800px) {
|
||||||
|
height: 10rem;
|
||||||
|
}
|
||||||
|
&__box {
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
animation: 1s dh_buttom linear both;
|
||||||
|
-webkit-animation: 1s dh_buttom linear both;
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 0.36rem;
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: 0.2rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 751px) and (max-width: 1100px) {
|
||||||
|
&__title {
|
||||||
|
font-size: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: 0.3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 750px) {
|
||||||
|
&__title {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: 0.55rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 550px) {
|
||||||
|
&__title {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: 0.65rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pageMain {
|
||||||
|
overflow: hidden;
|
||||||
|
&__breads {
|
||||||
|
color: #666;
|
||||||
|
width: auto;
|
||||||
|
margin: 0 auto;
|
||||||
|
border-bottom: 1px solid #e5e5e5;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
width: 12rem;
|
||||||
|
color: #666;
|
||||||
|
line-height: 4;
|
||||||
|
text-align: left;
|
||||||
|
&__icon{
|
||||||
|
&__avater{
|
||||||
|
width: 0.17rem;
|
||||||
|
height: 0.17rem;
|
||||||
|
margin-bottom: 0.03rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
width: 15rem;
|
||||||
|
font-size: 13.5px;
|
||||||
|
line-height: 3.2;
|
||||||
|
&__icon{
|
||||||
|
&__avater{
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a{
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
cursor: pointer;
|
||||||
|
@media (min-width:1100px) {
|
||||||
|
&:hover{
|
||||||
|
color: #0072ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1024px) {
|
||||||
|
font-size: 13px;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
@media (max-width:500px) {
|
||||||
|
font-size: 0.6rem;
|
||||||
|
&__icon{
|
||||||
|
&__avater{
|
||||||
|
width: 0.68rem;
|
||||||
|
height: 0.68rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:350px) {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__line {
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
-webkit-justify-content: center;
|
||||||
|
border-bottom: 1px solid #e5e5e5;
|
||||||
|
padding: 0.1rem 0 0.2rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
margin: 0 1rem;
|
||||||
|
position: relative;
|
||||||
|
padding: 0.1rem 0;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 0.18rem;
|
||||||
|
font-family: MiSans-Normal;
|
||||||
|
cursor: pointer;
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
font-size: 15.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 501px) and (max-width: 1100px) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
font-size: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 350px) {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
position: absolute;
|
||||||
|
left: 15%;
|
||||||
|
content: "";
|
||||||
|
bottom: 0;
|
||||||
|
height: 3px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background: #0072ff;
|
||||||
|
width: 0;
|
||||||
|
transition: 0.5s;
|
||||||
|
|
||||||
|
@media (max-width: 700px) {
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover::before {
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--on {
|
||||||
|
color: #0072ff;
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__buttom-line {
|
||||||
|
padding: 0.36 0 0.7rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 粘性导航栏样式
|
||||||
|
.sticky-page-layout {
|
||||||
|
position: relative;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin sticky-nav-style {
|
||||||
|
line-height: 3;
|
||||||
|
@media (max-width: 1500px) {
|
||||||
|
height: auto;
|
||||||
|
line-height: 3.5;
|
||||||
|
font-size: 0.22rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 1200px) {
|
||||||
|
height: auto;
|
||||||
|
line-height: 3.5;
|
||||||
|
font-size: 0.24rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 850px) {
|
||||||
|
font-size: 0.42rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 650px) {
|
||||||
|
line-height: 3.5;
|
||||||
|
font-size: 0.5rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
line-height: 3.5;
|
||||||
|
font-size: 0.63rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.nav-sticky {
|
||||||
|
@include sticky-nav-style;
|
||||||
|
top: 0px;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 99;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&__center {
|
||||||
|
width: 9.8rem;
|
||||||
|
@media (max-width: 1200px) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
margin: 0 auto;
|
||||||
|
transition: width 0.3s;
|
||||||
|
color: #ffffff;
|
||||||
|
display: flex;
|
||||||
|
border-bottom: 1px solid hsla(0, 0%, 100%, 0.24);
|
||||||
|
justify-content: space-between;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
font-size: 0.17rem;
|
||||||
|
font-family: MiSans-Bold;
|
||||||
|
@include sticky-nav-style;
|
||||||
|
@media (max-width: 1200px) {
|
||||||
|
margin-left: 0.6rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
display: flex;
|
||||||
|
width: fit-content;
|
||||||
|
@include sticky-nav-style;
|
||||||
|
font-size: 0.15rem;
|
||||||
|
justify-content: space-between;
|
||||||
|
cursor: pointer;
|
||||||
|
box-sizing: border-box;
|
||||||
|
@media (max-width: 1200px) {
|
||||||
|
margin-right: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
margin: 0 0.2rem;
|
||||||
|
opacity: 0.6;
|
||||||
|
@media (max-width:600px) {
|
||||||
|
margin: 0 0.4rem;
|
||||||
|
// display: none;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--Active {
|
||||||
|
opacity: 1;
|
||||||
|
border-bottom: 0.01rem solid #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__dropdown {
|
||||||
|
position: relative;
|
||||||
|
display: none;
|
||||||
|
// @media (max-width:600px) {
|
||||||
|
// display: block;
|
||||||
|
// }
|
||||||
|
&__up {
|
||||||
|
@include sticky-nav-style;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-right: 15px;
|
||||||
|
.arrow-down{
|
||||||
|
width: 30px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__menu {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: -50%;
|
||||||
|
background-color: #222;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-top: 10px;
|
||||||
|
box-shadow: 0 .04rem .1rem .02rem rgba(0, 0, 0, .08);
|
||||||
|
z-index: 1;
|
||||||
|
width: 150%;
|
||||||
|
padding: 20px 0;
|
||||||
|
&__item {
|
||||||
|
color: #919191;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: center;
|
||||||
|
&--Active{
|
||||||
|
color: #0072ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-sticky--active {
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
position: sticky;
|
||||||
|
background-color: rgba(3, 6, 11, 0.4);
|
||||||
|
border-bottom: 1px solid hsla(0, 5%, 92%, 0.2);
|
||||||
|
|
||||||
|
.nav-sticky__center {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// N051,N052公共的banner
|
||||||
|
.detail-banner {
|
||||||
|
width: 100%;
|
||||||
|
height: 10.8rem;
|
||||||
|
color: #ffffff;
|
||||||
|
position: relative;
|
||||||
|
&__title {
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
position: absolute;
|
||||||
|
font-size: 0.55rem;
|
||||||
|
top: 1.5rem;
|
||||||
|
left: 50%;
|
||||||
|
width: 90%;
|
||||||
|
text-align: center;
|
||||||
|
transform: translate(-50%, 0);
|
||||||
|
}
|
||||||
|
&__avater {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
@media (max-width: 850px) {
|
||||||
|
padding-top: 2rem;
|
||||||
|
height: 12.8rem;
|
||||||
|
&__title {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
top: 3.8rem;
|
||||||
|
}
|
||||||
|
&__title-2 {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
top: 3.2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* 遮罩 */
|
||||||
|
.load-mask {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
z-index: 10002;
|
||||||
|
.spinner {
|
||||||
|
width: 150px;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 20vh;
|
||||||
|
.spinner__item {
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
// background-color: #b89dfe;
|
||||||
|
background-color: #aeadba;
|
||||||
|
border-radius: 100%;
|
||||||
|
display: inline-block;
|
||||||
|
animation: bouncedelay 1.4s infinite ease-in-out;
|
||||||
|
-webkit-animation-fill-mode: both;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
// &:nth-child(2){
|
||||||
|
// background-color: #2e6ee7;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
.bounce1 {
|
||||||
|
-webkit-animation-delay: -0.32s;
|
||||||
|
animation-delay: -0.32s;
|
||||||
|
}
|
||||||
|
.bounce2 {
|
||||||
|
-webkit-animation-delay: -0.16s;
|
||||||
|
animation-delay: -0.16s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes bouncedelay {
|
||||||
|
0%,
|
||||||
|
80%,
|
||||||
|
100% {
|
||||||
|
transform: scale(0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
40% {
|
||||||
|
transform: scale(1.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 产品、新闻用的loading
|
||||||
|
.load-loading{
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 35vh;
|
||||||
|
&__box{
|
||||||
|
width: 200px;
|
||||||
|
height: auto;
|
||||||
|
color: #aeadba;
|
||||||
|
text-align: center;
|
||||||
|
&__up{
|
||||||
|
width: 55px;
|
||||||
|
margin: auto;
|
||||||
|
&__avater{
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__text{
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 3;
|
||||||
|
}
|
||||||
|
@media (max-width:1024px) {
|
||||||
|
&__up{
|
||||||
|
width: 47px;
|
||||||
|
}
|
||||||
|
&__text{
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (min-width:1920px) {
|
||||||
|
width: 2rem;
|
||||||
|
height: 1rem;
|
||||||
|
&__up{
|
||||||
|
width: 0.55rem;
|
||||||
|
}
|
||||||
|
&__text{
|
||||||
|
font-size: 0.14rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@mixin isAnimatingStyle {
|
||||||
|
transform: translateY(11.71rpx);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//加载类名
|
||||||
|
[class*="is-animating-"] {
|
||||||
|
@include isAnimatingStyle;
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"name": "尼日利亚官网",
|
||||||
|
"short_name": "尼日利亚",
|
||||||
|
"description": "尼日利亚官方网站",
|
||||||
|
"start_url": "/",
|
||||||
|
"display": "standalone",
|
||||||
|
"background_color": "#ffffff",
|
||||||
|
"theme_color": "#4f8cef",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/logo.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/logo.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 450 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
|
@ -0,0 +1,239 @@
|
||||||
|
@font-face {
|
||||||
|
font-family: "iconfont"; /* Project id 4350424 */
|
||||||
|
src: url('/static/font/iconfont.woff2?t=1716543193903') format('woff2'),
|
||||||
|
url('/static/font/iconfont.woff?t=1716543193903') format('woff'),
|
||||||
|
url('/static/font/iconfont.ttf?t=1716543193903') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
font-family: "iconfont" !important;
|
||||||
|
font-size: 16px;
|
||||||
|
font-style: normal;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-zelvxuanzefeiyongzhengsanjiaoxingzhichi:before {
|
||||||
|
content: "\e668";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-syd-logo:before {
|
||||||
|
content: "\e602";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-top:before {
|
||||||
|
content: "\e67e";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-shachu-xue:before {
|
||||||
|
content: "\e638";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-weibiaoti1:before {
|
||||||
|
content: "\e634";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-xiazai:before {
|
||||||
|
content: "\e682";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-xiajiantou:before {
|
||||||
|
content: "\e610";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-shangjiantou-copy:before {
|
||||||
|
content: "\e651";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-jiazhiguan:before {
|
||||||
|
content: "\e646";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-rencailinian:before {
|
||||||
|
content: "\e667";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-msgw_icon_shiming:before {
|
||||||
|
content: "\e60f";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-qiyeyuanjing:before {
|
||||||
|
content: "\e671";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-home:before {
|
||||||
|
content: "\e62b";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-jiantou_qiehuanyou:before {
|
||||||
|
content: "\eb05";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-navigoumai:before {
|
||||||
|
content: "\e62a";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-kefu1:before {
|
||||||
|
content: "\e60d";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-shezhi1:before {
|
||||||
|
content: "\e7f8";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-shijian:before {
|
||||||
|
content: "\e64f";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-cc-left:before {
|
||||||
|
content: "\e6c2";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-unie601:before {
|
||||||
|
content: "\e61c";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-youjian:before {
|
||||||
|
content: "\e672";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-duoyuyan:before {
|
||||||
|
content: "\e654";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sousuo:before {
|
||||||
|
content: "\e61f";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-dianziyouxiang:before {
|
||||||
|
content: "\e60c";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-kehu:before {
|
||||||
|
content: "\e645";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-fuwu:before {
|
||||||
|
content: "\e61b";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-gongchang:before {
|
||||||
|
content: "\e649";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-goumai:before {
|
||||||
|
content: "\e603";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-zu:before {
|
||||||
|
content: "\e644";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-anzhuo:before {
|
||||||
|
content: "\e60b";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-pingguo_apple:before {
|
||||||
|
content: "\e7f2";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-jianhao:before {
|
||||||
|
content: "\e614";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-caidan:before {
|
||||||
|
content: "\e790";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-fanhui:before {
|
||||||
|
content: "\e60e";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-fisocialapple:before {
|
||||||
|
content: "\e76f";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-chacha:before {
|
||||||
|
content: "\e62f";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-zhidingtop:before {
|
||||||
|
content: "\e62d";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-home1:before {
|
||||||
|
content: "\e92d";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-search:before {
|
||||||
|
content: "\e676";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-X:before {
|
||||||
|
content: "\e607";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-arrow-right:before {
|
||||||
|
content: "\e666";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-left:before {
|
||||||
|
content: "\e684";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-zuojiantou:before {
|
||||||
|
content: "\e65a";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-shezhi:before {
|
||||||
|
content: "\e892";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-youjiantou:before {
|
||||||
|
content: "\e678";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-kefu:before {
|
||||||
|
content: "\e665";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-shangjiantou:before {
|
||||||
|
content: "\eb6d";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-zuixinzixun-03:before {
|
||||||
|
content: "\ea2c";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-shanchu11:before {
|
||||||
|
content: "\e62e";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-shanchu:before {
|
||||||
|
content: "\e606";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-language:before {
|
||||||
|
content: "\e6a9";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-jiantou_xiangyou:before {
|
||||||
|
content: "\eb08";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-youjian_o:before {
|
||||||
|
content: "\ebca";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-dianhua:before {
|
||||||
|
content: "\e66b";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-earch:before {
|
||||||
|
content: "\e617";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-xiangyou:before {
|
||||||
|
content: "\e656";
|
||||||
|
}
|
||||||
|
|
||||||
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 511 B |
|
After Width: | Height: | Size: 393 B |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
|
@ -0,0 +1 @@
|
||||||
|
|
||||||
|
|
@ -0,0 +1,139 @@
|
||||||
|
import axios from 'axios';
|
||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
|
// API配置
|
||||||
|
const API_BASE_URL = process.env.NODE_ENV === 'development'
|
||||||
|
? 'https://api.dev.mingyanglg.com/http/router'
|
||||||
|
: 'https://api.mingyanglg.com/http/router';
|
||||||
|
|
||||||
|
// 创建API客户端
|
||||||
|
const apiClient = axios.create({
|
||||||
|
baseURL: API_BASE_URL,
|
||||||
|
timeout: 10000,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 获取轮播图数据
|
||||||
|
async function getCarouselData(locale) {
|
||||||
|
try {
|
||||||
|
const response = await apiClient.post('/website/get/homePageCarousel_list', {
|
||||||
|
locale: locale
|
||||||
|
});
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`获取轮播图数据失败 (${locale}):`, error.message);
|
||||||
|
return { rows: [] };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取产品分类数据
|
||||||
|
async function getProductCategoryData(locale) {
|
||||||
|
try {
|
||||||
|
const response = await apiClient.post('/website/get/product_category_list', {
|
||||||
|
locale: locale
|
||||||
|
});
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`获取产品分类数据失败 (${locale}):`, error.message);
|
||||||
|
return { rows: [] };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取产品列表数据
|
||||||
|
async function getProductListData(locale) {
|
||||||
|
try {
|
||||||
|
const response = await apiClient.post('/website/get/product_list', {
|
||||||
|
locale: locale,
|
||||||
|
page: 1,
|
||||||
|
limit: 50
|
||||||
|
});
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`获取产品列表数据失败 (${locale}):`, error.message);
|
||||||
|
return { rows: [] };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取新闻列表数据
|
||||||
|
async function getNewsListData(locale) {
|
||||||
|
try {
|
||||||
|
const response = await apiClient.post('/website/get/news_list', {
|
||||||
|
locale: locale,
|
||||||
|
page: 1,
|
||||||
|
limit: 20
|
||||||
|
});
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`获取新闻列表数据失败 (${locale}):`, error.message);
|
||||||
|
return { rows: [] };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取证书数据
|
||||||
|
async function getCertificateData(locale) {
|
||||||
|
try {
|
||||||
|
const response = await apiClient.post('/website/get/certificate_list', {
|
||||||
|
locale: locale
|
||||||
|
});
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`获取证书数据失败 (${locale}):`, error.message);
|
||||||
|
return { rows: [] };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取APP下载数据
|
||||||
|
async function getDownloadData(locale) {
|
||||||
|
try {
|
||||||
|
const response = await apiClient.post('/website/get/appInstallPackage', {
|
||||||
|
locale: locale
|
||||||
|
});
|
||||||
|
return response.data;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`获取APP下载数据失败 (${locale}):`, error.message);
|
||||||
|
return { rows: [] };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 主函数
|
||||||
|
async function generateStaticData() {
|
||||||
|
|
||||||
|
const locales = ['en', 'cn'];
|
||||||
|
const staticData = {};
|
||||||
|
|
||||||
|
for (const locale of locales) {
|
||||||
|
const [carousel, categories, products, news, certificates, downloads] = await Promise.allSettled([
|
||||||
|
getCarouselData(locale),
|
||||||
|
getProductCategoryData(locale),
|
||||||
|
getProductListData(locale),
|
||||||
|
getNewsListData(locale),
|
||||||
|
getCertificateData(locale),
|
||||||
|
getDownloadData(locale)
|
||||||
|
]);
|
||||||
|
|
||||||
|
staticData[locale] = {
|
||||||
|
carousel: carousel.status === 'fulfilled' ? carousel.value : { rows: [] },
|
||||||
|
categories: categories.status === 'fulfilled' ? categories.value : { rows: [] },
|
||||||
|
products: products.status === 'fulfilled' ? products.value : { rows: [] },
|
||||||
|
news: news.status === 'fulfilled' ? news.value : { rows: [] },
|
||||||
|
certificates: certificates.status === 'fulfilled' ? certificates.value : { rows: [] },
|
||||||
|
downloads: downloads.status === 'fulfilled' ? downloads.value : { rows: [] }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确保目录存在
|
||||||
|
const outputDir = path.join(process.cwd(), 'src', 'static-data');
|
||||||
|
if (!fs.existsSync(outputDir)) {
|
||||||
|
fs.mkdirSync(outputDir, { recursive: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
// 写入静态数据文件
|
||||||
|
const outputPath = path.join(outputDir, 'api-data.json');
|
||||||
|
fs.writeFileSync(outputPath, JSON.stringify(staticData, null, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 执行脚本
|
||||||
|
generateStaticData().catch(console.error);
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
export default defineEventHandler((event: any) => {
|
||||||
|
// 服务端中间件,直接执行
|
||||||
|
const cookie = getCookie(event, 'i18n_redirected');
|
||||||
|
const acceptLanguage = getHeader(event, 'accept-language') || '';
|
||||||
|
|
||||||
|
let detectedLang = 'en'; // 默认英文
|
||||||
|
|
||||||
|
// 优先检查 cookie:如果有 cookie 就使用 cookie 中的语言
|
||||||
|
if (cookie && ['cn', 'en'].includes(cookie)) {
|
||||||
|
detectedLang = cookie;
|
||||||
|
}
|
||||||
|
// 如果没有 cookie,则根据浏览器语言检测
|
||||||
|
else if (acceptLanguage.includes('zh')) {
|
||||||
|
detectedLang = 'cn';
|
||||||
|
}
|
||||||
|
// 设置到 context 供后续使用
|
||||||
|
event.context.locale = detectedLang;
|
||||||
|
|
||||||
|
// 设置响应头
|
||||||
|
setHeader(event, 'X-Detected-Language', detectedLang);
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"extends": "../.nuxt/tsconfig.server.json"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,212 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<keep-alive v-if="isKeepAlive">
|
||||||
|
<NuxtPage />
|
||||||
|
</keep-alive>
|
||||||
|
<NuxtPage v-else />
|
||||||
|
<back-top v-if="currentPath !== '/404'" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
computed
|
||||||
|
} from 'vue';
|
||||||
|
import {
|
||||||
|
useRoute
|
||||||
|
} from '#imports';
|
||||||
|
import BackTop from "@/components/back-top/back-top.vue";
|
||||||
|
|
||||||
|
// 获取当前路由对象
|
||||||
|
const route = useRoute();
|
||||||
|
// 计算当前路由的完整路径
|
||||||
|
const currentPath = computed(() => route.fullPath);
|
||||||
|
// 根据 meta 信息判断是否需要缓存页面
|
||||||
|
const isKeepAlive = computed(() => {
|
||||||
|
return route.meta.keepAlive;
|
||||||
|
});
|
||||||
|
|
||||||
|
useHead({
|
||||||
|
title: '明阳良光',
|
||||||
|
meta: [{
|
||||||
|
name: 'viewport',
|
||||||
|
content: 'width=device-width, initial-scale=1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
hid: 'description',
|
||||||
|
name: 'description',
|
||||||
|
content: '明阳良光'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'theme-color',
|
||||||
|
content: '#4f8cef'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
link: [
|
||||||
|
{
|
||||||
|
hid: 'favicon',
|
||||||
|
rel: 'icon',
|
||||||
|
href: '/favicon.ico'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
script: [{
|
||||||
|
innerHTML: `
|
||||||
|
(function() {
|
||||||
|
// 立即执行函数,确保在任何Vue组件初始化前设置语言
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
|
try {
|
||||||
|
// 优先使用cookie中的语言设置(与Nuxt i18n保持一致)
|
||||||
|
let savedLang = 'en';
|
||||||
|
|
||||||
|
// 1. 检查cookie
|
||||||
|
const cookies = document.cookie.split(';');
|
||||||
|
const localeCookie = cookies.find(cookie =>
|
||||||
|
cookie.trim().startsWith('i18n_redirected=')
|
||||||
|
);
|
||||||
|
if (localeCookie) {
|
||||||
|
const langValue = localeCookie.split('=')[1];
|
||||||
|
if (['cn', 'en'].includes(langValue)) {
|
||||||
|
savedLang = langValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 如果没有cookie,检查localStorage
|
||||||
|
if (savedLang === 'en') {
|
||||||
|
const storedLang = localStorage.getItem('locale_lang');
|
||||||
|
if (storedLang && ['cn', 'en'].includes(storedLang)) {
|
||||||
|
savedLang = storedLang;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 如果都没有,根据浏览器语言设置
|
||||||
|
if (savedLang === 'en') {
|
||||||
|
if (navigator.language.startsWith("en")) {
|
||||||
|
savedLang = "en";
|
||||||
|
} else if (navigator.language.includes("zh")) {
|
||||||
|
savedLang = "cn";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置多个位置确保语言被正确读取
|
||||||
|
document.documentElement.setAttribute('data-initial-lang', savedLang);
|
||||||
|
document.documentElement.setAttribute('lang', savedLang === 'cn' ? 'zh-CN' : 'en');
|
||||||
|
document.documentElement.setAttribute('data-locale', savedLang);
|
||||||
|
window.__INITIAL_LANG__ = savedLang;
|
||||||
|
|
||||||
|
// 为i18n设置初始语言
|
||||||
|
window.__I18N_INITIAL_LOCALE__ = savedLang;
|
||||||
|
|
||||||
|
// 确保cookie和localStorage同步
|
||||||
|
if (savedLang !== 'en') {
|
||||||
|
document.cookie = 'i18n_redirected=' + savedLang + '; path=/; max-age=31536000';
|
||||||
|
localStorage.setItem('locale_lang', savedLang);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
const defaultLang = 'en';
|
||||||
|
document.documentElement.setAttribute('data-initial-lang', defaultLang);
|
||||||
|
document.documentElement.setAttribute('lang', 'en');
|
||||||
|
document.documentElement.setAttribute('data-locale', defaultLang);
|
||||||
|
window.__INITIAL_LANG__ = defaultLang;
|
||||||
|
window.__I18N_INITIAL_LOCALE__ = defaultLang;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
`,
|
||||||
|
type: 'text/javascript'
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
@import './common/css/common.scss';
|
||||||
|
|
||||||
|
// 防止语言切换时的闪烁 - 优化版本
|
||||||
|
html:not([data-locale]) {
|
||||||
|
// 在语言未确定前隐藏内容
|
||||||
|
body {
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.2s ease;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 语言确定后显示内容
|
||||||
|
html[data-locale] {
|
||||||
|
body {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确保语言切换平滑
|
||||||
|
html {
|
||||||
|
transition: all 0.1s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 语言特定的样式优化
|
||||||
|
html[data-locale="en"] {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
html[data-locale="cn"] {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 防止水合不匹配时的闪烁
|
||||||
|
.navbar {
|
||||||
|
opacity: 1;
|
||||||
|
transition: opacity 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确保内容在语言切换时不会跳动
|
||||||
|
* {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 只有特定元素需要过渡效果
|
||||||
|
.navbar,
|
||||||
|
.menu-item,
|
||||||
|
.language-selector,
|
||||||
|
.mobile-menu {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 防止语言切换时的布局抖动
|
||||||
|
.language-selector {
|
||||||
|
min-width: 80px; // 确保语言选择器有固定宽度
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-text {
|
||||||
|
min-width: 40px; // 确保语言文本有固定宽度
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: MiSans-Light;
|
||||||
|
src: url("/static/font/MiSans-Light.ttf");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: MiSans-Bold;
|
||||||
|
src: url("/static/font/MiSans-Bold.ttf");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
src: url("/static/font/MiSans-Medium.ttf");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
src: url("/static/font/MiSans-Regular.ttf");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: MiSans-Normal;
|
||||||
|
src: url("/static/font/MiSans-Normal.ttf");
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: MiSans-SemiBold;
|
||||||
|
src: url("/static/font/MiSans-Semibold.ttf");
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,992 @@
|
||||||
|
// 默认样式清除
|
||||||
|
body, div, span, header, footer, nav, section, aside, article, ul, dl, dt, dd, li, a, p, h1, h2, h3, h4,h5, h6, i, b, textarea, button, input, select, figure, figcaption{
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
list-style: none;
|
||||||
|
font-style: normal;
|
||||||
|
text-decoration: none;
|
||||||
|
border: none;
|
||||||
|
font-weight: normal;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
box-sizing: border-box;
|
||||||
|
-webkit-tap-highlight-color:transparent;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
&:hover{
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 字体系统定义
|
||||||
|
:root {
|
||||||
|
--font-light: MiSans-Light;
|
||||||
|
--font-normal: MiSans-Normal;
|
||||||
|
--font-regular: MiSans-Regular;
|
||||||
|
--font-medium: MiSans-Medium;
|
||||||
|
--font-semibold: MiSans-SemiBold;
|
||||||
|
--font-bold: MiSans-Bold;
|
||||||
|
|
||||||
|
// 字体大小系统
|
||||||
|
--text-xs: 0.12rem; // 12px
|
||||||
|
--text-sm: 0.14rem; // 14px
|
||||||
|
--text-base: 0.16rem; // 16px
|
||||||
|
--text-lg: 0.18rem; // 18px
|
||||||
|
--text-xl: 0.20rem; // 20px
|
||||||
|
--text-2xl: 0.24rem; // 24px
|
||||||
|
--text-3xl: 0.28rem; // 28px
|
||||||
|
--text-4xl: 0.32rem; // 32px
|
||||||
|
--text-5xl: 0.36rem; // 36px
|
||||||
|
--text-6xl: 0.40rem; // 40px
|
||||||
|
|
||||||
|
// 响应式断点
|
||||||
|
--breakpoint-xs: 375px;
|
||||||
|
--breakpoint-sm: 480px;
|
||||||
|
--breakpoint-md: 768px;
|
||||||
|
--breakpoint-lg: 1024px;
|
||||||
|
--breakpoint-xl: 1440px;
|
||||||
|
--breakpoint-2xl: 1920px;
|
||||||
|
--breakpoint-4k: 2560px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 基础样式
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul, ol, li {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
outline: none;
|
||||||
|
color: #333;
|
||||||
|
cursor: pointer;
|
||||||
|
font-family: var(--font-regular);
|
||||||
|
}
|
||||||
|
|
||||||
|
a:focus {
|
||||||
|
outline: none;
|
||||||
|
-moz-outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a img {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
select, input, textarea {
|
||||||
|
border-radius: 0;
|
||||||
|
-webkit-border-radius: 0;
|
||||||
|
font-family: var(--font-regular);
|
||||||
|
}
|
||||||
|
|
||||||
|
input:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input, button, select, textarea {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
resize: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea, input, select {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
background-color: transparent;
|
||||||
|
border-spacing: 0;
|
||||||
|
border-collapse: collapse;
|
||||||
|
font-size: 0.75em;
|
||||||
|
width: 100%;
|
||||||
|
border-top: solid 1px #ddd;
|
||||||
|
border-left: solid 1px #ddd;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
table th {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
text-align: center;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
table td, table th {
|
||||||
|
padding: 5px 10px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
input[type="button"], input[type="submit"], input[type="file"], button {
|
||||||
|
cursor: pointer;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
font-family: var(--font-regular);
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 响应式根字体大小
|
||||||
|
html {
|
||||||
|
font-size: calc(100 * 100vw / 1920) !important;
|
||||||
|
min-height: 100vh;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
font-size: calc(100 * 100vw / 2560) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1920px 屏幕
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
font-size: calc(100 * 100vw / 1920) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1440px 屏幕
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
font-size: calc(100 * 100vw / 1440) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1024px 屏幕
|
||||||
|
@media (min-width: 1024px) and (max-width: 1439px) {
|
||||||
|
font-size: calc(100 * 100vw / 1024) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 768px 屏幕
|
||||||
|
@media (min-width: 768px) and (max-width: 1023px) {
|
||||||
|
font-size: calc(100 * 100vw / 768) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 480px 屏幕
|
||||||
|
@media (min-width: 480px) and (max-width: 767px) {
|
||||||
|
font-size: calc(100 * 100vw / 480) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 375px 屏幕
|
||||||
|
@media (max-width: 479px) {
|
||||||
|
font-size: calc(100 * 100vw / 375) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
font-family: var(--font-regular);
|
||||||
|
user-select: text;
|
||||||
|
font-size: var(--text-base);
|
||||||
|
color: #3f4552;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 滚动条样式 */
|
||||||
|
/* 移动端隐藏滚动条 */
|
||||||
|
@media (max-width: 750px) {
|
||||||
|
html::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
-ms-overflow-style: none; /* IE and Edge */
|
||||||
|
scrollbar-width: none; /* Firefox */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 桌面端滚动条样式 */
|
||||||
|
@media (min-width: 751px) {
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
width: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-track {
|
||||||
|
background: #f1f1f1;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
background: #c1c1c1;
|
||||||
|
border-radius: 4px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #a8a8a8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
image {
|
||||||
|
border: 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 通用布局类
|
||||||
|
.define-topBar__components {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.autowidth {
|
||||||
|
width: 18rem;
|
||||||
|
margin: auto;
|
||||||
|
max-width: 90%;
|
||||||
|
|
||||||
|
@media (max-width: 1366px) {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 容器类
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 24px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
max-width: 1800px;
|
||||||
|
padding: 0 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
max-width: 1500px;
|
||||||
|
padding: 0 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
max-width: 1300px;
|
||||||
|
padding: 0 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 0 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 容器类
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 24px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
max-width: 1800px;
|
||||||
|
padding: 0 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
max-width: 1500px;
|
||||||
|
padding: 0 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
max-width: 1300px;
|
||||||
|
padding: 0 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 0 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 动画系统
|
||||||
|
.animationDH {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animateLt {
|
||||||
|
animation: 1s dh_left linear both;
|
||||||
|
-webkit-animation: 1s dh_left linear both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animateRt {
|
||||||
|
animation: 1s dh_right linear both;
|
||||||
|
-webkit-animation: 1s dh_right linear both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.animateBt {
|
||||||
|
animation: 1s dh_buttom linear both;
|
||||||
|
-webkit-animation: 1s dh_buttom linear both;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 首页专用动画
|
||||||
|
.dhLeft {
|
||||||
|
-webkit-opacity: 0;
|
||||||
|
transform: translate(75px, 0);
|
||||||
|
-webkit-transform: translate(75px, 0);
|
||||||
|
transition: 1s;
|
||||||
|
-webkit-transition: 1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhRight {
|
||||||
|
-webkit-opacity: 0;
|
||||||
|
transform: translate(-45px, 0);
|
||||||
|
-webkit-transform: translate(-45px, 0);
|
||||||
|
transition: 1s;
|
||||||
|
-webkit-transition: 1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhTop {
|
||||||
|
transform: translate(0, 45px);
|
||||||
|
-webkit-transform: translate(0, 45px);
|
||||||
|
transition: transform 1s;
|
||||||
|
-webkit-transition: transform 1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhBottom {
|
||||||
|
-webkit-opacity: 0;
|
||||||
|
transform: translate(0, -45px);
|
||||||
|
-webkit-transform: translate(0, -45px);
|
||||||
|
transition: 1s;
|
||||||
|
-webkit-transition: 1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 动画延迟
|
||||||
|
.dhyc1 {
|
||||||
|
transition-delay: 0.25s;
|
||||||
|
-webkit-transition-delay: 0.25s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhyc2 {
|
||||||
|
transition-delay: 0.5s;
|
||||||
|
-webkit-transition-delay: 0.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhyc3 {
|
||||||
|
transition-delay: 0.75s;
|
||||||
|
-webkit-transition-delay: 0.75s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dhyc4 {
|
||||||
|
transition-delay: 1s;
|
||||||
|
-webkit-transition-delay: 1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 动画关键帧
|
||||||
|
@-webkit-keyframes dh_right {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate(60px, 0%);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes dh_right {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translate(60px, 0%);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes dh_left {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate(-60px, 0%);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes dh_left {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translate(-60px, 0%);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes dh_buttom {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate(0, 60px);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
-webkit-transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes dh_buttom {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translate(0, 60px);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Banner 样式 */
|
||||||
|
.banner {
|
||||||
|
margin-top: 0.52rem;
|
||||||
|
overflow: hidden;
|
||||||
|
height: 5.5rem;
|
||||||
|
background-size: cover !important;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
box-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 230px;
|
||||||
|
|
||||||
|
@media (max-width: 1600px) {
|
||||||
|
margin-top: 0.6rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 1099px) {
|
||||||
|
margin-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1100px) {
|
||||||
|
height: 7.5rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 800px) {
|
||||||
|
height: 10rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
color: #fff;
|
||||||
|
animation: 1s dh_buttom linear both;
|
||||||
|
-webkit-animation: 1s dh_buttom linear both;
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: var(--text-5xl);
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
font-family: var(--font-medium);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: var(--text-xl);
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-family: var(--font-light);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 751px) and (max-width: 1100px) {
|
||||||
|
&__title {
|
||||||
|
font-size: var(--text-6xl);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: var(--text-3xl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 750px) {
|
||||||
|
&__title {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: 0.55rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 550px) {
|
||||||
|
&__title {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subtitle {
|
||||||
|
font-size: 0.65rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pageMain {
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
&__breads {
|
||||||
|
color: #666;
|
||||||
|
width: auto;
|
||||||
|
margin: 0 auto;
|
||||||
|
border-bottom: 1px solid #e5e5e5;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
width: 15rem;
|
||||||
|
color: #666;
|
||||||
|
line-height: 4;
|
||||||
|
text-align: left;
|
||||||
|
font-family: var(--font-regular);
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
&__avater {
|
||||||
|
width: 0.17rem;
|
||||||
|
height: 0.17rem;
|
||||||
|
margin-bottom: 0.03rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1600px) {
|
||||||
|
font-size: 13.5px;
|
||||||
|
line-height: 3.2;
|
||||||
|
&__icon {
|
||||||
|
&__avater {
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
font-family: var(--font-medium);
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
cursor: pointer;
|
||||||
|
@media (min-width: 1100px) {
|
||||||
|
&:hover {
|
||||||
|
color: #0072ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
font-size: 13px;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
font-size: 0.6rem;
|
||||||
|
&__icon {
|
||||||
|
&__avater {
|
||||||
|
width: 0.68rem;
|
||||||
|
height: 0.68rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 350px) {
|
||||||
|
font-size: 0.7rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__line {
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
-webkit-justify-content: center;
|
||||||
|
border-bottom: 1px solid #e5e5e5;
|
||||||
|
padding: 0.1rem 0 0.2rem;
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
margin: 0 1rem;
|
||||||
|
position: relative;
|
||||||
|
padding: 0.1rem 0;
|
||||||
|
text-align: center;
|
||||||
|
font-size: var(--text-lg);
|
||||||
|
font-family: var(--font-normal);
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
@media (max-width: 1600px) {
|
||||||
|
font-size: 15.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 501px) and (max-width: 1100px) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
font-size: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 350px) {
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
position: absolute;
|
||||||
|
left: 15%;
|
||||||
|
content: "";
|
||||||
|
bottom: 0;
|
||||||
|
height: 3px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background: #0072ff;
|
||||||
|
width: 0;
|
||||||
|
transition: 0.5s;
|
||||||
|
|
||||||
|
@media (max-width: 700px) {
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover::before {
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--on {
|
||||||
|
color: #0072ff;
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__buttom-line {
|
||||||
|
padding: 0.36rem 0 0.7rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 粘性导航栏样式
|
||||||
|
.sticky-page-layout {
|
||||||
|
position: relative;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin sticky-nav-style {
|
||||||
|
line-height: 3;
|
||||||
|
@media (max-width: 1500px) {
|
||||||
|
height: auto;
|
||||||
|
line-height: 3.5;
|
||||||
|
font-size: 0.22rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 1200px) {
|
||||||
|
height: auto;
|
||||||
|
line-height: 3.5;
|
||||||
|
font-size: 0.24rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 850px) {
|
||||||
|
font-size: 0.42rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 650px) {
|
||||||
|
line-height: 3.5;
|
||||||
|
font-size: 0.5rem;
|
||||||
|
}
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
line-height: 3.5;
|
||||||
|
font-size: 0.63rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-sticky {
|
||||||
|
@include sticky-nav-style;
|
||||||
|
top: 0px;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 99;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&__center {
|
||||||
|
width: 9.8rem;
|
||||||
|
@media (max-width: 1200px) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
margin: 0 auto;
|
||||||
|
transition: width 0.3s;
|
||||||
|
color: #ffffff;
|
||||||
|
display: flex;
|
||||||
|
border-bottom: 1px solid hsla(0, 0%, 100%, 0.24);
|
||||||
|
justify-content: space-between;
|
||||||
|
font-family: var(--font-regular);
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
font-size: 0.17rem;
|
||||||
|
font-family: "Microsoft YaHei";
|
||||||
|
font-weight: bold;
|
||||||
|
@include sticky-nav-style;
|
||||||
|
@media (max-width: 1200px) {
|
||||||
|
margin-left: 0.6rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
display: flex;
|
||||||
|
width: fit-content;
|
||||||
|
@include sticky-nav-style;
|
||||||
|
font-size: 0.15rem;
|
||||||
|
justify-content: space-between;
|
||||||
|
cursor: pointer;
|
||||||
|
box-sizing: border-box;
|
||||||
|
@media (max-width: 1200px) {
|
||||||
|
margin-right: 0.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
margin: 0 0.2rem;
|
||||||
|
opacity: 0.6;
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
margin: 0 0.4rem;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--Active {
|
||||||
|
opacity: 1;
|
||||||
|
border-bottom: 0.01rem solid #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__dropdown {
|
||||||
|
position: relative;
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
&__up {
|
||||||
|
@include sticky-nav-style;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #fff;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-right: 15px;
|
||||||
|
.arrow-down {
|
||||||
|
width: 30px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__menu {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: -50%;
|
||||||
|
background-color: #222;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-top: 10px;
|
||||||
|
box-shadow: 0 .04rem .1rem .02rem rgba(0, 0, 0, .08);
|
||||||
|
z-index: 1;
|
||||||
|
width: 150%;
|
||||||
|
padding: 20px 0;
|
||||||
|
&__item {
|
||||||
|
color: #919191;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: center;
|
||||||
|
&--Active {
|
||||||
|
color: #0072ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-sticky--active {
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
position: sticky;
|
||||||
|
background-color: rgba(3, 6, 11, 0.4);
|
||||||
|
border-bottom: 1px solid hsla(0, 5%, 92%, 0.2);
|
||||||
|
|
||||||
|
.nav-sticky__center {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 产品详情页banner
|
||||||
|
.detail-banner {
|
||||||
|
width: 100%;
|
||||||
|
height: 10.8rem;
|
||||||
|
color: #ffffff;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-family: var(--font-medium);
|
||||||
|
position: absolute;
|
||||||
|
font-size: 0.55rem;
|
||||||
|
top: 1.5rem;
|
||||||
|
left: 50%;
|
||||||
|
width: 90%;
|
||||||
|
text-align: center;
|
||||||
|
transform: translate(-50%, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
&__avater {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 850px) {
|
||||||
|
padding-top: 2rem;
|
||||||
|
height: 12.8rem;
|
||||||
|
&__title {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
top: 3.8rem;
|
||||||
|
}
|
||||||
|
&__title-2 {
|
||||||
|
font-size: 0.8rem;
|
||||||
|
top: 3.2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 加载遮罩 */
|
||||||
|
.load-mask {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
z-index: 10002;
|
||||||
|
|
||||||
|
.spinner {
|
||||||
|
width: 150px;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 20vh;
|
||||||
|
|
||||||
|
.spinner__item {
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
background-color: #aeadba;
|
||||||
|
border-radius: 100%;
|
||||||
|
display: inline-block;
|
||||||
|
animation: bouncedelay 1.4s infinite ease-in-out;
|
||||||
|
-webkit-animation-fill-mode: both;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bounce1 {
|
||||||
|
-webkit-animation-delay: -0.32s;
|
||||||
|
animation-delay: -0.32s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bounce2 {
|
||||||
|
-webkit-animation-delay: -0.16s;
|
||||||
|
animation-delay: -0.16s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes bouncedelay {
|
||||||
|
0%, 80%, 100% {
|
||||||
|
transform: scale(0.0);
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
transform: scale(1.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 产品、新闻用的loading
|
||||||
|
.load-loading {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 35vh;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
width: 200px;
|
||||||
|
height: auto;
|
||||||
|
color: #aeadba;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__up {
|
||||||
|
width: 55px;
|
||||||
|
margin: auto;
|
||||||
|
&__avater {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 3;
|
||||||
|
font-family: var(--font-regular);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
&__up {
|
||||||
|
width: 47px;
|
||||||
|
}
|
||||||
|
&__text {
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) {
|
||||||
|
width: 2rem;
|
||||||
|
height: 1rem;
|
||||||
|
&__up {
|
||||||
|
width: 0.55rem;
|
||||||
|
}
|
||||||
|
&__text {
|
||||||
|
font-size: 0.14rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 动画样式
|
||||||
|
@mixin isAnimatingStyle {
|
||||||
|
transform: translateY(11.71rpx);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[class*="is-animating-"] {
|
||||||
|
@include isAnimatingStyle;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 字体工具类
|
||||||
|
.font-light { font-family: var(--font-light); }
|
||||||
|
.font-normal { font-family: var(--font-normal); }
|
||||||
|
.font-regular { font-family: var(--font-regular); }
|
||||||
|
.font-medium { font-family: var(--font-medium); }
|
||||||
|
.font-semibold { font-family: var(--font-semibold); }
|
||||||
|
.font-bold { font-family: var(--font-bold); }
|
||||||
|
|
||||||
|
// 文本大小工具类
|
||||||
|
.text-xs { font-size: var(--text-xs); }
|
||||||
|
.text-sm { font-size: var(--text-sm); }
|
||||||
|
.text-base { font-size: var(--text-base); }
|
||||||
|
.text-lg { font-size: var(--text-lg); }
|
||||||
|
.text-xl { font-size: var(--text-xl); }
|
||||||
|
.text-2xl { font-size: var(--text-2xl); }
|
||||||
|
.text-3xl { font-size: var(--text-3xl); }
|
||||||
|
.text-4xl { font-size: var(--text-4xl); }
|
||||||
|
.text-5xl { font-size: var(--text-5xl); }
|
||||||
|
.text-6xl { font-size: var(--text-6xl); }
|
||||||
|
|
@ -0,0 +1,117 @@
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
ref,
|
||||||
|
computed,
|
||||||
|
onMounted,
|
||||||
|
onBeforeUnmount,
|
||||||
|
} from "vue";
|
||||||
|
import { useI18n } from "#imports";
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
const scrollTop = ref(0); // 监听滚动事件得到的值
|
||||||
|
const top = ref(300); // 超过这个值返回图标显示出来
|
||||||
|
|
||||||
|
// 返回顶部函数
|
||||||
|
const backToTop = () => {
|
||||||
|
window.scrollTo({
|
||||||
|
top: 0,
|
||||||
|
behavior: "smooth",
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 计算属性,根据scrollTop和top值判断是否显示返回顶部按钮
|
||||||
|
const fadeShow = computed(() => {
|
||||||
|
return scrollTop.value > top.value;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听滚动事件
|
||||||
|
const handleScroll = () => {
|
||||||
|
scrollTop.value = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
window.addEventListener('scroll', handleScroll);
|
||||||
|
});
|
||||||
|
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
window.removeEventListener('scroll', handleScroll);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div v-if="fadeShow" class="contact">
|
||||||
|
<div class="contact__drift">
|
||||||
|
<a class="contact__drift__box" @click="backToTop">
|
||||||
|
<img
|
||||||
|
src="/static/back-top/back_top.png"
|
||||||
|
:title="t('page.back-to-top')"
|
||||||
|
:alt="t('page.back-to-top')"
|
||||||
|
/>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.contact {
|
||||||
|
position: fixed;
|
||||||
|
text-align: center;
|
||||||
|
z-index: 9999;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
right: 25px;
|
||||||
|
bottom: 105px;
|
||||||
|
|
||||||
|
&__drift {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #000;
|
||||||
|
line-height: 2.5;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
display: block;
|
||||||
|
width: 45px;
|
||||||
|
height: 45px;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
color: #fff;
|
||||||
|
color: #000;
|
||||||
|
background: #ffffff;
|
||||||
|
box-shadow: 0px 8px 20px rgba(0, 0, 0, 0.08);
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0px 12px 25px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
width: 45px;
|
||||||
|
height: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,974 @@
|
||||||
|
<script setup name="footer">
|
||||||
|
import { ref, reactive, onUnmounted, onMounted } from "vue";
|
||||||
|
import { useI18n } from "#imports";
|
||||||
|
import { GetMessageApi } from "@/service/api.js";
|
||||||
|
import { useRouter, useRoute } from "#imports";
|
||||||
|
const { t } = useI18n();
|
||||||
|
import { GetProductCategoryApi } from "~/service/api.js";
|
||||||
|
//商品与新闻状态
|
||||||
|
import useSheller from "~/stores/seller.js";
|
||||||
|
// 语言判断
|
||||||
|
import langToCheck from "~/hook/lang.js";
|
||||||
|
const langIs = ref(langToCheck());
|
||||||
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
|
//页面跳转事件
|
||||||
|
const Store = useSheller();
|
||||||
|
const props = defineProps({
|
||||||
|
//首页加边距
|
||||||
|
marginSpacing: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const subRouteEvent = (subParmas, item) => {
|
||||||
|
let secondaryRoute = subParmas.enName;
|
||||||
|
switch (secondaryRoute) {
|
||||||
|
case "Power Station": {
|
||||||
|
Store.clickTab = 0;
|
||||||
|
router.push({
|
||||||
|
name: "product",
|
||||||
|
query: {
|
||||||
|
CategoryId: 0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "Solar Panel": {
|
||||||
|
Store.clickTab = 1;
|
||||||
|
router.push({
|
||||||
|
name: "product",
|
||||||
|
query: {
|
||||||
|
CategoryId: 1,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "Accessory": {
|
||||||
|
Store.clickTab = 2;
|
||||||
|
router.push({
|
||||||
|
name: "product",
|
||||||
|
query: {
|
||||||
|
CategoryId: 2,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "About Us": {
|
||||||
|
router.push({
|
||||||
|
name: "about-us",
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "Contact": {
|
||||||
|
router.push({
|
||||||
|
name: "contact-us",
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
// 产品分类跳转到首页对应分类
|
||||||
|
router.push({
|
||||||
|
name: "home",
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
footTabs.forEach((it) => {
|
||||||
|
(it.checked = false), (it.expand = false);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 改成小写,并 " - "代替空格
|
||||||
|
const FlowReplace = (str) => {
|
||||||
|
return str.toLowerCase().replace(/\s+/g, "-");
|
||||||
|
};
|
||||||
|
//expandwei
|
||||||
|
const footTabs = reactive([]);
|
||||||
|
const GetProductCategorylist = () => {
|
||||||
|
GetProductCategoryApi().then((res) => {
|
||||||
|
let arrofObjects = res.rows;
|
||||||
|
Store.categoryList = arrofObjects.map((obj, k) => {
|
||||||
|
return {
|
||||||
|
...obj,
|
||||||
|
categorId: k,
|
||||||
|
path: "product/product",
|
||||||
|
Params: k,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
footTabs[0].dropList = Store.categoryList;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
onMounted(() => {
|
||||||
|
footTabs.push(
|
||||||
|
{
|
||||||
|
enName: "Product",
|
||||||
|
name: "产品系列",
|
||||||
|
expand: false,
|
||||||
|
dropList: [
|
||||||
|
{
|
||||||
|
enName: "监控摄像头",
|
||||||
|
name: "监控摄像头",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enName: "LED灯泡",
|
||||||
|
name: "LED灯泡",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enName: "车灯",
|
||||||
|
name: "车灯",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enName: "About",
|
||||||
|
name: "关于我们",
|
||||||
|
expand: false,
|
||||||
|
dropList: [
|
||||||
|
{
|
||||||
|
enName: "About Us",
|
||||||
|
name: "关于我们",
|
||||||
|
path: "/about-us"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
enName: "Contact",
|
||||||
|
name: "联系我们",
|
||||||
|
expand: false,
|
||||||
|
dropList: [
|
||||||
|
{
|
||||||
|
enName: "Contact",
|
||||||
|
name: "联系我们",
|
||||||
|
path: "/contact-us/contact-us"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
// 服务协议、隐私政策、域名、网安信息
|
||||||
|
const GoAgreement = (value) => {
|
||||||
|
switch (value) {
|
||||||
|
case 1: {
|
||||||
|
window.open("https://www.mingyanglg.com/protocol/service-agreement.html");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2: {
|
||||||
|
window.open("https://www.mingyanglg.com/protocol/privacy-policy.html");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3: {
|
||||||
|
window.open("https://beian.miit.gov.cn/#/Integrated/index");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4: {
|
||||||
|
//网站隐私协议
|
||||||
|
router.push({
|
||||||
|
name: "privacy-policy",
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 5: {
|
||||||
|
// ICP备案信息
|
||||||
|
window.open("https://beian.miit.gov.cn/");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 6: {
|
||||||
|
// 公司官网
|
||||||
|
window.open("https://www.mingyanglg.com");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 7: {
|
||||||
|
// 公安备案信息
|
||||||
|
window.open("http://www.beian.gov.cn/");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//折叠面板组件
|
||||||
|
const TransitTap = (symbolName) => {
|
||||||
|
footTabs.forEach((it) => {
|
||||||
|
symbolName == it.enName ? (it.expand = !it.expand) : (it.expand = false);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 接口
|
||||||
|
const goTab = (path) => {
|
||||||
|
router.push({
|
||||||
|
name: path,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="page">
|
||||||
|
<!-- 联系我们部分 -->
|
||||||
|
<div class="foot">
|
||||||
|
<!-- 1024 -->
|
||||||
|
<div class="pc-show-bar">
|
||||||
|
<!-- 头部 -->
|
||||||
|
<div class="foot-flex">
|
||||||
|
<div class="foot-top">
|
||||||
|
<div class="footer-content">
|
||||||
|
<!-- 公司信息 -->
|
||||||
|
<div class="company-info">
|
||||||
|
<div class="company-logo">
|
||||||
|
<div class="logo-section">
|
||||||
|
<div class="company-name">{{ t('footer.company.name') }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h3>{{ t('footer.company.description') }}</h3>
|
||||||
|
<p>{{ t('footer.company.design') }}</p>
|
||||||
|
|
||||||
|
<div class="contact-info">
|
||||||
|
<p>{{ t('footer.wechat') }}: +86 131 2923 4398</p>
|
||||||
|
<p>{{ t('footer.whatsapp') }}: +86 158 7678 7345</p>
|
||||||
|
<p>
|
||||||
|
{{ t('footer.address') }}: {{ t('contact.company.address') }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 二维码区域 -->
|
||||||
|
<div class="qr-codes">
|
||||||
|
<div class="qr-code-item">
|
||||||
|
<div class="qr-placeholder">{{ t('footer.qr.wechat') }}</div>
|
||||||
|
<p>+86 131 2923 4398</p>
|
||||||
|
</div>
|
||||||
|
<div class="qr-code-item">
|
||||||
|
<div class="qr-placeholder">{{ t('footer.qr.whatsapp') }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 分隔线 -->
|
||||||
|
<div class="separator-line"></div>
|
||||||
|
</div>
|
||||||
|
<div class="mobile-show-bar">
|
||||||
|
<!-- 移动端简化版 -->
|
||||||
|
<div class="mobile-footer">
|
||||||
|
<div class="mobile-company-info">
|
||||||
|
<h4>{{ t('footer.company.name') }}</h4>
|
||||||
|
<p>{{ t('footer.company.description') }}</p>
|
||||||
|
<p>{{ t('footer.company.design') }}</p>
|
||||||
|
<p>{{ t('footer.wechat') }}: +86 131 2923 4398</p>
|
||||||
|
<p>{{ t('footer.whatsapp') }}: +86 158 7678 7345</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 末尾 -->
|
||||||
|
<div class="foot-bottom" v-if="langIs === 'cn'">
|
||||||
|
<div class="foot-bottom__box">
|
||||||
|
<div class="foot-bottom__box__content">
|
||||||
|
<p class="foot-bottom__box__content__copyright">
|
||||||
|
版权所有 © 2025 明阳良光 |
|
||||||
|
<a @click="GoAgreement(5)" class="foot-bottom__box__content__link">粤ICP备2023070569号</a> |
|
||||||
|
<a @click="GoAgreement(7)" class="foot-bottom__box__content__link">粤公网安备 粤ICP备2023070569号</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import "style/foot-bar.scss";
|
||||||
|
|
||||||
|
.pc-show-bar {
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
@media (min-width: 1025px) {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-show-bar {
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$form_mg0611-padding: 6.25vw 0;
|
||||||
|
$form-theme-color: #2164ff;
|
||||||
|
|
||||||
|
// 新的底部样式
|
||||||
|
.footer-content {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: flex-start;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 20px 20px 15px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
max-width: 1800px;
|
||||||
|
padding: 40px 60px 30px;
|
||||||
|
gap: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
max-width: 1500px;
|
||||||
|
padding: 35px 50px 25px;
|
||||||
|
gap: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
max-width: 1300px;
|
||||||
|
padding: 30px 40px 20px;
|
||||||
|
gap: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 25px 30px 18px;
|
||||||
|
gap: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 25px;
|
||||||
|
padding: 20px 20px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
gap: 20px;
|
||||||
|
padding: 18px 16px 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
gap: 16px;
|
||||||
|
padding: 15px 12px 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分隔线样式
|
||||||
|
.separator-line {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
max-width: 1800px;
|
||||||
|
padding: 0 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
max-width: 1500px;
|
||||||
|
padding: 0 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
max-width: 1300px;
|
||||||
|
padding: 0 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 0 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
height: 1px;
|
||||||
|
background-color: #585656;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-info {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.company-logo {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
margin-bottom: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-section {
|
||||||
|
.company-name {
|
||||||
|
font-size: 18px !important;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #343434;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
font-size: 28px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
font-size: 24px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
font-size: 20px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
font-size: 18px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
font-size: 16px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
font-size: 15px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
font-size: 14px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #343434;
|
||||||
|
margin: 8px 0;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
font-size: 22px;
|
||||||
|
margin: 12px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
font-size: 20px;
|
||||||
|
margin: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
font-size: 18px;
|
||||||
|
margin: 9px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
font-size: 13px;
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: #626262;
|
||||||
|
margin: 5px 0;
|
||||||
|
font-size: 13px !important;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
font-size: 15px !important;
|
||||||
|
margin: 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
font-size: 14px !important;
|
||||||
|
margin: 7px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
font-size: 13px !important;
|
||||||
|
margin: 6px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
font-size: 12px !important;
|
||||||
|
margin: 4px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
font-size: 11px !important;
|
||||||
|
margin: 3px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-info {
|
||||||
|
margin-top: 15px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
margin-top: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
margin-top: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
margin-top: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 6px 0;
|
||||||
|
color: #626262;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
margin: 10px 0;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
margin: 8px 0;
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
margin: 7px 0;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
margin: 5px 0;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
margin: 4px 0;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.qr-codes {
|
||||||
|
display: flex;
|
||||||
|
gap: 25px;
|
||||||
|
margin-left: 30px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
gap: 40px;
|
||||||
|
margin-left: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
gap: 35px;
|
||||||
|
margin-left: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
gap: 30px;
|
||||||
|
margin-left: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
gap: 20px;
|
||||||
|
margin-left: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
margin-left: 0;
|
||||||
|
gap: 15px;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qr-code-item {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.qr-placeholder {
|
||||||
|
width: 120px;
|
||||||
|
height: 120px;
|
||||||
|
border: 2px solid #626262;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
color: #626262;
|
||||||
|
font-size: 12px;
|
||||||
|
border-radius: 6px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
width: 160px;
|
||||||
|
height: 160px;
|
||||||
|
font-size: 16px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
width: 150px;
|
||||||
|
height: 150px;
|
||||||
|
font-size: 15px;
|
||||||
|
margin-bottom: 11px;
|
||||||
|
border-radius: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
width: 140px;
|
||||||
|
height: 140px;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
width: 130px;
|
||||||
|
height: 130px;
|
||||||
|
font-size: 13px;
|
||||||
|
margin-bottom: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
width: 110px;
|
||||||
|
height: 110px;
|
||||||
|
font-size: 12px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
font-size: 11px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
width: 90px;
|
||||||
|
height: 90px;
|
||||||
|
font-size: 10px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: #626262;
|
||||||
|
font-size: 13px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
font-size: 11px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-footer {
|
||||||
|
padding: 20px 20px;
|
||||||
|
|
||||||
|
.mobile-company-info {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
color: #343434;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: #626262;
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 表单样式
|
||||||
|
.contact-form {
|
||||||
|
width: 5.2rem;
|
||||||
|
margin: 10px auto;
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 0;
|
||||||
|
padding: 30px 20px 40px;
|
||||||
|
background-color: #4d4d4d;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 18px;
|
||||||
|
padding-bottom: 16px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 49.2%;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
input,
|
||||||
|
textarea {
|
||||||
|
background: #fcfcfc;
|
||||||
|
height: 0.4rem;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 0.06rem;
|
||||||
|
border-radius: 0.03rem;
|
||||||
|
padding: 0px 0.15rem;
|
||||||
|
font-size: 0.14rem;
|
||||||
|
color: #000;
|
||||||
|
-webkit-transition: all 0.5s;
|
||||||
|
-o-transition: all 0.5s;
|
||||||
|
transition: all 0.5s;
|
||||||
|
font-family: MiSans-Normal;
|
||||||
|
|
||||||
|
@media (max-width: 1440px) {
|
||||||
|
font-size: 13.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1280px) {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
font-size: 12px;
|
||||||
|
height: 35px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
width: 100%;
|
||||||
|
height: 1rem;
|
||||||
|
padding: 0.15rem;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
font-size: 12px;
|
||||||
|
height: 120px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
width: 1rem;
|
||||||
|
height: 0.34rem;
|
||||||
|
text-align: center;
|
||||||
|
background: $form-theme-color;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 0.14rem;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
@media (max-width: 1440px) {
|
||||||
|
font-size: 13.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1280px) {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
width: 100px;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 底部版权信息样式
|
||||||
|
.foot-bottom {
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
max-width: 1800px;
|
||||||
|
padding: 0 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
max-width: 1500px;
|
||||||
|
padding: 0 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
max-width: 1300px;
|
||||||
|
padding: 0 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 0 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: auto;
|
||||||
|
padding: 15px 0;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
padding: 25px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
padding: 22px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 18px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 12px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__copyright {
|
||||||
|
color: #626262;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 0;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
font-size: 11px;
|
||||||
|
line-height: 2.2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__link {
|
||||||
|
color: #2c3e50;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: #000;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,323 @@
|
||||||
|
|
||||||
|
$samll-color: #626262;
|
||||||
|
$foot-bottom-color: #999;
|
||||||
|
.page {
|
||||||
|
background-color: #f4f4f4 !important;
|
||||||
|
|
||||||
|
@mixin titleStyle {
|
||||||
|
font-size: 0.2rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
color: #343434;
|
||||||
|
line-height: 2.8;
|
||||||
|
|
||||||
|
@media (min-width:1900px) {
|
||||||
|
font-size: 0.17rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
font-size: 0.23rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:1024px) and (max-width:1450px) {
|
||||||
|
font-size: 0.26rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin samllStyle {
|
||||||
|
cursor: pointer;
|
||||||
|
color: $samll-color;
|
||||||
|
line-height: 2.5;
|
||||||
|
letter-spacing: 0.01rem;
|
||||||
|
font-size: 0.17rem;
|
||||||
|
font-family: MiSans-Normal;
|
||||||
|
transition: .3s;
|
||||||
|
|
||||||
|
@media (min-width:1900px) {
|
||||||
|
font-size: 0.16rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
font-size: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:1024px) and (max-width:1450px) {
|
||||||
|
font-size: 0.22rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: #2164ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 头部
|
||||||
|
.foot {
|
||||||
|
color: #343434;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
|
||||||
|
@media (max-width:1024px) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.foot-flex{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.foot-top {
|
||||||
|
padding: 20px 0;
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
&__list {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: inherit;
|
||||||
|
|
||||||
|
&__Item {
|
||||||
|
&:nth-child(3){
|
||||||
|
width: 19%
|
||||||
|
}
|
||||||
|
&:last-child{
|
||||||
|
margin-top: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
&:nth-child(3){
|
||||||
|
width: 24%;
|
||||||
|
// border: 1px solid #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
@include titleStyle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__small {
|
||||||
|
@include samllStyle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__small-2 {
|
||||||
|
@include samllStyle;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__marginTop{
|
||||||
|
.foot-top__list__Item{
|
||||||
|
&:last-child{
|
||||||
|
width: 26%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//末尾
|
||||||
|
.foot-bottom {
|
||||||
|
color: $foot-bottom-color;
|
||||||
|
padding: 10px 0 15px;
|
||||||
|
font-size: 0.19rem;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
@media (min-width:1900px) {
|
||||||
|
font-size: 0.15rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
font-size: 0.21rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:1024px) and (max-width:1450px) {
|
||||||
|
font-size: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
@media (max-width:1450px) {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
&__text {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
@media (min-width:1024px) {
|
||||||
|
&:hover {
|
||||||
|
border-bottom: 0.01rem solid $foot-bottom-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
text {
|
||||||
|
color: $foot-bottom-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1024px) {
|
||||||
|
@mixin mobileFontSize {
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-size: 13px;
|
||||||
|
margin: 0.1rem 0;
|
||||||
|
line-height: 3.5;
|
||||||
|
padding: 0 0.4rem;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
@media (max-width:750px) {
|
||||||
|
// font-size: 0.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:650px) {
|
||||||
|
padding: 0 0.6rem;
|
||||||
|
// font-size: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:500px) {
|
||||||
|
// padding: 0 0.8rem;
|
||||||
|
font-size: 0.6rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.mobile-foot {
|
||||||
|
padding: 20px 0 0;
|
||||||
|
|
||||||
|
&__col {
|
||||||
|
width: 100%;
|
||||||
|
font-family: MiSans-Normal;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #343434;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
&__title {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
border-bottom: 1px solid #4d4d4d;
|
||||||
|
padding: 0 0.5rem;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
@include mobileFontSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-arrow {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
transition-property: transform;
|
||||||
|
transition-duration: 0.3s;
|
||||||
|
transition-timing-function: ease;
|
||||||
|
transform-origin: 50% 50%;
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
transition-property: transform;
|
||||||
|
transition-duration: 0.3s;
|
||||||
|
transition-timing-function: ease;
|
||||||
|
transform-origin: 50% 50%;
|
||||||
|
margin: 0.12rem 0px;
|
||||||
|
@include mobileFontSize;
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 主体
|
||||||
|
&__content {
|
||||||
|
color: #626262;
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: height .5s ease-in-out;
|
||||||
|
|
||||||
|
&__list {
|
||||||
|
padding: 0.3rem 0.8rem;
|
||||||
|
color: #626262;
|
||||||
|
|
||||||
|
&__element {
|
||||||
|
@include mobileFontSize;
|
||||||
|
line-height: 2.5;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
@media (min-width:1025px) {
|
||||||
|
&:hover {
|
||||||
|
color: #2164ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//末尾
|
||||||
|
.foot-bottom {
|
||||||
|
color: $foot-bottom-color;
|
||||||
|
padding: 15px 0 20px;
|
||||||
|
line-height: 1.6;
|
||||||
|
border-top: 1px solid #2a2a2a;
|
||||||
|
width: 100%;
|
||||||
|
min-height: auto;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
justify-content: space-between;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 15px;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:800px) {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
line-height: 1.8;
|
||||||
|
letter-spacing: 0;
|
||||||
|
font-size: 12px;
|
||||||
|
padding: 15px 0 20px;
|
||||||
|
&__space{
|
||||||
|
@media (max-width:800px) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
text {
|
||||||
|
color: $foot-bottom-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,323 @@
|
||||||
|
<script setup>
|
||||||
|
const props = defineProps({
|
||||||
|
langSet: {
|
||||||
|
type: String,
|
||||||
|
default: 'en'
|
||||||
|
},
|
||||||
|
backGroundColor: {
|
||||||
|
type: String,
|
||||||
|
default: '#F2F2F2'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="page" :style="{'background':backGroundColor}">
|
||||||
|
<!-- 优势 -->
|
||||||
|
<section class="features" v-if="props.langSet == 'zh-Hans'">
|
||||||
|
<div class="features__item">
|
||||||
|
<img src="/static/odm-oem/features-icon-1.webp" alt="核心技术" class="features__item__icon">
|
||||||
|
<div class="features__item__content">
|
||||||
|
<h3 class="features__item__content__title">核心技术</h3>
|
||||||
|
<p class="features__item__content__description">电池包热管理<br>PCS 智能双向逆变器<br>混合动力集成控制</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="features__item">
|
||||||
|
<img src="/static/odm-oem/features-icon-2.webp" alt="自动化工厂" class="features__item__icon">
|
||||||
|
<div class="features__item__content">
|
||||||
|
<h3 class="features__item__content__title">自动化工厂</h3>
|
||||||
|
<p class="features__item__content__description">总面积12000平方米<br>选用全球前十半导体<br>供应商芯片</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="features__item">
|
||||||
|
<img src="/static/odm-oem/features-icon-3.webp" alt="全球储能先驱" class="features__item__icon">
|
||||||
|
<div class="features__item__content">
|
||||||
|
<h3 class="features__item__content__title">全球储能先驱</h3>
|
||||||
|
<p class="features__item__content__description">超过两百万台机器<br>销往100多个国家和地区</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="features__item">
|
||||||
|
<img src="/static/odm-oem/features-icon-4.webp" alt="尖端的产品设计" class="features__item__icon">
|
||||||
|
<div class="features__item__content">
|
||||||
|
<h3 class="features__item__content__title">尖端的产品设计</h3>
|
||||||
|
<p class="features__item__content__description">国家专利<br>知识产权</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<!-- 英文优势2 -->
|
||||||
|
<section class="protrude" v-else>
|
||||||
|
<div class="protrude__item">
|
||||||
|
<h2 class="protrude__item__title">Core technology</h2>
|
||||||
|
<ul class="protrude__item__list">
|
||||||
|
<li>Battery pack thermal management</li>
|
||||||
|
<li>PCS intelligent bidirectional inverter</li>
|
||||||
|
<li>Hybrid integrated control</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="protrude__item">
|
||||||
|
<h2 class="protrude__item__title">Automated factory</h2>
|
||||||
|
<ul class="protrude__item__list">
|
||||||
|
<li>Total area 12000 square meters</li>
|
||||||
|
<li>Select the chip from world's top ten semiconductors supplier</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="protrude__item">
|
||||||
|
<h2 class="protrude__item__title">Global energy storage pioneer</h2>
|
||||||
|
<ul class="protrude__item__list">
|
||||||
|
<li>Over two million machines sold to more than 100 countries and regions</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="protrude__item">
|
||||||
|
<h2 class="protrude__item__title">Cutting-edge product design</h2>
|
||||||
|
<ul class="protrude__item__list">
|
||||||
|
<li>National patent</li>
|
||||||
|
<li>Intellectual property</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@mixin smallStyle {
|
||||||
|
font-size: 0.18rem;
|
||||||
|
|
||||||
|
@media (min-width:1920px) {
|
||||||
|
font-size: 0.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:750px) {
|
||||||
|
font-size: 0.52rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.page{
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 英文优势
|
||||||
|
.protrude {
|
||||||
|
width: 18rem;
|
||||||
|
margin: 0.9rem auto 0.45rem;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
padding: 0.1rem 0 0 0.1rem;
|
||||||
|
width: 4.2rem;
|
||||||
|
height: 1.8rem;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 0.28rem;
|
||||||
|
color: #333333;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__list {
|
||||||
|
list-style-type: disc;
|
||||||
|
padding-left: 0.2rem;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
list-style-type: disc;
|
||||||
|
@include smallStyle;
|
||||||
|
letter-spacing: 0.01rem;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
li::marker {
|
||||||
|
color: #0072FF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
border-left: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1450px) {
|
||||||
|
width: 16rem;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 7.8rem;
|
||||||
|
height: 2.4rem;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 0.2rem 0.3rem 0 0.3rem;
|
||||||
|
box-shadow: 0 0.02rem 0.04rem rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 0.08rem;
|
||||||
|
|
||||||
|
&:nth-child(n+3) {
|
||||||
|
margin-top: 3%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 0.33rem;
|
||||||
|
color: #333333;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__list {
|
||||||
|
padding-left: 0.3rem;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
@include smallStyle;
|
||||||
|
letter-spacing: 0.01rem;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
li::marker {
|
||||||
|
color: #0072FF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:750px) {
|
||||||
|
width: 18.3rem;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 9rem;
|
||||||
|
height: 4rem;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 0.2rem 0rem 0 0.3rem;
|
||||||
|
box-shadow: 0 0.02rem 0.04rem rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 0.08rem;
|
||||||
|
|
||||||
|
&:nth-child(n+3) {
|
||||||
|
margin-top: 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 0.5rem;
|
||||||
|
color: #333333;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__list {
|
||||||
|
padding-left: 0.6rem;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
font-size: 0.44rem;
|
||||||
|
letter-spacing: 0.01rem;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
li::marker {
|
||||||
|
color: #0072FF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 中文优势
|
||||||
|
.features {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-items: center;
|
||||||
|
width: 16rem;
|
||||||
|
margin: 0.7rem auto;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 3.74rem;
|
||||||
|
height: 1.8rem;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 0.2rem 0.1rem;
|
||||||
|
box-shadow: 0 0.02rem 0.04rem rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 0.08rem;
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
width: 0.9rem;
|
||||||
|
height: 0.9rem;
|
||||||
|
margin-right: 0.35rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
&__title {
|
||||||
|
font-size: 0.3rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
margin-bottom: 0.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__description {
|
||||||
|
font-size: 0.2rem;
|
||||||
|
color: #333;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:1450px) {
|
||||||
|
width: 15rem;
|
||||||
|
&__item {
|
||||||
|
width: 7.3rem;
|
||||||
|
height: 2.4rem;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 0.2rem 0.1rem;
|
||||||
|
box-shadow: 0 0.02rem 0.04rem rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 0.08rem;
|
||||||
|
&:nth-child(n+3){
|
||||||
|
margin-top: 3%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
width: 1.2rem;
|
||||||
|
height: 1.2rem;
|
||||||
|
margin-right: 0.35rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
&__title {
|
||||||
|
font-size: 0.32rem;
|
||||||
|
margin-bottom: 0.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__description {
|
||||||
|
font-size: 0.26rem;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:750px) {
|
||||||
|
width: 17rem;
|
||||||
|
&__item {
|
||||||
|
width: 8rem;
|
||||||
|
height: 4rem;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 0.2rem 0.1rem;
|
||||||
|
box-shadow: 0 0.02rem 0.04rem rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 0.08rem;
|
||||||
|
&:nth-child(n+3){
|
||||||
|
margin-top: 3%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__icon {
|
||||||
|
width: 1.5rem;
|
||||||
|
height: 1.5rem;
|
||||||
|
margin-right: 0.35rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
&__title {
|
||||||
|
font-size: 0.62rem;
|
||||||
|
margin-bottom: 0.1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__description {
|
||||||
|
@include smallStyle;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,313 @@
|
||||||
|
// PC端的宽度
|
||||||
|
@mixin pc-statusWidth {
|
||||||
|
width: 15rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin statusHeight {
|
||||||
|
height: $nav-height;
|
||||||
|
line-height: $nav-height;
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
height: $nav-1600-height;
|
||||||
|
line-height: $nav-1600-height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 导航栏中间字体大小控制
|
||||||
|
@mixin navContentSize {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 0.17rem;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
margin-top: 0.07rem;
|
||||||
|
height: 0.4rem;
|
||||||
|
line-height: 0.4rem;
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
margin-top: 0.1rem;
|
||||||
|
font-size: 0.23rem;
|
||||||
|
height: 0.5rem;
|
||||||
|
line-height: 0.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//下拉弹框
|
||||||
|
@mixin popupOfficeStyle {
|
||||||
|
top: 0;
|
||||||
|
height: 0;
|
||||||
|
border-radius: 0.03rem;
|
||||||
|
background: $nav-menu;
|
||||||
|
margin: $nav-height 0 0 0.03rem;
|
||||||
|
box-shadow: 0 0.05rem 0.13rem #00000026;
|
||||||
|
position: absolute;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
min-width: 2.1rem;
|
||||||
|
z-index: 10000;
|
||||||
|
font-family: MiSans-Light;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
padding: 0.15rem 0.1rem;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
height: 0.45rem;
|
||||||
|
line-height: 0.45rem;
|
||||||
|
text-align: center;
|
||||||
|
padding: 0 0.1rem;
|
||||||
|
color: $nav-color;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: #4283fb;
|
||||||
|
border-radius: 0.02rem;
|
||||||
|
color: $nav-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
min-width: 3rem;
|
||||||
|
top: 0.1rem;
|
||||||
|
&__box{
|
||||||
|
padding: 0.2rem 0.15rem;
|
||||||
|
&__item {
|
||||||
|
height: 0.6rem;
|
||||||
|
line-height: 0.6rem;
|
||||||
|
font-size: 0.23rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.Nav {
|
||||||
|
width: 100%;
|
||||||
|
@include statusHeight;
|
||||||
|
z-index: 10000;
|
||||||
|
background: #ffffff;
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
background: #ffffff;
|
||||||
|
transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导航栏
|
||||||
|
&-div {
|
||||||
|
box-sizing: content-box;
|
||||||
|
@include pc-statusWidth;
|
||||||
|
@include statusHeight;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
background-color: transparent;
|
||||||
|
margin: 0 auto;
|
||||||
|
position: relative;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__logo {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 1.23rem;
|
||||||
|
@include statusHeight;
|
||||||
|
color: #000000;
|
||||||
|
font-size: 0.6rem;
|
||||||
|
line-height: 0.6rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
&__avater{
|
||||||
|
width: 1.06rem;
|
||||||
|
height: 0.6rem;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.Nav-flex {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//中间导航栏
|
||||||
|
.Nav-div__menu {
|
||||||
|
width: fit-content;
|
||||||
|
@include statusHeight;
|
||||||
|
display: flex;
|
||||||
|
padding-right: 0.08rem;
|
||||||
|
align-items: center;
|
||||||
|
text-align: center;
|
||||||
|
color: $nav-color;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
@include statusHeight;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 0 0.18rem;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
p {
|
||||||
|
@include navContentSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__border {
|
||||||
|
width: 0;
|
||||||
|
height: 0.028rem;
|
||||||
|
margin-top: 0;
|
||||||
|
background-color: $nav-color;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__borderActive {
|
||||||
|
width: 0.32rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--itemActive {
|
||||||
|
p {
|
||||||
|
color: $nav-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 解决鼠标移除和点击事件冲突
|
||||||
|
&--itemActive2 {
|
||||||
|
p {
|
||||||
|
color: $nav-color;
|
||||||
|
// font-weight: 500
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__popup-office {
|
||||||
|
// 下拉弹框
|
||||||
|
@include popupOfficeStyle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//解决两个子项长度
|
||||||
|
&--active2 {
|
||||||
|
height: fit-content;
|
||||||
|
}
|
||||||
|
&--zh-lang{
|
||||||
|
min-width: 1.9rem;
|
||||||
|
letter-spacing: 0.01rem;
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
min-width: 2.4rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__shop {
|
||||||
|
@include statusHeight;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
position: relative;
|
||||||
|
&__search {
|
||||||
|
width: 0.2rem;
|
||||||
|
@include statusHeight;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
color: $popup-sty-color;
|
||||||
|
font-size: 0.22rem;
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
width: 0.3rem;
|
||||||
|
font-size: 0.32rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__earth {
|
||||||
|
width: fit-content;
|
||||||
|
@include statusHeight;
|
||||||
|
font-family: MiSans-Light;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
color: $nav-color;
|
||||||
|
font-size: 0.17rem;
|
||||||
|
padding-left: 0.2rem;
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
padding-left: 0.3rem;
|
||||||
|
font-size: 0.22rem;
|
||||||
|
}
|
||||||
|
&__avater{
|
||||||
|
width: 0.2rem;
|
||||||
|
height: 0.2rem;
|
||||||
|
}
|
||||||
|
&__text {
|
||||||
|
// 标记位置
|
||||||
|
@include statusHeight;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
padding-left: 0.1rem;
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
padding-left: 0.2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__popup-office {
|
||||||
|
// 下拉弹框
|
||||||
|
@include popupOfficeStyle;
|
||||||
|
&:last-child{
|
||||||
|
min-width: 1.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
height: fit-content;
|
||||||
|
color: $nav-color;
|
||||||
|
}
|
||||||
|
&--zh-lang{
|
||||||
|
min-width: 1.9rem;
|
||||||
|
letter-spacing: 0.01rem;
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
min-width: 2.4rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes fadeIn {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
/*初始状态 透明度为0*/
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
opacity: 0;
|
||||||
|
/*中间状态 透明度为0*/
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
/*结尾状态 透明度为1*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes fadeOut {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
/*初始状态 透明度为0*/
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
opacity: 0;
|
||||||
|
/*中间状态 透明度为0*/
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
/*结尾状态 透明度为1*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//动画
|
||||||
|
.fade-enter-from,
|
||||||
|
.fade-leave-to {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fade-enter-to,
|
||||||
|
.fade-leave-from {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fade-enter-active,
|
||||||
|
.fade-leave-active {
|
||||||
|
transition: opacity 1s ease;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,155 @@
|
||||||
|
|
||||||
|
$nav-bg:rgba(3,6,11,0.4);
|
||||||
|
$maincolor-active:#2164ff;
|
||||||
|
.mobile {
|
||||||
|
z-index: 10000;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&-nav {
|
||||||
|
height: 51px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
color: #000000;
|
||||||
|
background-color: #ffffff;
|
||||||
|
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
font-size: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__logo {
|
||||||
|
height: 51px;
|
||||||
|
&__avater{
|
||||||
|
height: 51px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.icon-syd-logo{
|
||||||
|
font-size: 55px;
|
||||||
|
line-height: 51px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
cursor: pointer;
|
||||||
|
margin-right: 20px;
|
||||||
|
&__avater{
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
&__content{
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
&__content-2{
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移动端下拉弹框
|
||||||
|
&-popup {
|
||||||
|
width: 100%;
|
||||||
|
background-color: #ffffff;
|
||||||
|
position: fixed;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
height: calc(100% - 50px);
|
||||||
|
z-index: 10000;
|
||||||
|
|
||||||
|
&__col {
|
||||||
|
width: 100%;
|
||||||
|
padding: 20px 0 0;
|
||||||
|
cursor: pointer;
|
||||||
|
color: #000000;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
&__title {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
border-bottom: 1px solid #4d4d4d;
|
||||||
|
|
||||||
|
line-height: 3.5;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
font-size: 12.5px;
|
||||||
|
margin-left: 21px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-arrow {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
font-size: 12.5px;
|
||||||
|
line-height: 3.5;
|
||||||
|
transition-property: transform;
|
||||||
|
transition-duration: 0.3s;
|
||||||
|
transition-timing-function: ease;
|
||||||
|
transform-origin: 50% 50%;
|
||||||
|
margin-right: 21px;
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 主体
|
||||||
|
&__content {
|
||||||
|
font-size: 12px;
|
||||||
|
color: #999999;
|
||||||
|
height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
transition: height .5s ease-in-out;
|
||||||
|
|
||||||
|
&__list {
|
||||||
|
padding: 15px 0px 10px 40px;
|
||||||
|
|
||||||
|
&__element {
|
||||||
|
height: 26px;
|
||||||
|
line-height: 26px;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
@media (min-width:1025px) {
|
||||||
|
&:hover {
|
||||||
|
color: $maincolor-active;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,636 @@
|
||||||
|
<script setup>
|
||||||
|
import { ref, reactive, onMounted, computed, nextTick, watch } from "vue";
|
||||||
|
import { useI18n } from "#imports";
|
||||||
|
import { useRouter, useRoute } from "#imports";
|
||||||
|
import { useLocalePath, useSwitchLocalePath } from "#i18n";
|
||||||
|
|
||||||
|
const { locale, t } = useI18n();
|
||||||
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
|
const localePath = useLocalePath();
|
||||||
|
const switchLocalePath = useSwitchLocalePath();
|
||||||
|
|
||||||
|
// 语言显示
|
||||||
|
const langToShow = computed(() => {
|
||||||
|
switch (locale.value) {
|
||||||
|
case "en":
|
||||||
|
return "English";
|
||||||
|
case "cn":
|
||||||
|
return "中文";
|
||||||
|
default:
|
||||||
|
return "English";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 语言列表
|
||||||
|
const langList = ref([
|
||||||
|
{ name: "简体中文", code: "cn", checked: false },
|
||||||
|
{ name: "English", code: "en", checked: true },
|
||||||
|
]);
|
||||||
|
|
||||||
|
// 菜单数据
|
||||||
|
const menuItems = ref([
|
||||||
|
{
|
||||||
|
name: t("nav.home"),
|
||||||
|
enName: "home",
|
||||||
|
path: "/",
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: t("nav.about"),
|
||||||
|
enName: "about",
|
||||||
|
path: "/about-us",
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: t("nav.products"),
|
||||||
|
enName: "products",
|
||||||
|
path: "/product",
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: t("nav.contact"),
|
||||||
|
enName: "contact",
|
||||||
|
path: "/contact-us",
|
||||||
|
active: false,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
// 监听语言变化,更新菜单名称
|
||||||
|
watch(() => locale.value, () => {
|
||||||
|
menuItems.value.forEach(item => {
|
||||||
|
switch (item.enName) {
|
||||||
|
case "home":
|
||||||
|
item.name = t("nav.home");
|
||||||
|
break;
|
||||||
|
case "about":
|
||||||
|
item.name = t("nav.about");
|
||||||
|
break;
|
||||||
|
case "products":
|
||||||
|
item.name = t("nav.products");
|
||||||
|
break;
|
||||||
|
case "contact":
|
||||||
|
item.name = t("nav.contact");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, { immediate: true });
|
||||||
|
|
||||||
|
// 移动端菜单控制
|
||||||
|
const isMobileMenuOpen = ref(false);
|
||||||
|
const langPopup = ref(false);
|
||||||
|
|
||||||
|
// 语言切换
|
||||||
|
const chooseLanguage = (lang) => {
|
||||||
|
if (lang.code === locale.value) {
|
||||||
|
langPopup.value = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取目标路径并跳转
|
||||||
|
const targetPath = switchLocalePath(lang.code);
|
||||||
|
router.replace(targetPath);
|
||||||
|
|
||||||
|
langPopup.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 菜单点击
|
||||||
|
const handleMenuClick = (item) => {
|
||||||
|
// 使用 localePath 获取当前语言环境下的正确路径
|
||||||
|
const targetPath = localePath(item.path);
|
||||||
|
|
||||||
|
// 跳转到正确的路径
|
||||||
|
router.push(targetPath);
|
||||||
|
isMobileMenuOpen.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 设置当前活跃菜单
|
||||||
|
const setActiveMenu = () => {
|
||||||
|
const currentPath = route.path;
|
||||||
|
// 重置所有状态
|
||||||
|
menuItems.value.forEach((item) => {
|
||||||
|
item.active = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 根据路径设置激活状态
|
||||||
|
if (currentPath === "/" || currentPath === "/cn") {
|
||||||
|
const homeItem = menuItems.value.find((item) => item.enName === "home");
|
||||||
|
if (homeItem) {
|
||||||
|
homeItem.active = true;
|
||||||
|
}
|
||||||
|
} else if (currentPath.includes("/about-us")) {
|
||||||
|
const aboutItem = menuItems.value.find((item) => item.enName === "about");
|
||||||
|
if (aboutItem) {
|
||||||
|
aboutItem.active = true;
|
||||||
|
}
|
||||||
|
} else if (currentPath.includes("/product")) {
|
||||||
|
const productItem = menuItems.value.find((item) => item.enName === "products");
|
||||||
|
if (productItem) {
|
||||||
|
productItem.active = true;
|
||||||
|
}
|
||||||
|
} else if (currentPath.includes("/contact-us")) {
|
||||||
|
const contactItem = menuItems.value.find((item) => item.enName === "contact");
|
||||||
|
if (contactItem) {
|
||||||
|
contactItem.active = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 切换移动端菜单
|
||||||
|
const toggleMobileMenu = () => {
|
||||||
|
isMobileMenuOpen.value = !isMobileMenuOpen.value;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 处理logo点击
|
||||||
|
const handleLogoClick = () => {
|
||||||
|
// 使用 localePath 获取当前语言环境下的首页路径
|
||||||
|
const homePath = localePath("/");
|
||||||
|
router.push(homePath);
|
||||||
|
menuItems.value.forEach((menu) => {
|
||||||
|
menu.active = menu.enName === "home";
|
||||||
|
});
|
||||||
|
isMobileMenuOpen.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
// 更新语言列表选中状态
|
||||||
|
langList.value.forEach((item) => {
|
||||||
|
item.checked = item.code === locale.value;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 确保在下一个 tick 中设置激活菜单
|
||||||
|
nextTick(() => {
|
||||||
|
setActiveMenu();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听路由变化,更新激活状态
|
||||||
|
watch(
|
||||||
|
() => route.path,
|
||||||
|
(newPath) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
setActiveMenu();
|
||||||
|
}, 50);
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<ClientOnly>
|
||||||
|
<header class="navbar">
|
||||||
|
<div class="navbar-container">
|
||||||
|
<!-- Logo -->
|
||||||
|
<div class="navbar-logo" @click="handleLogoClick">
|
||||||
|
<img src="/logo.png" alt="明阳良光" class="logo-image" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 右侧区域:菜单+语言切换 -->
|
||||||
|
<div class="navbar-right">
|
||||||
|
<!-- 桌面端菜单 -->
|
||||||
|
<nav class="navbar-menu desktop-menu">
|
||||||
|
<ul class="menu-list">
|
||||||
|
<li
|
||||||
|
v-for="item in menuItems"
|
||||||
|
:key="item.enName"
|
||||||
|
class="menu-item"
|
||||||
|
:class="{ active: item.active }"
|
||||||
|
@click="handleMenuClick(item)"
|
||||||
|
>
|
||||||
|
{{ item.name }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<!-- 语言切换和移动端按钮 -->
|
||||||
|
<div class="navbar-actions">
|
||||||
|
<!-- 语言切换 -->
|
||||||
|
<div class="language-selector" @click="langPopup = !langPopup">
|
||||||
|
<img
|
||||||
|
class="lang-earth-icon"
|
||||||
|
src="/static/home/earch.png"
|
||||||
|
:alt="langToShow"
|
||||||
|
:title="langToShow"
|
||||||
|
/>
|
||||||
|
<span class="lang-text">{{ langToShow }}</span>
|
||||||
|
<svg
|
||||||
|
class="lang-icon"
|
||||||
|
:class="{ rotate: langPopup }"
|
||||||
|
width="12"
|
||||||
|
height="12"
|
||||||
|
viewBox="0 0 12 12"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
d="M2 4l4 4 4-4"
|
||||||
|
stroke="currentColor"
|
||||||
|
stroke-width="2"
|
||||||
|
fill="none"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<!-- 语言下拉菜单 -->
|
||||||
|
<div class="lang-dropdown" v-show="langPopup">
|
||||||
|
<div
|
||||||
|
v-for="lang in langList"
|
||||||
|
:key="lang.code"
|
||||||
|
class="lang-option"
|
||||||
|
:class="{ active: lang.checked }"
|
||||||
|
@click.stop="chooseLanguage(lang)"
|
||||||
|
>
|
||||||
|
{{ lang.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 移动端菜单按钮 -->
|
||||||
|
<button class="mobile-menu-btn" @click="toggleMobileMenu">
|
||||||
|
<span
|
||||||
|
class="hamburger-line"
|
||||||
|
:class="{ active: isMobileMenuOpen }"
|
||||||
|
></span>
|
||||||
|
<span
|
||||||
|
class="hamburger-line"
|
||||||
|
:class="{ active: isMobileMenuOpen }"
|
||||||
|
></span>
|
||||||
|
<span
|
||||||
|
class="hamburger-line"
|
||||||
|
:class="{ active: isMobileMenuOpen }"
|
||||||
|
></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 移动端菜单 -->
|
||||||
|
<div class="mobile-menu" :class="{ open: isMobileMenuOpen }">
|
||||||
|
<ul class="mobile-menu-list">
|
||||||
|
<li
|
||||||
|
v-for="item in menuItems"
|
||||||
|
:key="item.enName"
|
||||||
|
class="mobile-menu-item"
|
||||||
|
:class="{ active: item.active }"
|
||||||
|
@click="handleMenuClick(item)"
|
||||||
|
>
|
||||||
|
{{ item.name }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 移动端背景遮罩 -->
|
||||||
|
<div
|
||||||
|
class="mobile-overlay"
|
||||||
|
:class="{ show: isMobileMenuOpen }"
|
||||||
|
@click="isMobileMenuOpen = false"
|
||||||
|
></div>
|
||||||
|
</header>
|
||||||
|
</ClientOnly>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.navbar {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
background: #ffffff;
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
border-bottom: 1px solid #e0e0e0;
|
||||||
|
z-index: 1000;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
|
||||||
|
|
||||||
|
&-container {
|
||||||
|
max-width: 1400px;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 0 40px;
|
||||||
|
height: 50px;
|
||||||
|
gap: 60px;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 0 20px;
|
||||||
|
height: 50px;
|
||||||
|
gap: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-logo {
|
||||||
|
cursor: pointer;
|
||||||
|
transition: transform 0.2s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-image {
|
||||||
|
height: 36px;
|
||||||
|
width: auto;
|
||||||
|
object-fit: contain;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-right {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-menu {
|
||||||
|
&.desktop-menu {
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-actions {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 20px;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
gap: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 菜单样式
|
||||||
|
.menu-list {
|
||||||
|
display: flex;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
gap: 0;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-item {
|
||||||
|
position: relative;
|
||||||
|
padding: 16px 20px;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #333333;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
white-space: nowrap;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
// 下划线样式
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
bottom: 14px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 0;
|
||||||
|
height: 2px;
|
||||||
|
background-color: #000000;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: #000000;
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: #000000;
|
||||||
|
font-weight: 600;
|
||||||
|
|
||||||
|
// 激活时显示下划线
|
||||||
|
&::after {
|
||||||
|
width: 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 14px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 12px 14px;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 语言选择器
|
||||||
|
.language-selector {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 12px 16px;
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
z-index: 1001;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(0, 0, 0, 0.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-earth-icon {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
object-fit: contain;
|
||||||
|
filter: brightness(0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-text {
|
||||||
|
font-size: 15px;
|
||||||
|
color: #333333;
|
||||||
|
font-weight: 500;
|
||||||
|
white-space: nowrap;
|
||||||
|
pointer-events: none;
|
||||||
|
transition: opacity 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-icon {
|
||||||
|
color: #666666;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
pointer-events: none;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
|
||||||
|
&.rotate {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 8px 12px;
|
||||||
|
gap: 6px;
|
||||||
|
|
||||||
|
.lang-earth-icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-text {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-dropdown {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
right: 0;
|
||||||
|
margin-top: 8px;
|
||||||
|
background: white;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
|
||||||
|
overflow: hidden;
|
||||||
|
min-width: 140px;
|
||||||
|
z-index: 1002;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lang-option {
|
||||||
|
padding: 10px 14px;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #000000;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(0, 0, 0, 0.04);
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background: rgba(0, 0, 0, 0.08);
|
||||||
|
color: #000000;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移动端菜单按钮
|
||||||
|
.mobile-menu-btn {
|
||||||
|
display: none;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hamburger-line {
|
||||||
|
width: 20px;
|
||||||
|
height: 2px;
|
||||||
|
background: #000000;
|
||||||
|
border-radius: 1px;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
margin: 2px 0;
|
||||||
|
|
||||||
|
&:nth-child(1).active {
|
||||||
|
transform: rotate(45deg) translate(5px, 5px);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2).active {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(3).active {
|
||||||
|
transform: rotate(-45deg) translate(7px, -6px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移动端菜单
|
||||||
|
.mobile-menu {
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
background: white;
|
||||||
|
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
|
transform: translateY(-100%);
|
||||||
|
opacity: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
|
||||||
|
&.open {
|
||||||
|
transform: translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-list {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-item {
|
||||||
|
padding: 16px 20px;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000000;
|
||||||
|
cursor: pointer;
|
||||||
|
border-bottom: 1px solid #f0f0f0;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(0, 0, 0, 0.04);
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
color: #000000;
|
||||||
|
background: rgba(0, 0, 0, 0.06);
|
||||||
|
}
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移动端背景遮罩
|
||||||
|
.mobile-overlay {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: rgba(0, 0, 0, 0.3);
|
||||||
|
opacity: 0;
|
||||||
|
visibility: hidden;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
z-index: -1;
|
||||||
|
|
||||||
|
&.show {
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 响应式调整
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.navbar {
|
||||||
|
&-container {
|
||||||
|
.logo-image {
|
||||||
|
height: 34px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
import { computed } from 'vue';
|
||||||
|
import { getCdnImageUrl, getCdnStaticUrl, appConfig } from '@/config';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片路径管理的composable函数
|
||||||
|
* 提供便捷的图片路径处理方法
|
||||||
|
*/
|
||||||
|
export function useImagePath() {
|
||||||
|
/**
|
||||||
|
* 处理图片路径,自动添加CDN前缀
|
||||||
|
* @param {string} path - 图片相对路径
|
||||||
|
* @returns {string} 完整的图片URL
|
||||||
|
*/
|
||||||
|
const cdnImageUrl = (path) => {
|
||||||
|
if (!path) return '';
|
||||||
|
return getCdnImageUrl(path);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理静态资源路径,自动添加CDN前缀
|
||||||
|
* @param {string} path - 静态资源相对路径
|
||||||
|
* @returns {string} 完整的静态资源URL
|
||||||
|
*/
|
||||||
|
const cdnStaticUrl = (path) => {
|
||||||
|
if (!path) return '';
|
||||||
|
return getCdnStaticUrl(path);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量处理图片路径数组
|
||||||
|
* @param {string[]} paths - 图片路径数组
|
||||||
|
* @returns {string[]} 处理后的图片URL数组
|
||||||
|
*/
|
||||||
|
const cdnImageUrls = (paths) => {
|
||||||
|
if (!Array.isArray(paths)) return [];
|
||||||
|
return paths.map(path => cdnImageUrl(path));
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建响应式的图片路径
|
||||||
|
* @param {string} path - 图片相对路径
|
||||||
|
* @returns {ComputedRef<string>} 响应式的图片URL
|
||||||
|
*/
|
||||||
|
const reactiveCdnImageUrl = (path) => {
|
||||||
|
return computed(() => cdnImageUrl(path));
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前环境信息
|
||||||
|
*/
|
||||||
|
const env = {
|
||||||
|
isDev: appConfig.isDev(),
|
||||||
|
isProd: appConfig.isProd(),
|
||||||
|
isStaging: appConfig.isStaging(),
|
||||||
|
current: appConfig.getEnv()
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前配置信息
|
||||||
|
*/
|
||||||
|
const config = appConfig.getConfig();
|
||||||
|
|
||||||
|
return {
|
||||||
|
cdnImageUrl,
|
||||||
|
cdnStaticUrl,
|
||||||
|
cdnImageUrls,
|
||||||
|
reactiveCdnImageUrl,
|
||||||
|
env,
|
||||||
|
config
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,78 @@
|
||||||
|
// 统一的语言检测逻辑,确保服务器端和客户端一致
|
||||||
|
export const useLanguageDetection = () => {
|
||||||
|
// 检测初始语言的统一逻辑
|
||||||
|
const detectInitialLanguage = () => {
|
||||||
|
// 服务端环境
|
||||||
|
if (typeof window === 'undefined') {
|
||||||
|
return 'en'; // 服务端默认英文,实际语言由中间件设置
|
||||||
|
}
|
||||||
|
|
||||||
|
// 客户端环境
|
||||||
|
try {
|
||||||
|
// 1. 优先使用cookie(与服务器中间件保持一致)
|
||||||
|
const cookies = document.cookie.split(';');
|
||||||
|
const localeCookie = cookies.find(cookie =>
|
||||||
|
cookie.trim().startsWith('i18n_redirected=')
|
||||||
|
);
|
||||||
|
if (localeCookie) {
|
||||||
|
const langValue = localeCookie.split('=')[1];
|
||||||
|
if (['cn', 'en'].includes(langValue)) {
|
||||||
|
return langValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 检查内联脚本设置的语言
|
||||||
|
const scriptLang = window.__INITIAL_LANG__ ||
|
||||||
|
document.documentElement.getAttribute('data-initial-lang');
|
||||||
|
if (scriptLang && ['cn', 'en'].includes(scriptLang)) {
|
||||||
|
return scriptLang;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 检查localStorage
|
||||||
|
const storedLang = localStorage.getItem('locale_lang');
|
||||||
|
if (storedLang && ['cn', 'en'].includes(storedLang)) {
|
||||||
|
return storedLang;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 检查浏览器语言(与服务器中间件保持一致)
|
||||||
|
if (navigator.language.startsWith("en")) {
|
||||||
|
return "en";
|
||||||
|
} else if (navigator.language.includes("zh")) {
|
||||||
|
return "cn";
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('Language detection failed:', e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'en'; // 默认英文
|
||||||
|
};
|
||||||
|
|
||||||
|
// 保存语言设置
|
||||||
|
const saveLanguage = (lang) => {
|
||||||
|
if (typeof window === 'undefined') return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 保存到Cookie(使用Nuxt i18n的标准键名)
|
||||||
|
document.cookie = 'i18n_redirected=' + lang + '; path=/; max-age=31536000';
|
||||||
|
|
||||||
|
// 保存到localStorage
|
||||||
|
localStorage.setItem('locale_lang', lang);
|
||||||
|
|
||||||
|
// 更新全局变量
|
||||||
|
window.__INITIAL_LANG__ = lang;
|
||||||
|
window.__I18N_INITIAL_LOCALE__ = lang;
|
||||||
|
|
||||||
|
// 更新文档属性
|
||||||
|
document.documentElement.setAttribute('data-initial-lang', lang);
|
||||||
|
document.documentElement.setAttribute('data-locale', lang);
|
||||||
|
document.documentElement.setAttribute('lang', lang === 'cn' ? 'zh-CN' : 'en');
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('Language save failed:', error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
detectInitialLanguage,
|
||||||
|
saveLanguage
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
import { watch } from 'vue';
|
||||||
|
import { useI18n } from '#imports';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用于设置页面标题的可组合函数
|
||||||
|
* @param {string} pageTitleKey - 页面标题的国际化key
|
||||||
|
*/
|
||||||
|
export function usePageTitle(pageTitleKey) {
|
||||||
|
const { t, locale } = useI18n();
|
||||||
|
|
||||||
|
// 设置页面标题
|
||||||
|
const setPageTitle = () => {
|
||||||
|
if (typeof document === 'undefined') return; // SSR检查
|
||||||
|
|
||||||
|
const baseTitle = t("page.company-abbreviation");
|
||||||
|
const pageTitle = t(pageTitleKey);
|
||||||
|
document.title = `${pageTitle} - ${baseTitle}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 监听语言变化,更新标题
|
||||||
|
watch(() => locale.value, setPageTitle, { immediate: true });
|
||||||
|
|
||||||
|
return {
|
||||||
|
setPageTitle
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
import { ref, computed } from 'vue'
|
||||||
|
import { useI18n } from '#imports'
|
||||||
|
|
||||||
|
// 静态数据缓存
|
||||||
|
let staticDataCache = null
|
||||||
|
|
||||||
|
// 获取静态数据
|
||||||
|
const getStaticData = () => {
|
||||||
|
if (staticDataCache) {
|
||||||
|
return staticDataCache
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 在客户端环境下,从window对象获取预渲染的数据
|
||||||
|
if (typeof window !== 'undefined' && window.__NUXT_STATIC_DATA__) {
|
||||||
|
staticDataCache = window.__NUXT_STATIC_DATA__
|
||||||
|
return staticDataCache
|
||||||
|
}
|
||||||
|
|
||||||
|
// 在服务端环境下,尝试读取静态数据文件
|
||||||
|
if (typeof window === 'undefined') {
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const dataPath = path.join(process.cwd(), 'src', 'static-data', 'api-data.json')
|
||||||
|
|
||||||
|
if (fs.existsSync(dataPath)) {
|
||||||
|
const data = JSON.parse(fs.readFileSync(dataPath, 'utf8'))
|
||||||
|
staticDataCache = data
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('获取静态数据失败:', error)
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用静态数据的composable
|
||||||
|
export const useStaticData = () => {
|
||||||
|
const { locale } = useI18n()
|
||||||
|
|
||||||
|
// 获取当前语言的数据
|
||||||
|
const getCurrentLocaleData = computed(() => {
|
||||||
|
const data = getStaticData()
|
||||||
|
return data ? data[locale.value] || data.en : null
|
||||||
|
})
|
||||||
|
|
||||||
|
// 轮播图数据
|
||||||
|
const carouselData = computed(() => {
|
||||||
|
const data = getCurrentLocaleData.value
|
||||||
|
return data?.carousel?.rows || []
|
||||||
|
})
|
||||||
|
|
||||||
|
// 产品分类数据
|
||||||
|
const categoryData = computed(() => {
|
||||||
|
const data = getCurrentLocaleData.value
|
||||||
|
return data?.categories?.rows || []
|
||||||
|
})
|
||||||
|
|
||||||
|
// 产品列表数据
|
||||||
|
const productData = computed(() => {
|
||||||
|
const data = getCurrentLocaleData.value
|
||||||
|
return data?.products?.rows || []
|
||||||
|
})
|
||||||
|
|
||||||
|
// 新闻数据
|
||||||
|
const newsData = computed(() => {
|
||||||
|
const data = getCurrentLocaleData.value
|
||||||
|
return data?.news?.rows || []
|
||||||
|
})
|
||||||
|
|
||||||
|
// 证书数据
|
||||||
|
const certificateData = computed(() => {
|
||||||
|
const data = getCurrentLocaleData.value
|
||||||
|
return data?.certificates?.rows || []
|
||||||
|
})
|
||||||
|
|
||||||
|
// APP下载数据
|
||||||
|
const downloadData = computed(() => {
|
||||||
|
const data = getCurrentLocaleData.value
|
||||||
|
return data?.downloads?.rows || []
|
||||||
|
})
|
||||||
|
|
||||||
|
// 检查是否有静态数据
|
||||||
|
const hasStaticData = computed(() => {
|
||||||
|
return !!getStaticData()
|
||||||
|
})
|
||||||
|
|
||||||
|
return {
|
||||||
|
carouselData,
|
||||||
|
categoryData,
|
||||||
|
productData,
|
||||||
|
newsData,
|
||||||
|
certificateData,
|
||||||
|
downloadData,
|
||||||
|
hasStaticData,
|
||||||
|
getCurrentLocaleData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,104 @@
|
||||||
|
// CDN配置 - 你可以在这里修改CDN路径
|
||||||
|
const CDN_CONFIG = {
|
||||||
|
// 开发环境CDN路径 - 修改这里
|
||||||
|
development: 'http://t19x0c1nb.hn-bkt.clouddn.com',
|
||||||
|
|
||||||
|
// 生产环境CDN路径 - 修改这里
|
||||||
|
production: 'http://t19x0c1nb.hn-bkt.clouddn.com'
|
||||||
|
};
|
||||||
|
|
||||||
|
// 环境配置
|
||||||
|
const config = {
|
||||||
|
// 开发环境配置
|
||||||
|
development: {
|
||||||
|
cdnBaseUrl: CDN_CONFIG.development,
|
||||||
|
apiBaseUrl: 'http://localhost:3000/api',
|
||||||
|
imageBaseUrl: `${CDN_CONFIG.development}/static`
|
||||||
|
},
|
||||||
|
|
||||||
|
// 生产环境配置
|
||||||
|
production: {
|
||||||
|
cdnBaseUrl: CDN_CONFIG.production,
|
||||||
|
apiBaseUrl: 'https://your-api-domain.com/api',
|
||||||
|
imageBaseUrl: `${CDN_CONFIG.production}/static`
|
||||||
|
},
|
||||||
|
|
||||||
|
// 测试环境配置
|
||||||
|
staging: {
|
||||||
|
cdnBaseUrl: CDN_CONFIG.production, // 测试环境使用生产CDN
|
||||||
|
apiBaseUrl: 'https://staging-api.your-domain.com/api',
|
||||||
|
imageBaseUrl: `${CDN_CONFIG.production}/static`
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 获取当前环境
|
||||||
|
const getCurrentEnv = () => {
|
||||||
|
if (typeof process !== 'undefined') {
|
||||||
|
return process.env.NODE_ENV || 'development';
|
||||||
|
}
|
||||||
|
return 'development';
|
||||||
|
};
|
||||||
|
|
||||||
|
// 获取当前环境配置
|
||||||
|
const getCurrentConfig = () => {
|
||||||
|
const env = getCurrentEnv();
|
||||||
|
return config[env] || config.development;
|
||||||
|
};
|
||||||
|
|
||||||
|
// CDN图片路径拼接函数
|
||||||
|
export const getCdnImageUrl = (path) => {
|
||||||
|
const currentConfig = getCurrentConfig();
|
||||||
|
|
||||||
|
// 如果路径已经是完整URL,直接返回
|
||||||
|
if (path.startsWith('http://') || path.startsWith('https://')) {
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果路径以/开头,去掉开头的/
|
||||||
|
const cleanPath = path.startsWith('/') ? path.slice(1) : path;
|
||||||
|
|
||||||
|
// 所有环境都使用CDN路径
|
||||||
|
return `${currentConfig.cdnBaseUrl}/${cleanPath}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
// CDN静态资源路径拼接函数
|
||||||
|
export const getCdnStaticUrl = (path) => {
|
||||||
|
const currentConfig = getCurrentConfig();
|
||||||
|
|
||||||
|
// 如果路径已经是完整URL,直接返回
|
||||||
|
if (path.startsWith('http://') || path.startsWith('https://')) {
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果路径以/开头,去掉开头的/
|
||||||
|
const cleanPath = path.startsWith('/') ? path.slice(1) : path;
|
||||||
|
|
||||||
|
// 所有环境都使用CDN路径
|
||||||
|
return `${currentConfig.cdnBaseUrl}/${cleanPath}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 导出配置
|
||||||
|
export const appConfig = {
|
||||||
|
// 获取当前环境配置
|
||||||
|
getConfig: getCurrentConfig,
|
||||||
|
|
||||||
|
// 获取当前环境
|
||||||
|
getEnv: getCurrentEnv,
|
||||||
|
|
||||||
|
// CDN图片路径处理
|
||||||
|
getCdnImageUrl,
|
||||||
|
|
||||||
|
// CDN静态资源路径处理
|
||||||
|
getCdnStaticUrl,
|
||||||
|
|
||||||
|
// 是否开发环境
|
||||||
|
isDev: () => getCurrentEnv() === 'development',
|
||||||
|
|
||||||
|
// 是否生产环境
|
||||||
|
isProd: () => getCurrentEnv() === 'production',
|
||||||
|
|
||||||
|
// 是否测试环境
|
||||||
|
isStaging: () => getCurrentEnv() === 'staging'
|
||||||
|
};
|
||||||
|
|
||||||
|
export default appConfig;
|
||||||
|
|
@ -0,0 +1,100 @@
|
||||||
|
// export 语言检测 - 改进版,支持SSR,与Nuxt i18n保持一致
|
||||||
|
export default function getLanguage() {
|
||||||
|
// 服务端渲染时的默认语言
|
||||||
|
if (typeof window === 'undefined') {
|
||||||
|
return "en";
|
||||||
|
}
|
||||||
|
|
||||||
|
// 客户端逻辑
|
||||||
|
try {
|
||||||
|
// 1. 优先检查cookie(与Nuxt i18n保持一致)
|
||||||
|
const cookies = document.cookie.split(';');
|
||||||
|
const localeCookie = cookies.find(cookie =>
|
||||||
|
cookie.trim().startsWith('i18n_redirected=')
|
||||||
|
);
|
||||||
|
if (localeCookie) {
|
||||||
|
const langValue = localeCookie.split('=')[1];
|
||||||
|
if (['cn', 'en'].includes(langValue)) {
|
||||||
|
return langValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 检查localStorage(兼容旧版本)
|
||||||
|
const langStorage = localStorage.getItem('locale_lang');
|
||||||
|
if (langStorage && ['cn', 'en'].includes(langStorage)) {
|
||||||
|
return langStorage;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 根据浏览器语言判断
|
||||||
|
if (navigator.language.startsWith("en")) {
|
||||||
|
return "en";
|
||||||
|
} else if (navigator.language.includes("zh")) {
|
||||||
|
return "cn";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "en"; // 默认英文
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('localStorage access failed:', error);
|
||||||
|
return "en"; // 错误时返回默认语言
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增:用于组件中的响应式语言检测
|
||||||
|
export async function useLanguage() {
|
||||||
|
// 检查是否在Nuxt环境中
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
|
// 客户端环境,使用useCookie
|
||||||
|
try {
|
||||||
|
const { useCookie } = await import('#imports');
|
||||||
|
return useCookie('i18n_redirected', {
|
||||||
|
default: () => 'en',
|
||||||
|
secure: false,
|
||||||
|
sameSite: 'lax'
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
// 如果useCookie不可用,回退到普通函数
|
||||||
|
return { value: getLanguage() };
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 服务端环境,回退到普通函数
|
||||||
|
return { value: getLanguage() };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// export 导出防抖函数
|
||||||
|
export const debounce = (func, delay) => {
|
||||||
|
let timerId;
|
||||||
|
return () => {
|
||||||
|
if (timerId) {
|
||||||
|
clearTimeout(timerId);
|
||||||
|
}
|
||||||
|
timerId = setTimeout(() => {
|
||||||
|
func();
|
||||||
|
timerId = null;
|
||||||
|
}, delay);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// 时间戳转换年月日
|
||||||
|
export const formatTimestamp = (timestamp) => {
|
||||||
|
const date = new Date(timestamp);
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = date.getMonth() + 1; // getMonth()返回的是0到11,所以要加1
|
||||||
|
const day = date.getDate();
|
||||||
|
// 将月份和日期补零,确保是两位数
|
||||||
|
const formattedMonth = month < 10 ? "0" + month : month;
|
||||||
|
const formattedDay = day < 10 ? "0" + day : day;
|
||||||
|
return `${year}-${formattedMonth}-${formattedDay}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 时间戳转换年月日
|
||||||
|
export const formatTimestamp2 = (timestamp) => {
|
||||||
|
const date = new Date(timestamp);
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = String(date.getMonth() + 1).padStart(2, "0"); // 使用padStart()方法补零
|
||||||
|
const day = String(date.getDate()).padStart(2, "0");
|
||||||
|
const hours = String(date.getHours()).padStart(2, "0");
|
||||||
|
const minutes = String(date.getMinutes()).padStart(2, "0");
|
||||||
|
|
||||||
|
return `${year}-${month}-${day}-${hours}:${minutes}`;
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
import en from "./locale/en.json";
|
||||||
|
import cn from "./locale/cn.json";
|
||||||
|
|
||||||
|
export default defineI18nConfig(() => ({
|
||||||
|
legacy: false,
|
||||||
|
fallbackLocale: 'en',
|
||||||
|
availableLocales: ['cn', 'en'],
|
||||||
|
messages: {
|
||||||
|
en,
|
||||||
|
cn
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
|
@ -0,0 +1,402 @@
|
||||||
|
{
|
||||||
|
"page.home":"首页",
|
||||||
|
"page.odm-oem":"定制服务",
|
||||||
|
"page.product":"产品列表",
|
||||||
|
"page.about-us":"关于我们",
|
||||||
|
"page.honors":"证书荣誉",
|
||||||
|
"page.news":"新闻资讯",
|
||||||
|
"page.contact-us":"联系我们",
|
||||||
|
"page.app-download":"BrightEMS App下载",
|
||||||
|
"page.news-detail":"新闻详情",
|
||||||
|
"page.core-advantage": "核心优势",
|
||||||
|
"page.detail":"产品详情",
|
||||||
|
"page.company-profile": "公司介绍",
|
||||||
|
"page.support":"支持",
|
||||||
|
"page.company": "中山市明阳良光照明有限公司",
|
||||||
|
"page.back-to-top":"返回顶部",
|
||||||
|
"page.404-content":"抱歉,你访问的页面地址有误,或者不存在",
|
||||||
|
"page.404-button":"返回首页",
|
||||||
|
"page.company-abbreviation":"明阳良光",
|
||||||
|
"page.loading":"数据正在加载中...",
|
||||||
|
|
||||||
|
"navbar.search":"你需要哪些帮助",
|
||||||
|
"navbar.product":"产品",
|
||||||
|
"navbar.app":"APP下载",
|
||||||
|
"navbar.recommend":"搜索建议",
|
||||||
|
"navbar.language":"语言",
|
||||||
|
|
||||||
|
|
||||||
|
"home.sence-main-tile":"户外旅行",
|
||||||
|
"home.sence-main-subTile":"便携式储能电源可以为",
|
||||||
|
"home.sence-main-subTitle-2":"户外活动中的各种设备提供电力",
|
||||||
|
"home.sence-item-1-tile":"停电应急",
|
||||||
|
"home.sence-item-1-subTile":"停电或自然灾害等紧急情况下",
|
||||||
|
"home.sence-item-1-subTitle-2":"储能电源能够提供关键的电力支持",
|
||||||
|
"home.sence-item-2-tile":"工作学习",
|
||||||
|
"home.sence-item-2-subTile":"停电或自然灾害等紧急情况下",
|
||||||
|
"home.sence-item-2-subTitle-2":"办公时不会因为电力不足而受到影响",
|
||||||
|
"home.sence-item-3-tile":"家庭用电",
|
||||||
|
"home.sence-item-3-subTile":"可以作为家庭的备用电源",
|
||||||
|
"home.sence-item-3-subTitle-2":"保持基本通讯和生活功能",
|
||||||
|
"home.certificate-title":"资质认证",
|
||||||
|
"home.certificate-subTitle":"为您的产品保驾护航,以质量赢得信誉,以服务回报客户",
|
||||||
|
|
||||||
|
"home.learn-more": "了解更多",
|
||||||
|
"home.view-more":"查看更多",
|
||||||
|
"home.situation": "明阳良光 企业概况",
|
||||||
|
"home.platform": "台",
|
||||||
|
"home.individual": "个",
|
||||||
|
|
||||||
|
"home.sale": "销售国家",
|
||||||
|
"home.development":"全球业务发展",
|
||||||
|
"home.products": "强大生产能力,销售能力以及售后服务能力,为全球客户提供有力支持,建立长期战略合作关系",
|
||||||
|
"home.Energy": "日产能",
|
||||||
|
"home.service-centers": "海外服务中心",
|
||||||
|
"home.main-products": "主要产品",
|
||||||
|
"home.solar-panel": "太阳能板",
|
||||||
|
"home.power-station": "储能电源",
|
||||||
|
"home.accessory": "配件",
|
||||||
|
"home.temporary-video": "临时视频",
|
||||||
|
"home.image-":"背景图",
|
||||||
|
|
||||||
|
"home.about-syd": "关于明阳良光",
|
||||||
|
"home.professional":"专业的智能系统制造商",
|
||||||
|
"home.year": "年",
|
||||||
|
"home.establish": "公司成立",
|
||||||
|
"home.employees": "公司员工",
|
||||||
|
"home.proportion": "研发占比",
|
||||||
|
"home.factoryarea": "厂房面积",
|
||||||
|
"home.recording":"记录明阳良光改变世界的时刻",
|
||||||
|
|
||||||
|
"foot.service-terms": "服务协议",
|
||||||
|
"foot.privacy-policy": "隐私声明",
|
||||||
|
"foot.valid-email": "请输入有效的电子邮件地址",
|
||||||
|
"foot.company":"中山市明阳良光照明有限公司版权所有",
|
||||||
|
"foot.record-number":"备案号:粤ICP备15063791号",
|
||||||
|
|
||||||
|
"contact.contacts-us": "联系我们",
|
||||||
|
"contact.sub-title-1":"公司信息",
|
||||||
|
"contact.sub-title-2":"联系方式",
|
||||||
|
"contact.official-website":"公司官网",
|
||||||
|
"contact.other-contact":"其它联系方式",
|
||||||
|
"contact.sales-consulting":"销售咨询",
|
||||||
|
"contact.operations-specialist":"运营专员",
|
||||||
|
"contact.after-sale-guarantee":"售后无忧",
|
||||||
|
"contact.cooperation-negotiation":"合作洽谈",
|
||||||
|
|
||||||
|
"contact.address":"地址:",
|
||||||
|
"contact.address-details":"中山市火炬开发区明阳路88号明阳良光科技园",
|
||||||
|
"contact.name":"姓名",
|
||||||
|
"contact.tel":"座机:",
|
||||||
|
"contact.email":"邮箱:",
|
||||||
|
"contact.email-2":"邮箱",
|
||||||
|
"contact.mobile":"手机:",
|
||||||
|
"contact.submit":"提交",
|
||||||
|
"contact.verify-name":"请输入有效的名字",
|
||||||
|
"contact.verify-email":"请输入有效的邮箱",
|
||||||
|
"contact.verify-title":"有其它疑问欢迎随时联系我们",
|
||||||
|
"contact.verify-message":"输入产品详细信息和其它特定要求以获得准确的报价",
|
||||||
|
"contact.submitted-successfully":"提交成功",
|
||||||
|
"contact.submitted-failed":"提交失败",
|
||||||
|
"contact.thank-message": "感谢您的询盘!我们会尽快与您联系!",
|
||||||
|
"contact.thank-message2": "我们会尽快与您联系",
|
||||||
|
"contact.back": "返回首页",
|
||||||
|
|
||||||
|
"aboutus.company": "中山市明阳良光照明有限公司",
|
||||||
|
"aboutus.company-1": "中山市明阳良光照明有限公司成立于2015年,位于中山市火炬开发区,厂区面积超过12000平方米。",
|
||||||
|
"aboutus.company-2": "公司日产能超3000台,年产能达8亿。自成立以来,我司以实事求是的工作理念专注于便携式储能及家庭储能产品的研发和制造。",
|
||||||
|
"aboutus.company-3": "目前已组建一支成熟且拥有丰富经验的研发团队,并在技术突破和产品优化道路上勇攀高峰。",
|
||||||
|
"aboutus.company-4": "",
|
||||||
|
"aboutus.year": "年",
|
||||||
|
"aboutus.founded": "2015",
|
||||||
|
"aboutus.establish": "公司成立",
|
||||||
|
"aboutus.factoryarea": "厂房面积",
|
||||||
|
"aboutus.billion": "亿",
|
||||||
|
"aboutus.annualcapacity": "年产能",
|
||||||
|
"aboutus.technical-patents": "技术专利",
|
||||||
|
"aboutus.force": "核心力量",
|
||||||
|
"aboutus.force-subtitle-1": "经验丰富的开发团队",
|
||||||
|
"aboutus.force-subtitle-2": "严格的质检流程",
|
||||||
|
"aboutus.force-subtitle-3": "强大的供应链体系",
|
||||||
|
"aboutus.force-subtitle-4": "源源不断的人才引进",
|
||||||
|
|
||||||
|
"aboutus.history": "明阳良光发展历程",
|
||||||
|
"aboutus.sub-history-1": "公司核心团队拥有电子技术行业10余年工作经验,对电源产品有深刻的理解,在电子元器件供应链管理有着深厚沉淀,",
|
||||||
|
"aboutus.sub-history-2": "并以强大的数据库及供应链系统做支撑,凭借专业的研发知识和实践精神,为全球用户提供优质产品和技术服务。",
|
||||||
|
"aboutus.establishment-title": "公司成立",
|
||||||
|
"aboutus.establishment-content": "公司成立于粤港澳大湾区核心城市-- - 中山 ",
|
||||||
|
"aboutus.transformation": "公司转型",
|
||||||
|
"aboutus.transformation-content": "由电源方案公司转型为便携 式储能制造企业",
|
||||||
|
"aboutus.Innovation": "创新驱动",
|
||||||
|
"aboutus.Innovation-content": "行业内第一批研发出2000W 双向快充产品的企业。并在 2020年初实现量产出货, 至今累计出货超过5w台",
|
||||||
|
"aboutus.financing": "A轮融资",
|
||||||
|
"aboutus.financing-content": "完成A轮融资数千万( 投资方:小熊鸿诺)",
|
||||||
|
"aboutus.mission": "企业使命",
|
||||||
|
|
||||||
|
"aboutus.mission-subtitle": "为客户、股东、员工、社会、国家创造价值",
|
||||||
|
"aboutus.vision": "企业愿景",
|
||||||
|
"aboutus.vision-subtitle": "创造一家全球化卓越能效的储能公司",
|
||||||
|
"aboutus.values": "企业价值观",
|
||||||
|
"aboutus.values-subtitle": "客户第一、勇于创新、拥抱变革、实事求是、团结、自我批评",
|
||||||
|
"aboutus.philosophy": "企业核心理念",
|
||||||
|
"aboutus.philosophy-subtitle": "科学才是企业的灵魂",
|
||||||
|
"aboutus.honors-certificate":"证书",
|
||||||
|
"page.honors-content-1": "公司核心团队拥有电子技术行业10余年工作经验",
|
||||||
|
"page.honors-content-2": "对电源产品有深刻的理解,在电子元器件供应链管理有着深厚沉淀,以强大的数据库及供应链系统支撑",
|
||||||
|
"page.honors-content-3": "凭借专业的研发知识及实践经验,提供优质的产品及技术服务。",
|
||||||
|
"page.honors-content-4": "期间公司研发团队取得数十项技术专利,并于2019年12月认证为国家级高新技术企业。",
|
||||||
|
|
||||||
|
"aboutus.advantage-1": "ID 结构设计",
|
||||||
|
"aboutus.advantage-2": "产品质量",
|
||||||
|
"aboutus.advantage-3": "硬件开发",
|
||||||
|
"aboutus.advantage-factors": "关键成功要素",
|
||||||
|
"aboutus.advantage-4": "软件开发",
|
||||||
|
"aboutus.advantage-5": "生产制造",
|
||||||
|
"aboutus.advantage-6": "人工智能",
|
||||||
|
|
||||||
|
"customized.gallery-title":"源头工厂 品质信赖",
|
||||||
|
"customized.global-business-title":"全球仓库 及时配送",
|
||||||
|
"customized.global-business-subTit-1":"拥有美国、日本、欧洲、英国四个海外维修点,拥有四个海外仓,出口33个国家,",
|
||||||
|
"customized.global-business-subTit-2":"为客户提供ODM/OEM服务",
|
||||||
|
"customized.customized-title":"定制流程",
|
||||||
|
"customized.customized-text-1":"定制流程",
|
||||||
|
"customized.customized-text-2":"研发设计",
|
||||||
|
"customized.customized-text-2-pc":"研发设计",
|
||||||
|
"customized.customized-text-3":"样品测试",
|
||||||
|
"customized.customized-text-4":"客户确认",
|
||||||
|
"customized.customized-text-5":"大货生产",
|
||||||
|
"customized.customized-text-6":"产品签样",
|
||||||
|
"customized.customized-text-7":"调整优化",
|
||||||
|
"customized.customized-text-8":"样品试产",
|
||||||
|
|
||||||
|
"usermanual.years-service-life": "10年+寿命",
|
||||||
|
"download.excellentenergy": "卓越能效储能电源",
|
||||||
|
"download.apk-download": "APK安装下载",
|
||||||
|
"download.app-qr-code": "App二维码",
|
||||||
|
|
||||||
|
"detail.power-99": "适配99%",
|
||||||
|
"detail.appliances": "常用家电",
|
||||||
|
"detail.parameters": "详细参数",
|
||||||
|
"detail.may-also-like": "可能你也会喜欢",
|
||||||
|
"detail.view-more":"查看更多",
|
||||||
|
"detail.summary":"概述",
|
||||||
|
"detail.specs":"规格",
|
||||||
|
"detail.detail":"详情",
|
||||||
|
|
||||||
|
"n051.title": "3600W 便携式储能电源",
|
||||||
|
"n051.years-1": "2年",
|
||||||
|
"n051.capacity": "大容量电池",
|
||||||
|
"n051.guarantee": "质保",
|
||||||
|
"n051.battery": "电池",
|
||||||
|
"n051.battery-life": "使用寿命",
|
||||||
|
"n051.solar": "太阳能板充电",
|
||||||
|
"n051.solarvoltage": "(12-160V)",
|
||||||
|
"n051.ac-charging": "AC 输入",
|
||||||
|
"n051.variable": "可调输入功率",
|
||||||
|
"n051.ac-output": "AC 输出",
|
||||||
|
"n051.powered-off": "断电瞬间,电源即刻供电,保护您的数据无忧",
|
||||||
|
"n051.hours": "小时",
|
||||||
|
"n051.fast-charging": "快速充电",
|
||||||
|
"n051.other-brands": "其他品牌",
|
||||||
|
|
||||||
|
"n051.battery-1": "磷酸铁锂电池",
|
||||||
|
"n051.battery-2": "安全性能高·使用寿命长",
|
||||||
|
"n051.battery-3": "耐高温·容量大·环境友好",
|
||||||
|
"n051.battery2-1": "BMS保护系统",
|
||||||
|
"n051.battery2-2": "高低温保护",
|
||||||
|
"n051.battery2-3": "高低压保护",
|
||||||
|
"n051.battery2-4": "过流过载保护",
|
||||||
|
|
||||||
|
"n051.powered-simultaneously": "最高可同时给15个设备供电!",
|
||||||
|
"n051.ports-animation": "15ports动画",
|
||||||
|
"n051.intelligent": "智能APP·一手掌控",
|
||||||
|
"n051.control-output": "随时随地查看电池状态",
|
||||||
|
"n051.click-open": "一键打开电源,控制输出",
|
||||||
|
"n051.accessories-details": "配件详情",
|
||||||
|
|
||||||
|
"n052.title": "2400W 便携式储能电源",
|
||||||
|
"n052.capacity": "超大容量",
|
||||||
|
"n052.hours": "小时",
|
||||||
|
"n052.charge": "充至100% ",
|
||||||
|
"n052.battery-cycles": "4000次电池循环",
|
||||||
|
"n052.lithium-iron": "内置磷酸铁锂电池",
|
||||||
|
"n052.solar-panel": "太阳能板充电",
|
||||||
|
"n052.switching-time": "切换时间",
|
||||||
|
"n052.compatible": "常用电器兼容",
|
||||||
|
"n052.energy-title": "省电费/节约能源",
|
||||||
|
"n052.energy-content": "白天时用太阳能板给机器充电,晚上用储能电源 给电器充电。实现用电循环,自给自足",
|
||||||
|
"n052.screen-title": "清晰的液晶显示屏",
|
||||||
|
"n052.screen-content": "液晶显示屏显示输出功率、输入功率、电池电量和使用状态, 有助于规划下一步的储能工作。",
|
||||||
|
"n052.powered-off": "断电瞬间,电源即刻供电,保护您的数据无忧",
|
||||||
|
"n052.within":"内",
|
||||||
|
"n052.loop":"超长循环次数",
|
||||||
|
"n052.port":"端口介绍",
|
||||||
|
"n052.output-ports":"13个输出端口",
|
||||||
|
"n052.other-brands":"其他品牌",
|
||||||
|
"n052.protection-1": "BMS保护系统",
|
||||||
|
"n052.protection-2": "高低温保护、高低压保护、过流过载保护",
|
||||||
|
"n052.show-title-1":"顶部存储空间",
|
||||||
|
"n052.show-subtitle-1":"零件轻便储存",
|
||||||
|
"n052.show-title-2":"便携式提手",
|
||||||
|
"n052.show-subtitle-2":"方便携带、移动",
|
||||||
|
"n052.show-title-3":"防尘橡胶赛",
|
||||||
|
"n052.show-subtitle-3":"防止细小的颗粒灰尘进入机器内部",
|
||||||
|
"n052.show-title-4":"防火ABS材料",
|
||||||
|
"n052.show-subtitle-4":"V0防火等级的外壳;带有加强手柄;",
|
||||||
|
|
||||||
|
"home.swiper.led.title": "LED照明",
|
||||||
|
"home.swiper.led.subtitle": "节能LED灯具系列",
|
||||||
|
"home.swiper.led.description": "高效节能,持久耐用,智能控制",
|
||||||
|
"home.swiper.led.button": "了解更多",
|
||||||
|
"home.swiper.monitor.title": "监控设备",
|
||||||
|
"home.swiper.monitor.subtitle": "专业监控解决方案",
|
||||||
|
"home.swiper.monitor.description": "高清画质,智能分析,全方位监控",
|
||||||
|
"home.swiper.monitor.button": "了解更多",
|
||||||
|
"home.swiper.security.title": "智能安防",
|
||||||
|
"home.swiper.security.subtitle": "4K高清监控摄像头",
|
||||||
|
"home.swiper.security.description": "全天候守护,智能识别,超清画质",
|
||||||
|
"home.swiper.security.button": "了解更多",
|
||||||
|
|
||||||
|
"home.products.title": "核心产品",
|
||||||
|
"home.products.subtitle": "专业的监控安防设备与LED照明解决方案",
|
||||||
|
"home.products.view-all": "查看全部产品",
|
||||||
|
|
||||||
|
"product.s01.name": "S01 高清监控摄像头",
|
||||||
|
"product.s01.category": "监控摄像头",
|
||||||
|
"product.s01.description": "高清画质,智能监控",
|
||||||
|
"product.t11.name": "T11 专业监控摄像头",
|
||||||
|
"product.t11.category": "监控摄像头",
|
||||||
|
"product.t11.description": "专业级监控设备",
|
||||||
|
"product.xa01.name": "XA-01 智能LED路灯",
|
||||||
|
"product.xa01.category": "智能照明",
|
||||||
|
"product.xa01.description": "节能环保,智能控制",
|
||||||
|
|
||||||
|
"product.hot.badge": "热门",
|
||||||
|
"product.learn-more": "了解详情",
|
||||||
|
|
||||||
|
"product.breadcrumb.home": "首页",
|
||||||
|
"product.breadcrumb.product-center": "产品中心",
|
||||||
|
"product.breadcrumb.monitor": "监控摄像头",
|
||||||
|
"product.breadcrumb.street-light": "路灯",
|
||||||
|
|
||||||
|
"product.category.product-center": "产品中心",
|
||||||
|
"product.category.monitor": "监控摄像头",
|
||||||
|
"product.category.street-light": "路灯",
|
||||||
|
|
||||||
|
"product.s02.subtitle": "智能监控摄像头",
|
||||||
|
"product.s03.subtitle": "夜视监控摄像头",
|
||||||
|
"product.t05.subtitle": "全天候监控摄像头",
|
||||||
|
|
||||||
|
"product.specs.number": "编号",
|
||||||
|
"product.specs.type": "类型",
|
||||||
|
"product.specs.specification": "规格",
|
||||||
|
"product.specs.brand": "品牌",
|
||||||
|
|
||||||
|
"product.page.learn-more": "了解更多",
|
||||||
|
|
||||||
|
"about.page.title": "关于我们",
|
||||||
|
"about.page.subtitle": "ABOUT US",
|
||||||
|
"about.page.description": "专业安防监控设备制造商 · 全球化服务提供商",
|
||||||
|
"about.breadcrumb.home": "首页",
|
||||||
|
"about.breadcrumb.about": "关于我们",
|
||||||
|
|
||||||
|
"about.stats.experience": "年专业经验",
|
||||||
|
"about.stats.team": "专业团队",
|
||||||
|
"about.stats.countries": "服务国家",
|
||||||
|
|
||||||
|
"about.intro.title": "企业简介",
|
||||||
|
"about.intro.p1": "2011年,SPML成立,专注于安防监控设备的研发与制造。自此,让每个用户都能享受到安全可靠的监控保护成为SPML的企业使命,也激励着我们持续为全球客户提供高质量的产品和服务。",
|
||||||
|
"about.intro.p2": "十余年来,SPML专注于可持续安防监控研发、智能识别、云端存储以及安防数字化领域,公司设计、研发、制造智能摄像头、监控系统、安防设备,为全球家庭及工商业用户提供优质的全场景安防监控解决方案。我们将与全球合作伙伴共同创造一个更安全的世界,为人类打造全球领先的智能安防生态!",
|
||||||
|
|
||||||
|
"about.achievements.countries": "服务国家",
|
||||||
|
"about.achievements.team": "专业团队",
|
||||||
|
"about.achievements.experience": "年专业经验",
|
||||||
|
"about.achievements.vision.title": "企业愿景",
|
||||||
|
"about.achievements.vision.desc": "成为全球领先的安防监控解决方案提供商,为用户提供最安全可靠的监控保护",
|
||||||
|
|
||||||
|
"about.tech.title": "技术实力",
|
||||||
|
"about.tech.subtitle": "先进的研发能力与制造工艺,为全球客户提供可靠的安防解决方案",
|
||||||
|
"about.tech.team.title": "专业研发团队",
|
||||||
|
"about.tech.team.desc": "拥有经验丰富的研发团队,专注安防监控设备的技术创新与产品优化",
|
||||||
|
"about.tech.manufacturing.title": "先进制造工艺",
|
||||||
|
"about.tech.manufacturing.desc": "配备现代化生产线,建立完善的质量管理体系,确保产品品质稳定可靠",
|
||||||
|
"about.tech.service.title": "全球化服务",
|
||||||
|
"about.tech.service.desc": "为全球50+国家和地区提供专业的安防监控解决方案与技术支持服务",
|
||||||
|
"about.tech.advantage.title": "核心优势",
|
||||||
|
"about.tech.advantage.desc": "专注于智能摄像头、监控系统、安防设备等产品的研发制造,通过持续的技术创新和严格的质量控制,为客户提供高性能、高可靠性的安防监控产品。",
|
||||||
|
|
||||||
|
"contact.page.title": "联系我们",
|
||||||
|
"contact.page.subtitle": "CONTACT US",
|
||||||
|
"contact.breadcrumb.home": "首页",
|
||||||
|
"contact.breadcrumb.contact": "联系我们",
|
||||||
|
"contact.welcome": "期待与您的直接联系,我们将竭诚为您提供专业的支持和解答",
|
||||||
|
"contact.company.label": "公司",
|
||||||
|
"contact.company.name": "中山市明阳良光照明有限公司",
|
||||||
|
"contact.company.address": "中国广东省中山市古镇镇海洲东安北路398号",
|
||||||
|
"contact.phone.label": "电话",
|
||||||
|
"contact.email.label": "邮箱",
|
||||||
|
|
||||||
|
"nav.home": "首页",
|
||||||
|
"nav.about": "关于我们",
|
||||||
|
"nav.products": "产品系列",
|
||||||
|
"nav.contact": "联系我们",
|
||||||
|
|
||||||
|
"footer.company.name": "中山市明阳良光照明有限公司",
|
||||||
|
"footer.company.description": "太阳能智能云台摄像头制造商",
|
||||||
|
"footer.company.design": "明阳良光原创设计",
|
||||||
|
"footer.wechat": "微信",
|
||||||
|
"footer.whatsapp": "WhatsApp",
|
||||||
|
"footer.address": "地址",
|
||||||
|
"footer.qr.wechat": "微信二维码",
|
||||||
|
"footer.qr.whatsapp": "WhatsApp二维码",
|
||||||
|
|
||||||
|
"about.exhibition.title": "展会荣誉",
|
||||||
|
"about.exhibition.subtitle": "国际展会参展经历与企业资质认证展示",
|
||||||
|
"about.exhibition.security-expo": "国际安防展",
|
||||||
|
"about.exhibition.tech-conference": "技术交流",
|
||||||
|
"about.exhibition.certifications": "企业资质",
|
||||||
|
"about.exhibition.iso9001": "ISO9001",
|
||||||
|
"about.exhibition.iso9001.desc": "质量管理体系",
|
||||||
|
"about.exhibition.high-tech": "高新技术企业",
|
||||||
|
"about.exhibition.high-tech.desc": "国家级认定",
|
||||||
|
"about.exhibition.excellent-supplier": "优秀供应商",
|
||||||
|
"about.exhibition.excellent-supplier.desc": "行业认可",
|
||||||
|
"about.exhibition.ce-fcc": "CE/FCC",
|
||||||
|
"about.exhibition.ce-fcc.desc": "国际认证",
|
||||||
|
"about.exhibition.security-cert": "安防认证",
|
||||||
|
"about.exhibition.security-cert.desc": "行业标准",
|
||||||
|
"about.exhibition.quality-assurance": "品质保证",
|
||||||
|
"about.exhibition.quality-assurance.desc": "质量承诺",
|
||||||
|
|
||||||
|
"about.tech.badge.manufacturing": "制造",
|
||||||
|
"about.tech.badge.global": "全球",
|
||||||
|
"about.tech.tag.ai-algorithm": "AI算法",
|
||||||
|
"about.tech.tag.image-processing": "图像处理",
|
||||||
|
"about.tech.tag.hardware-design": "硬件设计",
|
||||||
|
"about.tech.tag.iso-certification": "ISO认证",
|
||||||
|
"about.tech.tag.precision-manufacturing": "精密制造",
|
||||||
|
"about.tech.tag.quality-control": "品质控制",
|
||||||
|
"about.tech.tag.technical-support": "技术支持",
|
||||||
|
"about.tech.tag.custom-solution": "定制方案",
|
||||||
|
"about.tech.tag.after-sales": "售后服务",
|
||||||
|
|
||||||
|
"about.production.title": "生产工艺",
|
||||||
|
"about.production.subtitle": "专业生产团队与严格工艺流程,确保产品质量达到国际标准",
|
||||||
|
"about.production.assembly": "精密组装",
|
||||||
|
"about.production.assembly.desc": "专业技术人员精密组装",
|
||||||
|
"about.production.testing": "质量检测",
|
||||||
|
"about.production.testing.desc": "严格测试每个产品",
|
||||||
|
"about.production.debugging": "产品调试",
|
||||||
|
"about.production.debugging.desc": "确保产品性能最优",
|
||||||
|
"about.production.packaging": "精美包装",
|
||||||
|
"about.production.packaging.desc": "保护产品安全运输",
|
||||||
|
"about.production.quality-control": "品控管理",
|
||||||
|
"about.production.capacity": "生产能力",
|
||||||
|
"about.production.monthly-capacity": "月产能(台)",
|
||||||
|
"about.production.guarantee": "生产保障",
|
||||||
|
"about.production.pass-rate": "合格率",
|
||||||
|
"about.production.lines": "生产线数量",
|
||||||
|
|
||||||
|
"about.company.image": "SPML企业形象",
|
||||||
|
"about.tech.image": "SPML技术展示"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,400 @@
|
||||||
|
{
|
||||||
|
"page.home": "Home",
|
||||||
|
"page.odm-oem":"ODM/OEM",
|
||||||
|
"page.product": "Product List",
|
||||||
|
"page.about-us": "About Us",
|
||||||
|
"page.honors": "Honors",
|
||||||
|
"page.news": "News",
|
||||||
|
"page.contact-us": "Contact Us",
|
||||||
|
"page.app-download": "BrightEMS App Download",
|
||||||
|
"page.news-detail": "News detail",
|
||||||
|
"page.core-advantage": "Core Advantages",
|
||||||
|
"page.detail": "product details ",
|
||||||
|
"page.company-profile": "Company Profile",
|
||||||
|
"page.support": "Support",
|
||||||
|
"page.company": "Zhongshan Mingyang Liangguang Lighting Co., Ltd.",
|
||||||
|
"page.back-to-top":"Top",
|
||||||
|
"page.404-content":"Sorry, the page address you visited is incorrect or does not exist",
|
||||||
|
"page.404-button":"Home",
|
||||||
|
"page.company-abbreviation":"Mingyang Liangguang",
|
||||||
|
"page.loading":"loading...",
|
||||||
|
|
||||||
|
"navbar.search": "What help do you need",
|
||||||
|
"navbar.product": "Product",
|
||||||
|
"navbar.app": "APP Download",
|
||||||
|
"navbar.language": "language",
|
||||||
|
"navbar.recommend": "Search suggestions",
|
||||||
|
|
||||||
|
|
||||||
|
"home.sence-main-tile":"Excursions",
|
||||||
|
"home.sence-main-subTile":"Portable power station can provides",
|
||||||
|
"home.sence-main-subTitle-2":"power for various equipment in outdoor activities",
|
||||||
|
"home.sence-item-1-tile":"Power Failure Emergency",
|
||||||
|
"home.sence-item-1-subTile":"In an emergency like a power outage or natural disaster, Energy storage power ",
|
||||||
|
"home.sence-item-1-subTitle-2":"supplies can provide critical power support",
|
||||||
|
"home.sence-item-2-tile":"Work and Study",
|
||||||
|
"home.sence-item-2-subTile":"Ensure that users will not be affected by power shortages when traveling",
|
||||||
|
"home.sence-item-2-subTitle-2":" or on the mobile working",
|
||||||
|
"home.sence-item-3-tile":"Household Electricity",
|
||||||
|
"home.sence-item-3-subTile":"It can be used as a backup power",
|
||||||
|
"home.sence-item-3-subTitle-2":"supply for the family to maintain basic communication and life functions",
|
||||||
|
"home.certificate-title":"Qualification certification",
|
||||||
|
"home.certificate-subTitle":"Escort your products, win reputation with quality, and repay customers with service",
|
||||||
|
|
||||||
|
"home.learn-more": "Learn more",
|
||||||
|
"home.view-more": "more",
|
||||||
|
"home.situation": "Mingyang Liangguang Company Profile",
|
||||||
|
"home.platform": "",
|
||||||
|
"home.individual": "",
|
||||||
|
"home.sale": "Countries",
|
||||||
|
"home.development": "Global Business Development",
|
||||||
|
"home.products": "Strong production, sales and after-sales service capabilities provide fully support to global customers and establish long-term strategic partnerships.",
|
||||||
|
"home.Energy": "Daily Production",
|
||||||
|
"home.service-centers": "Overseas Service Center",
|
||||||
|
"home.main-products": "Products",
|
||||||
|
"home.solar-panel": "Solar panel",
|
||||||
|
"home.power-station": "Portable Power Station",
|
||||||
|
"home.accessory": "Accessory",
|
||||||
|
"home.temporary-video": "Temporary Video",
|
||||||
|
"home.background-image": "Background image",
|
||||||
|
|
||||||
|
"home.about-syd": "About Mingyang Liangguang",
|
||||||
|
"home.professional":"Professional energy storage system manufacturer",
|
||||||
|
"home.year": "",
|
||||||
|
"home.establish": "Founded In",
|
||||||
|
"home.employees": "Employees",
|
||||||
|
"home.proportion": "R&D Propportion",
|
||||||
|
"home.factoryarea": "Factory covers",
|
||||||
|
"home.recording":"Recording the moment when Mingyang Liangguang changed the world",
|
||||||
|
|
||||||
|
"foot.service-terms": "Services Terms",
|
||||||
|
"foot.privacy-policy": "Privacy Statement",
|
||||||
|
"foot.valid-email": "Please enter a valid email address",
|
||||||
|
"foot.company": "Zhongshan Mingyang Liangguang Lighting Co., Ltd., all rights reserved.",
|
||||||
|
"foot.record-number": "Record number : Yue ICP Bei 15063791",
|
||||||
|
|
||||||
|
"contact.contacts-us": "Contact Us",
|
||||||
|
"contact.sub-title-1": "Company Info",
|
||||||
|
"contact.sub-title-2": "Contact Info",
|
||||||
|
"contact.official-website":"Company's official website",
|
||||||
|
"contact.other-contact":"Other contact information",
|
||||||
|
"contact.sales-consulting":"sales consulting",
|
||||||
|
"contact.operations-specialist":"Operations specialist",
|
||||||
|
"contact.after-sale-guarantee":"After-sale guarantee",
|
||||||
|
"contact.cooperation-negotiation":"Cooperation negotiation",
|
||||||
|
"contact.address": "Address:",
|
||||||
|
"contact.address-details": "4F, Building 4, Phase I, Lianchuang Science and Technology Park, Longgang District, Shenzhen.",
|
||||||
|
"contact.name":"Name",
|
||||||
|
"contact.tel": "Tel:",
|
||||||
|
"contact.email": "Email:",
|
||||||
|
"contact.email-2": "Email",
|
||||||
|
"contact.mobile": "Mobile:",
|
||||||
|
"contact.submit": "Submit",
|
||||||
|
"contact.verify-name": "Please enter a valid name",
|
||||||
|
"contact.verify-email": "Please enter a valid email address",
|
||||||
|
"contact.verify-title": "If you have any other questions, please feel free to contact us at any time",
|
||||||
|
"contact.verify-message": "Enter product details and other specific requirements to obtain accurate quotations",
|
||||||
|
"contact.submitted-successfully": "Submitted successfully",
|
||||||
|
"contact.submitted-failed": "Submission failed",
|
||||||
|
"contact.thank-message": "Thank you for your inquiry!We will contact you as soon as possible!",
|
||||||
|
"contact.thank-message2": "We will contact you as soon as possible.",
|
||||||
|
"contact.back": "Back to Menu",
|
||||||
|
|
||||||
|
"corporatenews": "Company News",
|
||||||
|
"aboutus.company": "Zhongshan Mingyang Liangguang Lighting Co., Ltd.",
|
||||||
|
"aboutus.company-1": "Founded in 2015, Zhongshan Mingyang Liangguang Lighting Co., Ltd. is specialized in R&D and manufacturing of portable power station and home products. Located in Torch Development Zone, Zhongshan, CN.",
|
||||||
|
"aboutus.company-2": "Our company covers over 12,000 square meters. The daily production capacity of us exceeds 3,000 units and the annual production capacity reaches 800 million units. We have brilliant R&D team with rich experience ",
|
||||||
|
"aboutus.company-3": "who are committed to the continuous pursuit of technological breakthroughs and product optimization, independently completing the entire process to ID design, structural design, hardware development,",
|
||||||
|
"aboutus.company-4": "software development, production and manufacturihome.power-stationng to ensure the uniqueness and advancement of our products.",
|
||||||
|
"aboutus.year": "",
|
||||||
|
"aboutus.founded": "2015",
|
||||||
|
"aboutus.establish": "Founded",
|
||||||
|
"aboutus.factoryarea": "Factory",
|
||||||
|
"aboutus.billion": "mill",
|
||||||
|
"aboutus.annualcapacity": "Annual Production",
|
||||||
|
"aboutus.technical-patents": "technology patent",
|
||||||
|
"aboutus.force": "Core Advantages",
|
||||||
|
"aboutus.force-subtitle-1": "Experienced development team",
|
||||||
|
"aboutus.force-subtitle-2": "Strict quality inspection process",
|
||||||
|
"aboutus.force-subtitle-3": "A robust supply chain system",
|
||||||
|
"aboutus.force-subtitle-4": "Continuous talent introduction",
|
||||||
|
"aboutus.history": "History",
|
||||||
|
"aboutus.sub-history-1": "The core team of the company has over 10 years of work experience in the electronic technology industry, with a deep understanding of power supply products and a deep foundation in electronic component supply chain management ",
|
||||||
|
"aboutus.sub-history-2": "and supported by a powerful database and supply chain system, with professional research and development knowledge and practical spirit, we provide high-quality products and technical services to global users.",
|
||||||
|
|
||||||
|
"aboutus.establishment-title": "Establishment",
|
||||||
|
"aboutus.establishment-content": "Founded in Shenzhen, the frontier city of reform and opening up and the capital of innovation. ",
|
||||||
|
"aboutus.transformation": "Transformation",
|
||||||
|
"aboutus.transformation-content": "Transformed from a power solutions company to an excellent portable power station manufacturing enterprise",
|
||||||
|
"aboutus.Innovation": "Innovation",
|
||||||
|
"aboutus.Innovation-content": "One of the first batch of enterprises in the power industry to develop 2000W bi-directional fast charging products. mass production and shipment in early 2020 and have shipped more than 50,000 units so far.",
|
||||||
|
"aboutus.financing": "Financing",
|
||||||
|
"aboutus.financing-content": "Completed round A of financing of tens of millions (investor: Xiaoxiong Hongnuo) ",
|
||||||
|
"aboutus.mission": "Missions",
|
||||||
|
|
||||||
|
"aboutus.mission-subtitle": "To create value for customers, shareholders, employees, society and the country",
|
||||||
|
"aboutus.vision": "Vision",
|
||||||
|
"aboutus.vision-subtitle": "To create a global power design company with excellent energy efficiency",
|
||||||
|
"aboutus.values": "Values",
|
||||||
|
"aboutus.values-subtitle": "Customer first, Innovation, Embracing change, Seeking truth from facts, Unity tenacity, Self-criticism",
|
||||||
|
"aboutus.philosophy": "Core value concept",
|
||||||
|
"aboutus.philosophy-subtitle": "Science is the soul of the enterprise",
|
||||||
|
"aboutus.honors-certificate":"Certificate",
|
||||||
|
"page.honors-content-1": "Our core team has more than 10 years experience in the electronic technology industry,",
|
||||||
|
"page.honors-content-2": "they have profound knowledge of power products, deep accumulation in electronic component supply chain management. Supported by powerful database and supply chain system,",
|
||||||
|
"page.honors-content-3": "they provide high-quality products and technical services with professional R&D knowledge and practical experience.",
|
||||||
|
"page.honors-content-4": "During this period, our R&D team has obtained multiple technology patents and was certified as a national high-tech enterprise in December 2019.",
|
||||||
|
|
||||||
|
"aboutus.advantage-1": "ID structure design",
|
||||||
|
"aboutus.advantage-2": "Product quality",
|
||||||
|
"aboutus.advantage-3": "Hardware development",
|
||||||
|
"aboutus.advantage-factors": "Critical factors of success",
|
||||||
|
"aboutus.advantage-4": "Software development",
|
||||||
|
"aboutus.advantage-5": "Production",
|
||||||
|
"aboutus.advantage-6": "AI Plus",
|
||||||
|
|
||||||
|
"customized.gallery-title":"Source factory Trustworthy quality",
|
||||||
|
"customized.global-business-title":"Global warehouse timely delivery",
|
||||||
|
"customized.global-business-subTit-1":"Oversea after Sales Service--In USA, EU and JP, Owns four overseas warehouses,",
|
||||||
|
"customized.global-business-subTit-2":" Exports to 33 countries, Provide ODM/OEM services to customers",
|
||||||
|
"customized.customized-title":"Customized process",
|
||||||
|
"customized.customized-text-1":"Customer demand",
|
||||||
|
"customized.customized-text-2":"R&D design",
|
||||||
|
"customized.customized-text-2-pc":"Research and development design",
|
||||||
|
"customized.customized-text-3":"Sample test",
|
||||||
|
"customized.customized-text-4":"Customer confirmation",
|
||||||
|
"customized.customized-text-5":"Bulk production",
|
||||||
|
"customized.customized-text-6":"Product sample signing",
|
||||||
|
"customized.customized-text-7":"Optimization and adjustment",
|
||||||
|
"customized.customized-text-8":"Sample trial production",
|
||||||
|
|
||||||
|
"download.excellentenergy": "Portable power stations with excellent energy efficiency",
|
||||||
|
"download.apk-download": "APK download",
|
||||||
|
"download.app-qr-code": "App QR code",
|
||||||
|
|
||||||
|
"detail.power-99": "Compatible with 99%",
|
||||||
|
"detail.appliances": "Home appliances",
|
||||||
|
"detail.parameters": "Detailed Parameters",
|
||||||
|
"detail.may-also-like": "May also like",
|
||||||
|
"detail.view-more": "View more",
|
||||||
|
"detail.summary": "Summary",
|
||||||
|
"detail.specs": "Specifications",
|
||||||
|
"detail.detail": "Details",
|
||||||
|
|
||||||
|
"n051.title": "3600W Portable Power Station",
|
||||||
|
"n051.years-1": "2-years",
|
||||||
|
"n051.capacity": "Large Capacity",
|
||||||
|
"n051.guarantee": "Warranty",
|
||||||
|
"n051.battery": "Battery",
|
||||||
|
"n051.battery-life": "Lifespan",
|
||||||
|
"n051.solar": "Solar Panel Charging",
|
||||||
|
"n051.solarvoltage": "(12-160V)",
|
||||||
|
"n051.ac-charging": "AC Input",
|
||||||
|
"n051.variable": "Adjustable Input Power",
|
||||||
|
"n051.ac-output": "AC Output",
|
||||||
|
"n051.powered-off": "At the moment of power outage,instant power supply to prevent data from missing",
|
||||||
|
"n051.hours": "Hours",
|
||||||
|
"n051.fast-charging": "Fast Charging",
|
||||||
|
"n051.other-brands": "Other Brands",
|
||||||
|
|
||||||
|
"n051.battery-1": "LiFePo4 Battery",
|
||||||
|
"n051.battery-2": "High Safety Performance Long Lifespan",
|
||||||
|
"n051.battery-3": "High Temperature Resistant Large Capacity Environmentally Friendly",
|
||||||
|
"n051.battery2-1": "BMS Protecting System",
|
||||||
|
"n051.battery2-2": "High and Low Temperature Protection",
|
||||||
|
"n051.battery2-3": "High and Low Voltage Protection",
|
||||||
|
"n051.battery2-4": "Overcurrent and Overload Protection",
|
||||||
|
|
||||||
|
"n051.powered-simultaneously": "Power Up To 15 Devices at The Same Time",
|
||||||
|
"n051.ports-animation": "15 Ports Vedio",
|
||||||
|
"n051.intelligent": "Smart APP Mobile Phone Control",
|
||||||
|
"n051.control-output": "Check Battery Status Anytime, Anywhere",
|
||||||
|
"n051.click-open": "Toggle with a single click, control output",
|
||||||
|
"n051.accessories-details": "Accessories Details",
|
||||||
|
|
||||||
|
"n052.title": "2400W Portable Power Station",
|
||||||
|
"n052.capacity": "Large Capacity",
|
||||||
|
"n052.hours": "Hours",
|
||||||
|
"n052.charge": "Charged to 100% ",
|
||||||
|
"n052.battery-cycles": "4000 Times Battery Cycle",
|
||||||
|
"n052.lithium-iron": "Built-in LiFePo4 Battery",
|
||||||
|
"n052.solar-panel": "Solar Panel Charging",
|
||||||
|
"n052.switching-time": "Swicthover Time",
|
||||||
|
"n052.compatible": "Compatible with Common Electrical Appliances",
|
||||||
|
"n052.energy-title": "Saving Elecricity Bill / Energy",
|
||||||
|
"n052.energy-content": "Use Solar Panel to charge machine during the day and use our machine to charge electrical appliances at night. Achieve electricity cycle and self-sufficiency",
|
||||||
|
"n052.screen-title": "Clear LCD Display Screen",
|
||||||
|
"n052.screen-content": "The lCD screen shows output power, input power, battery power and status of use, helping with the next energy storage plan",
|
||||||
|
"n052.powered-off": "At the moment of power outage,instant power supply to prevent data from missing",
|
||||||
|
"n052.within": "within",
|
||||||
|
"n052.loop": "Long Cycle Life",
|
||||||
|
"n052.port": "Interfaces Introduction",
|
||||||
|
"n052.output-ports": "13 Output Ports",
|
||||||
|
"n052.other-brands": "Other Brands",
|
||||||
|
"n052.protection-1": "BMS Protecting System",
|
||||||
|
"n052.protection-2": "High and low temperature protection, high and low voltage protection, overcurrent and overload protection",
|
||||||
|
"n052.show-title-1": "Top storage space",
|
||||||
|
"n052.show-subtitle-1": "Lightweight storage of parts",
|
||||||
|
"n052.show-title-2": "Portable handle",
|
||||||
|
"n052.show-subtitle-2": "Convenient to carry and move",
|
||||||
|
"n052.show-title-3": "Dust rubber race",
|
||||||
|
"n052.show-subtitle-3": "Prevent small particles of dust from entering the interior of the machine",
|
||||||
|
"n052.show-title-4": "Fireproof ABS material",
|
||||||
|
"n052.show-subtitle-4": "An enclosure with a V0 fire rating; With reinforced handle",
|
||||||
|
|
||||||
|
"home.swiper.led.title": "LED Lighting",
|
||||||
|
"home.swiper.led.subtitle": "Energy-Efficient LED Fixtures Series",
|
||||||
|
"home.swiper.led.description": "High efficiency, long-lasting, intelligent control",
|
||||||
|
"home.swiper.led.button": "Learn More",
|
||||||
|
"home.swiper.monitor.title": "Monitoring Equipment",
|
||||||
|
"home.swiper.monitor.subtitle": "Professional Monitoring Solutions",
|
||||||
|
"home.swiper.monitor.description": "High-definition image quality, intelligent analysis, comprehensive monitoring",
|
||||||
|
"home.swiper.monitor.button": "Learn More",
|
||||||
|
"home.swiper.security.title": "Smart Security",
|
||||||
|
"home.swiper.security.subtitle": "4K HD Security Camera",
|
||||||
|
"home.swiper.security.description": "24/7 protection, intelligent recognition, ultra-clear image quality",
|
||||||
|
"home.swiper.security.button": "Learn More",
|
||||||
|
|
||||||
|
"home.products.title": "Core Products",
|
||||||
|
"home.products.subtitle": "Professional security monitoring equipment and LED lighting solutions",
|
||||||
|
"home.products.view-all": "View All Products",
|
||||||
|
|
||||||
|
"product.s01.name": "S01 HD Security Camera",
|
||||||
|
"product.s01.category": "Security Camera",
|
||||||
|
"product.s01.description": "High-definition image quality, intelligent monitoring",
|
||||||
|
"product.t11.name": "T11 Professional Security Camera",
|
||||||
|
"product.t11.category": "Security Camera",
|
||||||
|
"product.t11.description": "Professional-grade monitoring equipment",
|
||||||
|
"product.xa01.name": "XA-01 Smart LED Street Light",
|
||||||
|
"product.xa01.category": "Smart Lighting",
|
||||||
|
"product.xa01.description": "Energy-saving and environmentally friendly, intelligent control",
|
||||||
|
|
||||||
|
"product.hot.badge": "Hot",
|
||||||
|
"product.learn-more": "Learn More",
|
||||||
|
|
||||||
|
"product.breadcrumb.home": "Home",
|
||||||
|
"product.breadcrumb.product-center": "Product Center",
|
||||||
|
"product.breadcrumb.monitor": "Security Camera",
|
||||||
|
"product.breadcrumb.street-light": "Street Light",
|
||||||
|
|
||||||
|
"product.category.product-center": "Product Center",
|
||||||
|
"product.category.monitor": "Security Camera",
|
||||||
|
"product.category.street-light": "Street Light",
|
||||||
|
|
||||||
|
"product.s02.subtitle": "Smart Security Camera",
|
||||||
|
"product.s03.subtitle": "Night Vision Security Camera",
|
||||||
|
"product.t05.subtitle": "All-Weather Security Camera",
|
||||||
|
|
||||||
|
"product.specs.number": "Number",
|
||||||
|
"product.specs.type": "Type",
|
||||||
|
"product.specs.specification": "Specification",
|
||||||
|
"product.specs.brand": "Brand",
|
||||||
|
|
||||||
|
"product.page.learn-more": "Learn More",
|
||||||
|
|
||||||
|
"about.page.title": "About Us",
|
||||||
|
"about.page.subtitle": "ABOUT US",
|
||||||
|
"about.page.description": "Professional Security Monitoring Equipment Manufacturer · Global Service Provider",
|
||||||
|
"about.breadcrumb.home": "Home",
|
||||||
|
"about.breadcrumb.about": "About Us",
|
||||||
|
|
||||||
|
"about.stats.experience": "+ Years Experience",
|
||||||
|
"about.stats.team": "+ Professional Team",
|
||||||
|
"about.stats.countries": "+ Countries Served",
|
||||||
|
|
||||||
|
"about.intro.title": "Company Introduction",
|
||||||
|
"about.intro.p1": "SPML was established in 2011, focusing on the research and development and manufacturing of security monitoring equipment. Since then, enabling every user to enjoy safe and reliable monitoring protection has become SPML's corporate mission, which also motivates us to continue providing high-quality products and services to global customers.",
|
||||||
|
"about.intro.p2": "For more than ten years, SPML has focused on sustainable security monitoring R&D, intelligent recognition, cloud storage, and security digitization. The company designs, develops, and manufactures smart cameras, monitoring systems, and security equipment, providing high-quality full-scenario security monitoring solutions for global home and commercial users. We will work with global partners to create a safer world and build a globally leading intelligent security ecosystem for humanity!",
|
||||||
|
|
||||||
|
"about.achievements.countries": "Countries Served",
|
||||||
|
"about.achievements.team": "Professional Team",
|
||||||
|
"about.achievements.experience": "+ Years Experience",
|
||||||
|
"about.achievements.vision.title": "Corporate Vision",
|
||||||
|
"about.achievements.vision.desc": "To become a leading global security monitoring solution provider, providing users with the safest and most reliable monitoring protection",
|
||||||
|
|
||||||
|
"about.tech.title": "Technology Excellence",
|
||||||
|
"about.tech.subtitle": "Advanced R&D capabilities and manufacturing processes, providing reliable security solutions for global customers",
|
||||||
|
"about.tech.team.title": "Professional R&D Team",
|
||||||
|
"about.tech.team.desc": "We have an experienced R&D team dedicated to technological innovation and product optimization in security monitoring equipment",
|
||||||
|
"about.tech.manufacturing.title": "Advanced Manufacturing Process",
|
||||||
|
"about.tech.manufacturing.desc": "Equipped with modern production lines and established a comprehensive quality management system to ensure stable and reliable product quality",
|
||||||
|
"about.tech.service.title": "Global Service",
|
||||||
|
"about.tech.service.desc": "Providing professional security monitoring solutions and technical support services to 50+ countries and regions worldwide",
|
||||||
|
"about.tech.advantage.title": "Core Advantages",
|
||||||
|
"about.tech.advantage.desc": "Focusing on the R&D and manufacturing of smart cameras, monitoring systems, security equipment and other products, through continuous technological innovation and strict quality control, we provide customers with high-performance, high-reliability security monitoring products.",
|
||||||
|
|
||||||
|
"contact.page.title": "Contact Us",
|
||||||
|
"contact.page.subtitle": "CONTACT US",
|
||||||
|
"contact.breadcrumb.home": "Home",
|
||||||
|
"contact.breadcrumb.contact": "Contact Us",
|
||||||
|
"contact.welcome": "We look forward to direct contact with you and will wholeheartedly provide professional support and answers",
|
||||||
|
"contact.company.label": "Company",
|
||||||
|
"contact.company.name": "Zhongshan Mingyang Liangguang Lighting Co., Ltd.",
|
||||||
|
"contact.company.address": "No. 398, Haizhou Dong'an North Road, Guzhen Town, Zhongshan City, Guangdong Province, China",
|
||||||
|
"contact.phone.label": "Phone",
|
||||||
|
"contact.email.label": "Email",
|
||||||
|
|
||||||
|
"nav.home": "Home",
|
||||||
|
"nav.about": "About Us",
|
||||||
|
"nav.products": "Products",
|
||||||
|
"nav.contact": "Contact Us",
|
||||||
|
|
||||||
|
"footer.company.name": "Zhongshan Mingyang Liangguang Lighting Co., Ltd.",
|
||||||
|
"footer.company.description": "Solar Smart PTZ Camera Manufacturer",
|
||||||
|
"footer.company.design": "Mingyang Liangguang Original Design",
|
||||||
|
"footer.wechat": "WeChat",
|
||||||
|
"footer.whatsapp": "WhatsApp",
|
||||||
|
"footer.address": "Address",
|
||||||
|
"footer.qr.wechat": "WeChat QR Code",
|
||||||
|
"footer.qr.whatsapp": "WhatsApp QR Code",
|
||||||
|
|
||||||
|
"about.exhibition.title": "Exhibition & Honors",
|
||||||
|
"about.exhibition.subtitle": "International exhibition experience and corporate qualification certification display",
|
||||||
|
"about.exhibition.security-expo": "Security Expo",
|
||||||
|
"about.exhibition.tech-conference": "Tech Conference",
|
||||||
|
"about.exhibition.certifications": "Certifications",
|
||||||
|
"about.exhibition.iso9001": "ISO9001",
|
||||||
|
"about.exhibition.iso9001.desc": "Quality Management System",
|
||||||
|
"about.exhibition.high-tech": "High-tech Enterprise",
|
||||||
|
"about.exhibition.high-tech.desc": "National Certification",
|
||||||
|
"about.exhibition.excellent-supplier": "Excellent Supplier",
|
||||||
|
"about.exhibition.excellent-supplier.desc": "Industry Recognition",
|
||||||
|
"about.exhibition.ce-fcc": "CE/FCC",
|
||||||
|
"about.exhibition.ce-fcc.desc": "International Certification",
|
||||||
|
"about.exhibition.security-cert": "Security Certification",
|
||||||
|
"about.exhibition.security-cert.desc": "Industry Standard",
|
||||||
|
"about.exhibition.quality-assurance": "Quality Assurance",
|
||||||
|
"about.exhibition.quality-assurance.desc": "Quality Commitment",
|
||||||
|
|
||||||
|
"about.tech.badge.manufacturing": "Manufacturing",
|
||||||
|
"about.tech.badge.global": "Global",
|
||||||
|
"about.tech.tag.ai-algorithm": "AI Algorithm",
|
||||||
|
"about.tech.tag.image-processing": "Image Processing",
|
||||||
|
"about.tech.tag.hardware-design": "Hardware Design",
|
||||||
|
"about.tech.tag.iso-certification": "ISO Certification",
|
||||||
|
"about.tech.tag.precision-manufacturing": "Precision Manufacturing",
|
||||||
|
"about.tech.tag.quality-control": "Quality Control",
|
||||||
|
"about.tech.tag.technical-support": "Technical Support",
|
||||||
|
"about.tech.tag.custom-solution": "Custom Solution",
|
||||||
|
"about.tech.tag.after-sales": "After-sales Service",
|
||||||
|
|
||||||
|
"about.production.title": "Manufacturing Process",
|
||||||
|
"about.production.subtitle": "Professional production team and strict process flow to ensure product quality meets international standards",
|
||||||
|
"about.production.assembly": "Precision Assembly",
|
||||||
|
"about.production.assembly.desc": "Professional technicians precision assembly",
|
||||||
|
"about.production.testing": "Quality Testing",
|
||||||
|
"about.production.testing.desc": "Strict testing of every product",
|
||||||
|
"about.production.debugging": "Product Debugging",
|
||||||
|
"about.production.debugging.desc": "Ensure optimal product performance",
|
||||||
|
"about.production.packaging": "Exquisite Packaging",
|
||||||
|
"about.production.packaging.desc": "Protect products for safe transportation",
|
||||||
|
"about.production.quality-control": "Quality Control",
|
||||||
|
"about.production.capacity": "Production Capacity",
|
||||||
|
"about.production.monthly-capacity": "Monthly Capacity (Units)",
|
||||||
|
"about.production.guarantee": "Production Guarantee",
|
||||||
|
"about.production.pass-rate": "Pass Rate",
|
||||||
|
"about.production.lines": "Production Lines",
|
||||||
|
|
||||||
|
"about.company.image": "SPML Corporate Image",
|
||||||
|
"about.tech.image": "SPML Technology Showcase"
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,469 @@
|
||||||
|
<script setup>
|
||||||
|
import topBar from "@/components/top/title-bar.vue";
|
||||||
|
import footBar from "@/components/bottom/foot-bar.vue";
|
||||||
|
import { useRouter } from "#imports";
|
||||||
|
import { useI18n } from "#imports";
|
||||||
|
import { computed } from "vue";
|
||||||
|
import { usePageTitle } from "@/composables/usePageTitle.js";
|
||||||
|
import { useImagePath } from "@/composables/useImagePath.js";
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const { t } = useI18n();
|
||||||
|
const { cdnImageUrl } = useImagePath();
|
||||||
|
|
||||||
|
// 设置页面标题
|
||||||
|
usePageTitle("page.contact-us");
|
||||||
|
|
||||||
|
// 计算banner背景样式
|
||||||
|
const bannerStyle = computed(() => ({
|
||||||
|
background: `url("${cdnImageUrl('/static/contact-us/contact-us_banner.jpg')}") center/cover no-repeat`
|
||||||
|
}));
|
||||||
|
|
||||||
|
// 路由跳转
|
||||||
|
const goTab = (path) => {
|
||||||
|
router.push({
|
||||||
|
name: path,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<topBar class="define-topBar__components"></topBar>
|
||||||
|
|
||||||
|
<!-- Banner -->
|
||||||
|
<div class="banner">
|
||||||
|
<div class="banner-overlay" :style="bannerStyle"></div>
|
||||||
|
<div class="banner-content">
|
||||||
|
<h1 class="banner-title">{{ t("contact.page.title") }}</h1>
|
||||||
|
<p class="banner-subtitle">{{ t("contact.page.subtitle") }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 面包屑导航 -->
|
||||||
|
<div class="breadcrumb">
|
||||||
|
<div class="breadcrumb-container">
|
||||||
|
<a @click="goTab('home')" class="breadcrumb-link">
|
||||||
|
<img :src="cdnImageUrl('/static/common/home.png')" :alt="t('page.home')" />
|
||||||
|
{{ t("contact.breadcrumb.home") }}
|
||||||
|
</a>
|
||||||
|
<span class="breadcrumb-separator">></span>
|
||||||
|
<span class="breadcrumb-current">{{ t("contact.breadcrumb.contact") }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 主要内容 -->
|
||||||
|
<main class="main-content">
|
||||||
|
<div class="container">
|
||||||
|
<!-- 欢迎语 -->
|
||||||
|
<div class="welcome-text">
|
||||||
|
{{ t("contact.welcome") }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 联系信息 -->
|
||||||
|
<div class="contact-grid">
|
||||||
|
<div class="contact-item">
|
||||||
|
<div class="contact-label">{{ t("contact.company.label") }}</div>
|
||||||
|
<div class="contact-value">{{ t("contact.company.name") }}</div>
|
||||||
|
<div class="contact-value">{{ t("contact.company.address") }}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-item">
|
||||||
|
<div class="contact-label">{{ t("contact.phone.label") }}</div>
|
||||||
|
<div class="contact-value">86-0755-2373 6296</div>
|
||||||
|
<div class="contact-value">86-15278708583</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="contact-item">
|
||||||
|
<div class="contact-label">{{ t("contact.email.label") }}</div>
|
||||||
|
<div class="contact-value">business@mingyanglg.com</div>
|
||||||
|
<div class="contact-value">sales@mingyanglg.com</div>
|
||||||
|
<div class="contact-value">service@mingyanglg.com</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<foot-bar></foot-bar>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
/* 容器 */
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
max-width: 1800px;
|
||||||
|
padding: 0 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
max-width: 1500px;
|
||||||
|
padding: 0 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
max-width: 1300px;
|
||||||
|
padding: 0 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 0 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 0 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Banner 样式 */
|
||||||
|
.banner {
|
||||||
|
// background: linear-gradient(135deg, #1a1a2e, #16213e);
|
||||||
|
color: #ffffff;
|
||||||
|
text-align: center;
|
||||||
|
padding: 50px 0;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
height: 350px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
padding: 100px 0;
|
||||||
|
height: 600px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
padding: 80px 0;
|
||||||
|
height: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
padding: 70px 0;
|
||||||
|
height: 450px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 60px 0;
|
||||||
|
height: 400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 50px 0;
|
||||||
|
height: 350px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 40px 0;
|
||||||
|
height: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding: 35px 0;
|
||||||
|
height: 280px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner-overlay {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
opacity: 0.9;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner-content {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner-title {
|
||||||
|
font-size: 46px !important;
|
||||||
|
font-weight: 300;
|
||||||
|
font-family: var(--font-light);
|
||||||
|
letter-spacing: 1px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
font-size: 56px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
font-size: 48px;
|
||||||
|
letter-spacing: 1.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
font-size: 40px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
font-size: 36px;
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
font-size: 32px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
font-size: 28px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
font-size: 24px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
letter-spacing: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner-subtitle {
|
||||||
|
font-size: 18px !important;
|
||||||
|
opacity: 0.8;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
font-weight: 300;
|
||||||
|
font-family: var(--font-light);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 40px 0;
|
||||||
|
|
||||||
|
.banner-title {
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner-subtitle {
|
||||||
|
font-size: 14px;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 面包屑导航 */
|
||||||
|
.breadcrumb {
|
||||||
|
background: #f8f9fa;
|
||||||
|
padding: 20px 0;
|
||||||
|
border-bottom: 1px solid #e9ecef;
|
||||||
|
|
||||||
|
.breadcrumb-container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 12px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumb-link {
|
||||||
|
color: #666;
|
||||||
|
text-decoration: none;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
transition: color 0.3s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumb-separator {
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumb-current {
|
||||||
|
color: #333;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 主要内容 */
|
||||||
|
.main-content {
|
||||||
|
background: #ffffff;
|
||||||
|
padding: 60px 0 80px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
padding: 120px 0 140px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
padding: 100px 0 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
padding: 80px 0 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 60px 0 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 50px 0 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 40px 0 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding: 35px 0 45px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 欢迎语 */
|
||||||
|
.welcome-text {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 18px !important;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
font-weight: 300;
|
||||||
|
font-family: var(--font-light);
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
font-size: 28px !important;
|
||||||
|
margin-bottom: 80px;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
font-size: 24px !important;
|
||||||
|
margin-bottom: 70px;
|
||||||
|
letter-spacing: 0.8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
font-size: 20px !important;
|
||||||
|
margin-bottom: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
font-size: 18px !important;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
font-size: 16px !important;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
font-size: 15px !important;
|
||||||
|
margin-bottom: 35px;
|
||||||
|
letter-spacing: 0.3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
font-size: 14px !important;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
letter-spacing: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 联系信息网格 */
|
||||||
|
.contact-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 60px;
|
||||||
|
max-width: 900px;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 100px;
|
||||||
|
max-width: 1400px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 80px;
|
||||||
|
max-width: 1200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 70px;
|
||||||
|
max-width: 1000px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 50px;
|
||||||
|
max-width: 800px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
gap: 40px;
|
||||||
|
max-width: 600px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
gap: 30px;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
gap: 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-item {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-label {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
font-family: var(--font-medium);
|
||||||
|
color: #999;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
padding-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contact-value {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
font-weight: 400;
|
||||||
|
font-family: var(--font-regular);
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式已在各个组件中处理 */
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,121 @@
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
useI18n
|
||||||
|
} from "#imports";
|
||||||
|
const {
|
||||||
|
t
|
||||||
|
} = useI18n();
|
||||||
|
useHead({
|
||||||
|
title: '404'
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="pageMain">
|
||||||
|
<div class="pageMain__content">
|
||||||
|
<div class="pageMain__content__left">
|
||||||
|
<img class="pageMain__content__left__avater" loading="lazy" decoding="async"
|
||||||
|
src="/static/error/404_icon.webp" />
|
||||||
|
</div>
|
||||||
|
<div class="pageMain__content__right">
|
||||||
|
<h2 class="pageMain__content__right__content">
|
||||||
|
<p class="pageMain__content__right__content__text">{{t('page.404-content')}}</p>
|
||||||
|
</h2>
|
||||||
|
<a class="pageMain__content__right__btn" href="/">{{t('page.404-button')}}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.pageMain {
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
@media (max-width:850px) {
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
&__avater {
|
||||||
|
width: 520px;
|
||||||
|
height: 370px;
|
||||||
|
|
||||||
|
@media (min-width:1920px) {
|
||||||
|
width: 5.2rem;
|
||||||
|
height: 3.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:850px) {
|
||||||
|
width: 80%;
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
width: 300px;
|
||||||
|
color: #272727;
|
||||||
|
|
||||||
|
@media (min-width:1920px) {
|
||||||
|
width: 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:520px) {
|
||||||
|
margin-top: 50px;
|
||||||
|
width: 60%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
&__text {
|
||||||
|
font-size: 23px;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
line-height: 1.8;
|
||||||
|
color: #636363;
|
||||||
|
|
||||||
|
@media (min-width:1920px) {
|
||||||
|
font-size: 0.23rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:520px) {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__btn {
|
||||||
|
width: fit-content;
|
||||||
|
padding: 0 10px;
|
||||||
|
margin-top: 20px;
|
||||||
|
background: #03060b;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
color: #f7f7f7;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 2;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
|
||||||
|
@media (min-width:1920px) {
|
||||||
|
margin-top: 0.2rem;
|
||||||
|
font-size: 0.12rem;
|
||||||
|
padding: 0 0.1rem;
|
||||||
|
border-radius: 0.06rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,809 @@
|
||||||
|
<script setup>
|
||||||
|
import { ref, onBeforeMount, onMounted, computed } from "vue";
|
||||||
|
import { useRouter } from "#imports";
|
||||||
|
import { useI18n } from "#imports";
|
||||||
|
import { usePageTitle } from "@/composables/usePageTitle.js";
|
||||||
|
import { useImagePath } from "@/composables/useImagePath.js";
|
||||||
|
import topBar from "@/components/top/title-bar.vue";
|
||||||
|
import footBar from "@/components/bottom/foot-bar.vue";
|
||||||
|
import { Swiper } from "swiper";
|
||||||
|
import { Navigation, Pagination, Autoplay } from "swiper/modules";
|
||||||
|
import "swiper/css";
|
||||||
|
import "swiper/css/navigation";
|
||||||
|
import "swiper/css/pagination";
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const { t } = useI18n();
|
||||||
|
const { cdnImageUrl } = useImagePath();
|
||||||
|
|
||||||
|
// 设置页面标题
|
||||||
|
usePageTitle("page.home");
|
||||||
|
|
||||||
|
// 响应式数据定义 - 使用computed确保国际化文本能响应语言切换
|
||||||
|
const swiperData = computed(() => [
|
||||||
|
{
|
||||||
|
image: cdnImageUrl("/static/home/swiper_01.png"),
|
||||||
|
title: t("home.swiper.led.title"),
|
||||||
|
subtitle: t("home.swiper.led.subtitle"),
|
||||||
|
description: t("home.swiper.led.description"),
|
||||||
|
buttonText: t("home.swiper.led.button"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
image: cdnImageUrl("/static/home/swiper_03.jpg"),
|
||||||
|
title: t("home.swiper.monitor.title"),
|
||||||
|
subtitle: t("home.swiper.monitor.subtitle"),
|
||||||
|
description: t("home.swiper.monitor.description"),
|
||||||
|
buttonText: t("home.swiper.monitor.button"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
image: cdnImageUrl("/static/home/swiper_02.jpg"),
|
||||||
|
title: t("home.swiper.security.title"),
|
||||||
|
subtitle: t("home.swiper.security.subtitle"),
|
||||||
|
description: t("home.swiper.security.description"),
|
||||||
|
buttonText: t("home.swiper.security.button"),
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
const productList = computed(() => [
|
||||||
|
{
|
||||||
|
_id: "S01",
|
||||||
|
name: t("product.s01.name"),
|
||||||
|
category: t("product.s01.category"),
|
||||||
|
description: t("product.s01.description"),
|
||||||
|
image: cdnImageUrl("/static/product/monitor/S01.png"),
|
||||||
|
isHot: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
_id: "T11",
|
||||||
|
name: t("product.t11.name"),
|
||||||
|
category: t("product.t11.category"),
|
||||||
|
description: t("product.t11.description"),
|
||||||
|
image: cdnImageUrl("/static/product/monitor/T11.png")
|
||||||
|
},
|
||||||
|
{
|
||||||
|
_id: "XA-01",
|
||||||
|
name: t("product.xa01.name"),
|
||||||
|
category: t("product.xa01.category"),
|
||||||
|
description: t("product.xa01.description"),
|
||||||
|
image: cdnImageUrl("/static/product/street_light/XA-01.png")
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
// 获取产品列表
|
||||||
|
const currentProducts = computed(() => {
|
||||||
|
return productList.value;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 跳转到产品页面
|
||||||
|
const goProduct = (item) => {
|
||||||
|
// 根据产品类型确定分类
|
||||||
|
const category = item._id === "XA-01" ? "street-light" : "monitor";
|
||||||
|
router.push({
|
||||||
|
path: "/product",
|
||||||
|
query: {
|
||||||
|
category: category,
|
||||||
|
id: item._id,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 跳转到产品页面(查看更多)
|
||||||
|
const goToProductPage = () => {
|
||||||
|
router.push("/product");
|
||||||
|
};
|
||||||
|
|
||||||
|
// 处理轮播图按钮点击
|
||||||
|
const handleSwiperButtonClick = (item) => {
|
||||||
|
// 根据轮播图标题中的关键词来判断产品类型
|
||||||
|
// 使用图片路径来判断,避免依赖可变的国际化文本
|
||||||
|
if (item.image.includes("swiper_01")) {
|
||||||
|
// LED照明相关 - 对应路灯产品
|
||||||
|
router.push({
|
||||||
|
path: "/product",
|
||||||
|
query: {
|
||||||
|
category: "street-light"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// 监控设备相关
|
||||||
|
router.push({
|
||||||
|
path: "/product",
|
||||||
|
query: {
|
||||||
|
category: "monitor"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
// 初始化Swiper轮播图
|
||||||
|
const swiper = new Swiper(".swiper-container", {
|
||||||
|
modules: [Navigation, Pagination, Autoplay],
|
||||||
|
loop: true,
|
||||||
|
autoplay: {
|
||||||
|
delay: 5000,
|
||||||
|
disableOnInteraction: false,
|
||||||
|
pauseOnMouseEnter: true,
|
||||||
|
},
|
||||||
|
pagination: {
|
||||||
|
el: ".swiper-pagination",
|
||||||
|
clickable: true,
|
||||||
|
dynamicBullets: true,
|
||||||
|
},
|
||||||
|
navigation: {
|
||||||
|
nextEl: ".swiper-button-next",
|
||||||
|
prevEl: ".swiper-button-prev",
|
||||||
|
},
|
||||||
|
speed: 800,
|
||||||
|
effect: "slide",
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="home-page">
|
||||||
|
<topBar class="define-topBar__components"></topBar>
|
||||||
|
|
||||||
|
<section class="hero-banner">
|
||||||
|
<div class="swiper-container">
|
||||||
|
<div class="swiper-wrapper">
|
||||||
|
<div
|
||||||
|
v-for="(item, index) in swiperData"
|
||||||
|
:key="index"
|
||||||
|
class="swiper-slide"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="slide-bg"
|
||||||
|
:style="{ backgroundImage: `url(${item.image})` }"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="slide-content">
|
||||||
|
<div class="slide-tag">{{ item.title }}</div>
|
||||||
|
<h1 class="slide-title">{{ item.subtitle }}</h1>
|
||||||
|
<p class="slide-description">{{ item.description }}</p>
|
||||||
|
<button class="cta-button" @click="handleSwiperButtonClick(item)">{{ item.buttonText }}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="swiper-pagination"></div>
|
||||||
|
<div class="swiper-button-prev"></div>
|
||||||
|
<div class="swiper-button-next"></div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- 产品展示 -->
|
||||||
|
<section class="products-section">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-header">
|
||||||
|
<h2 class="section-title">{{ t("home.products.title") }}</h2>
|
||||||
|
<p class="section-subtitle">{{ t("home.products.subtitle") }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 精选产品展示 -->
|
||||||
|
<div class="featured-products">
|
||||||
|
<div
|
||||||
|
v-for="(item, index) in currentProducts"
|
||||||
|
:key="item._id"
|
||||||
|
class="featured-product-card"
|
||||||
|
:class="`card-${index + 1}`"
|
||||||
|
@click="goProduct(item)"
|
||||||
|
>
|
||||||
|
<div v-if="item.isHot" class="hot-badge">{{ t("product.hot.badge") }}</div>
|
||||||
|
<div class="product-image-section">
|
||||||
|
<div class="product-image-container">
|
||||||
|
<img v-lazy="item.image" :alt="item.name" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="product-content-section">
|
||||||
|
<div class="product-category">{{ item.category }}</div>
|
||||||
|
<h3 class="product-title">{{ item.name }}</h3>
|
||||||
|
<p class="product-description">{{ item.description }}</p>
|
||||||
|
|
||||||
|
<div class="product-action">
|
||||||
|
<button class="learn-more-btn">
|
||||||
|
{{ t("product.learn-more") }}
|
||||||
|
<i class="arrow-icon"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 查看更多产品按钮 -->
|
||||||
|
<div class="more-products-section">
|
||||||
|
<button class="more-products-btn" @click="goToProductPage">
|
||||||
|
{{ t("home.products.view-all") }}
|
||||||
|
<i class="arrow-right"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<foot-bar></foot-bar>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
// 基础样式
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.home-page {
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
padding-top: 50px; // 为固定导航栏留出空间
|
||||||
|
|
||||||
|
// 4K 和超大屏幕适配
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
padding-top: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1440px) {
|
||||||
|
padding-top: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding-top: 45px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding-top: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding-top: 35px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 0 20px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
max-width: 1800px;
|
||||||
|
padding: 0 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
max-width: 1400px;
|
||||||
|
padding: 0 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
max-width: 1200px;
|
||||||
|
padding: 0 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 0 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hero Banner Swiper
|
||||||
|
.hero-banner {
|
||||||
|
position: relative;
|
||||||
|
height: 400px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
height: 640px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
height: 520px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
height: 440px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
height: 360px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
height: 320px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
height: 280px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
height: 260px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-container {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-slide {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide-bg {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移除遮罩层样式
|
||||||
|
|
||||||
|
.slide-content {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
text-align: center;
|
||||||
|
color: white;
|
||||||
|
max-width: 600px;
|
||||||
|
padding: 0 20px;
|
||||||
|
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7);
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
max-width: 1000px;
|
||||||
|
padding: 0 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
max-width: 800px;
|
||||||
|
padding: 0 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
max-width: 700px;
|
||||||
|
padding: 0 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
max-width: 90%;
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
max-width: 90%;
|
||||||
|
padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
max-width: 95%;
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
max-width: 95%;
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide-tag {
|
||||||
|
display: inline-block;
|
||||||
|
background: rgba(79, 140, 239, 0.9);
|
||||||
|
color: white;
|
||||||
|
padding: 6px 16px;
|
||||||
|
border-radius: 20px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide-title {
|
||||||
|
font-size: 46px;
|
||||||
|
font-weight: 700;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
letter-spacing: 1.5px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
font-size: 72px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
font-size: 60px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
font-size: 52px;
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
font-size: 40px;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
font-size: 32px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
font-size: 28px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
font-size: 24px;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide-description {
|
||||||
|
font-size: 18px;
|
||||||
|
opacity: 0.9;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
font-size: 16px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cta-button {
|
||||||
|
background: #4f8cef;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
padding: 12px 30px;
|
||||||
|
border-radius: 25px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #3a7bd8;
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 8px 20px rgba(79, 140, 239, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 10px 24px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 轮播图样式完成
|
||||||
|
|
||||||
|
// Swiper 控制按钮样式
|
||||||
|
.swiper-pagination {
|
||||||
|
bottom: 20px !important;
|
||||||
|
|
||||||
|
.swiper-pagination-bullet {
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
background: rgba(255, 255, 255, 0.5);
|
||||||
|
opacity: 1;
|
||||||
|
margin: 0 6px;
|
||||||
|
|
||||||
|
&.swiper-pagination-bullet-active {
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-button-prev,
|
||||||
|
.swiper-button-next {
|
||||||
|
color: white !important;
|
||||||
|
width: 40px !important;
|
||||||
|
height: 40px !important;
|
||||||
|
margin-top: -20px !important;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
font-size: 16px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 产品展示部分
|
||||||
|
.products-section {
|
||||||
|
padding: 60px 0;
|
||||||
|
background: #f8f9fa;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
padding: 120px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
padding: 100px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
padding: 80px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
padding: 50px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
padding: 40px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
padding: 30px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
padding: 25px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-header {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-title {
|
||||||
|
font-size: 32px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #2c3e50;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-subtitle {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #7f8c8d;
|
||||||
|
max-width: 600px;
|
||||||
|
margin: 0 auto;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 精选产品展示
|
||||||
|
.featured-products {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 24px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
|
||||||
|
// 4K 和超大屏幕
|
||||||
|
@media (min-width: 2560px) {
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 40px;
|
||||||
|
margin-bottom: 80px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1920px) and (max-width: 2559px) {
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 32px;
|
||||||
|
margin-bottom: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 1440px) and (max-width: 1919px) {
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 28px;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
gap: 24px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
gap: 30px;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
gap: 20px;
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 375px) {
|
||||||
|
gap: 16px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.featured-product-card {
|
||||||
|
background: white;
|
||||||
|
border-radius: 20px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
|
||||||
|
transition: all 0.4s ease;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
transform: translateY(-10px);
|
||||||
|
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
|
||||||
|
|
||||||
|
.product-image-container img {
|
||||||
|
transform: scale(1.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.learn-more-btn {
|
||||||
|
background: linear-gradient(135deg, #4f8cef, #3a7bd8);
|
||||||
|
color: white;
|
||||||
|
|
||||||
|
.arrow-icon {
|
||||||
|
transform: translateX(5px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.hot-badge {
|
||||||
|
position: absolute;
|
||||||
|
top: 20px;
|
||||||
|
right: 20px;
|
||||||
|
background: linear-gradient(135deg, #ff6b35, #f7931e);
|
||||||
|
color: white;
|
||||||
|
padding: 6px 12px;
|
||||||
|
border-radius: 20px;
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
z-index: 2;
|
||||||
|
box-shadow: 0 2px 8px rgba(255, 107, 53, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image-section {
|
||||||
|
height: 240px;
|
||||||
|
background: linear-gradient(135deg, #f8f9fa, #e9ecef);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-image-container {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 85%;
|
||||||
|
max-height: 85%;
|
||||||
|
object-fit: contain;
|
||||||
|
transition: transform 0.4s ease;
|
||||||
|
filter: drop-shadow(0 10px 20px rgba(0, 0, 0, 0.1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-content-section {
|
||||||
|
padding: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-category {
|
||||||
|
color: #4f8cef;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-title {
|
||||||
|
font-size: 22px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #2c3e50;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
line-height: 1.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-description {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #7f8c8d;
|
||||||
|
line-height: 1.4;
|
||||||
|
margin-bottom: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.product-action {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.learn-more-btn {
|
||||||
|
background: transparent;
|
||||||
|
color: #4f8cef;
|
||||||
|
border: 2px solid #4f8cef;
|
||||||
|
padding: 12px 30px;
|
||||||
|
border-radius: 30px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
.arrow-icon {
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border-top: 4px solid transparent;
|
||||||
|
border-bottom: 4px solid transparent;
|
||||||
|
border-left: 6px solid currentColor;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查看更多产品按钮
|
||||||
|
.more-products-section {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.more-products-btn {
|
||||||
|
background: linear-gradient(135deg, #4f8cef, #3a7bd8);
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
padding: 12px 30px;
|
||||||
|
border-radius: 25px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: linear-gradient(135deg, #3a7bd8, #2c5aa0);
|
||||||
|
transform: translateY(-2px);
|
||||||
|
box-shadow: 0 8px 20px rgba(79, 140, 239, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow-right {
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border-top: 4px solid transparent;
|
||||||
|
border-bottom: 4px solid transparent;
|
||||||
|
border-left: 6px solid white;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover .arrow-right {
|
||||||
|
transform: translateX(3px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
ref,
|
||||||
|
onBeforeMount
|
||||||
|
} from 'vue'
|
||||||
|
import {
|
||||||
|
useI18n
|
||||||
|
} from "vue-i18n";
|
||||||
|
import zhContent from '~/pages/protocol/components/privacy-policy/zh-page.vue';
|
||||||
|
import enContent from '~/pages/protocol/components/privacy-policy/en-page.vue';
|
||||||
|
import langToCheck from '@/hook/lang.js';
|
||||||
|
const {
|
||||||
|
t
|
||||||
|
} = useI18n();
|
||||||
|
const langIs = ref('')
|
||||||
|
useHead({
|
||||||
|
title: t('foot.privacy-policy'),
|
||||||
|
})
|
||||||
|
onBeforeMount(()=>{
|
||||||
|
langIs.value = langToCheck()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<zh-content v-if="langIs == 'zh-Hans' "></zh-content>
|
||||||
|
<ja-content v-else-if="langIs == 'ja' "></ja-content>
|
||||||
|
<en-content v-else></en-content>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
@ -0,0 +1,374 @@
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
ref,
|
||||||
|
reactive,
|
||||||
|
onBeforeMount,
|
||||||
|
onBeforeUnmount,
|
||||||
|
onActivated,
|
||||||
|
onMounted
|
||||||
|
} from "vue";
|
||||||
|
import {
|
||||||
|
GetProductDetailApi
|
||||||
|
} from "@/service/api.js";
|
||||||
|
// 语言判断
|
||||||
|
import langToCheck from "@/hook/lang.js";
|
||||||
|
import {
|
||||||
|
useI18n
|
||||||
|
} from "vue-i18n";
|
||||||
|
import topBar from "@/components/top/title-bar.vue";
|
||||||
|
import footBar from "@/components/bottom/foot-bar.vue";
|
||||||
|
// // 折叠面板
|
||||||
|
// import collapse from "./components/collapse.vue";
|
||||||
|
// //详细参数,查看更多
|
||||||
|
// import detailParams from "./components/detail-params.vue";
|
||||||
|
import {
|
||||||
|
useRoute
|
||||||
|
} from '#imports';
|
||||||
|
const {
|
||||||
|
t
|
||||||
|
} = useI18n();
|
||||||
|
const route = useRoute();
|
||||||
|
const langIs = ref('');
|
||||||
|
onBeforeMount(()=>{
|
||||||
|
langIs.value = langToCheck()
|
||||||
|
})
|
||||||
|
//监听返回顶部
|
||||||
|
let proId = ref("");
|
||||||
|
let proName = ref("");
|
||||||
|
let proImgPath = reactive({
|
||||||
|
data: []
|
||||||
|
});
|
||||||
|
const productSpecs = reactive({
|
||||||
|
data: []
|
||||||
|
});
|
||||||
|
|
||||||
|
// 展示
|
||||||
|
let tabCollection = reactive([]);
|
||||||
|
let isMaskShow = ref(true); //是否显示遮罩层
|
||||||
|
|
||||||
|
onBeforeMount(() => {
|
||||||
|
tabCollection.push({
|
||||||
|
name: t("detail.summary"),
|
||||||
|
value: 0,
|
||||||
|
});
|
||||||
|
tabContent.value = tabCollection[0].name
|
||||||
|
if (route.query.id) {
|
||||||
|
proId.value = route.query.id;
|
||||||
|
GetSpaceRequest(proId.value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
onBeforeUnmount(()=>{
|
||||||
|
window.removeEventListener('scroll', HandleScroll);
|
||||||
|
window.removeEventListener('resize', UpdateDropdown);
|
||||||
|
})
|
||||||
|
|
||||||
|
// 监听页面滚动事件
|
||||||
|
onMounted(() => {
|
||||||
|
window.addEventListener('scroll', HandleScroll);
|
||||||
|
window.addEventListener('resize', UpdateDropdown);
|
||||||
|
});
|
||||||
|
|
||||||
|
const GetSpaceRequest = (Id) => {
|
||||||
|
let parmas = {
|
||||||
|
locale: langIs.value,
|
||||||
|
product_id: Id,
|
||||||
|
};
|
||||||
|
GetProductDetailApi(parmas).then((res) => {
|
||||||
|
if (res.info.children[0]) {
|
||||||
|
let received = res.info.children[0];
|
||||||
|
productSpecs.data = received.product_specs;
|
||||||
|
if (productSpecs.data.length > 0) {
|
||||||
|
tabCollection.push({
|
||||||
|
name: t("detail.specs"),
|
||||||
|
value: 1
|
||||||
|
}
|
||||||
|
// ,{
|
||||||
|
// name: t("page.support"),
|
||||||
|
// value: 2
|
||||||
|
// }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
proImgPath.data = received.product_detail_imgs;
|
||||||
|
proName.value = received.product_name;
|
||||||
|
document.title = received.product_name;
|
||||||
|
isMaskShow.value = false
|
||||||
|
}
|
||||||
|
}).catch(isMaskShow.value = false)
|
||||||
|
};
|
||||||
|
let tabValue = ref(0);
|
||||||
|
let tabContent = ref("");
|
||||||
|
let tabChange = (item,index) => {
|
||||||
|
tabValue.value = index;
|
||||||
|
tabContent.value = item.name;
|
||||||
|
};
|
||||||
|
let scrollTop = ref(0); // 监听滚动事件得到的值
|
||||||
|
const isDropOpen = ref(false); //遮罩关闭跟隐藏
|
||||||
|
const UpdateDropdown = () =>{
|
||||||
|
isDropOpen.value = false
|
||||||
|
}
|
||||||
|
// 滚动监听
|
||||||
|
const HandleScroll = () => {
|
||||||
|
scrollTop.value = window.scrollY
|
||||||
|
|| document.documentElement.scrollTop;
|
||||||
|
isDropOpen.value = false
|
||||||
|
};
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="page">
|
||||||
|
<topBar></topBar>
|
||||||
|
<div class="sticky-page-layout" id="sticky-page-layout">
|
||||||
|
<div class="nav-sticky" :class="{ 'nav-sticky--active': scrollTop >= 100 }">
|
||||||
|
<div class="nav-sticky__center">
|
||||||
|
<h1 class="nav-sticky__center__left">{{ proName }}</h1>
|
||||||
|
<div class="nav-sticky__center__right" @click="isDropOpen = !isDropOpen">
|
||||||
|
<div class="nav-sticky__center__right__item"
|
||||||
|
:class="{'nav-sticky__center__right--Active': tabValue == item.value}"
|
||||||
|
@click="tabChange(item,index)" v-for="(item, index) in tabCollection"
|
||||||
|
:key="'detail' + index">
|
||||||
|
{{ item.name }}
|
||||||
|
</div>
|
||||||
|
<div class="nav-sticky__center__right__dropdown">
|
||||||
|
<div class="nav-sticky__center__right__dropdown__up">
|
||||||
|
{{tabContent}}
|
||||||
|
<span class="arrow-down iconfont icon-xiajiantou"></span>
|
||||||
|
</div>
|
||||||
|
<ul class="nav-sticky__center__right__dropdown__menu" v-if="isDropOpen">
|
||||||
|
<li @click="tabChange(item,index)"
|
||||||
|
class="nav-sticky__center__right__dropdown__menu__item"
|
||||||
|
:class="{'nav-sticky__center__right__dropdown__menu__item--Active': tabValue == item.value}"
|
||||||
|
v-for="(item, index) in tabCollection"
|
||||||
|
:key="'detail-dropdown' + index">{{item.name}}</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="tabValue == 0">
|
||||||
|
<div class="detail-banner">
|
||||||
|
<img class="detail-banner__avater" v-lazy="proImgPath.data[0]" />
|
||||||
|
</div>
|
||||||
|
<!-- 介绍方格 -->
|
||||||
|
<div class="product__box">
|
||||||
|
<img class="product__box__avater" v-lazy="proImgPath.data[1]" />
|
||||||
|
</div>
|
||||||
|
<!-- 液晶显示屏-->
|
||||||
|
<div class="screen" style="background-color: #1b1b1b">
|
||||||
|
<div class="screen__box">
|
||||||
|
<img class="screen__box__img" v-lazy="proImgPath.data[2]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 断电 -->
|
||||||
|
<div class="outage">
|
||||||
|
<img class="outage__avater__img" v-lazy="proImgPath.data[3]" />
|
||||||
|
</div>
|
||||||
|
<!-- 切换面板 -->
|
||||||
|
<div class="switchboard">
|
||||||
|
<img class="screen__box__avater__img" v-lazy="proImgPath.data[4]" />
|
||||||
|
</div>
|
||||||
|
<!-- 端口介绍 -->
|
||||||
|
<div class="port" style="background-color: #0b0d0f">
|
||||||
|
<div class="port__box">
|
||||||
|
<div class="port__box__content">
|
||||||
|
<div class="port__box__content__detail">
|
||||||
|
<img class="port__box__content__detail__avater" v-lazy="proImgPath.data[5]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 循环 -->
|
||||||
|
<div class="loop">
|
||||||
|
<div class="loop__box">
|
||||||
|
<img class="loop__box__avater" v-lazy="proImgPath.data[6]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 保护系统-->
|
||||||
|
<div class="protection">
|
||||||
|
<div class="protection__box">
|
||||||
|
<div class="protection__box__avater">
|
||||||
|
<img class="protection__box__avater__picture" v-lazy="proImgPath.data[7]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 展示 -->
|
||||||
|
<div class="show">
|
||||||
|
<div class="show__box">
|
||||||
|
<div class="protection__box__avater">
|
||||||
|
<img class="protection__box__avater__picture" v-lazy="proImgPath.data[8]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-else-if="tabValue == 1">
|
||||||
|
<!-- <detail-params :detailList="productSpecs.data"></detail-params> -->
|
||||||
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
<!-- <collapse></collapse> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<foot-bar></foot-bar>
|
||||||
|
<!-- 尾部 -->
|
||||||
|
<div class="load-mask" v-if="isMaskShow">
|
||||||
|
<div class="spinner">
|
||||||
|
<div class="spinner__item bounce1"></div>
|
||||||
|
<div class="spinner__item bounce2"></div>
|
||||||
|
<div class="spinner__item bounce3"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.page {
|
||||||
|
background: #000;
|
||||||
|
color: #fff;
|
||||||
|
font-family: MiSans-Light;
|
||||||
|
}
|
||||||
|
|
||||||
|
$tone-color: #fff; //字体主色调
|
||||||
|
|
||||||
|
@mixin detailWidth {
|
||||||
|
width: 9.8rem;
|
||||||
|
|
||||||
|
@media (max-width: 1600px) {
|
||||||
|
width: 750px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-banner {
|
||||||
|
width: 100%;
|
||||||
|
color: $tone-color;
|
||||||
|
|
||||||
|
&__avater {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 850px) {
|
||||||
|
padding-top: 1.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 650px) {
|
||||||
|
padding-top: 2.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 方框介绍
|
||||||
|
.product__box {
|
||||||
|
padding: 2rem 0 0rem;
|
||||||
|
@include detailWidth;
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
padding: 3rem 0 0;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
margin: 0 auto;
|
||||||
|
height: auto;
|
||||||
|
color: $tone-color;
|
||||||
|
|
||||||
|
&__avater {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//液晶显示屏
|
||||||
|
.screen {
|
||||||
|
margin-top: 2rem;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
margin-top: 5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
padding: 150px 0 70px;
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
padding: 3rem 0 4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@include detailWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 切换面板
|
||||||
|
.switchboard {
|
||||||
|
@include detailWidth;
|
||||||
|
margin: 1.5rem auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
//端口介绍
|
||||||
|
.port {
|
||||||
|
padding: 2.5rem 0;
|
||||||
|
margin: 0.3rem 0 2rem;
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
padding: 3rem 0 0;
|
||||||
|
margin: 2rem auto 5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
@include detailWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 循环
|
||||||
|
.loop {
|
||||||
|
&__box {
|
||||||
|
margin: 3rem auto 0;
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
margin: 4rem auto 3rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
@include detailWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保护系统
|
||||||
|
.protection {
|
||||||
|
&__box {
|
||||||
|
@include detailWidth;
|
||||||
|
margin: 3rem auto 2rem;
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
width: 90%;
|
||||||
|
margin: 3rem auto 5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//展示
|
||||||
|
.show {
|
||||||
|
margin: 0 auto;
|
||||||
|
@include detailWidth;
|
||||||
|
padding-bottom: 3rem;
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
width: 100%;
|
||||||
|
padding-bottom: 5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,927 @@
|
||||||
|
// 方框介绍
|
||||||
|
.mobile-product {
|
||||||
|
width: 17.54rem;
|
||||||
|
margin: 1.27rem auto 0.77rem;
|
||||||
|
height: 15.25rem;
|
||||||
|
|
||||||
|
&__sec {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
@mixin secStyle {
|
||||||
|
width: 6.63rem;
|
||||||
|
height: 4.74rem;
|
||||||
|
background: linear-gradient(182deg, #232E3C, #05080B);
|
||||||
|
border-radius: 0.27rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item1 {
|
||||||
|
@include secStyle;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
background: linear-gradient(128deg, #0FFFC4 0%, #0FFFC4 40%, #006AFF 60%, #006AFF 100%, );
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
margin-top: 0.27rem;
|
||||||
|
height: 1.55rem;
|
||||||
|
font-size: 1.11rem;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 1.24rem;
|
||||||
|
width: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
width: fit-content;
|
||||||
|
height: 1.02rem;
|
||||||
|
font-size: 0.74rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
line-height: 0.93rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item2 {
|
||||||
|
@include secStyle;
|
||||||
|
width: 4.71rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
margin: 0.31rem 0 0.21rem;
|
||||||
|
width: 2.23rem;
|
||||||
|
height: 2.72rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
width: fit-content;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
width: fit-content;
|
||||||
|
height: 0.96rem;
|
||||||
|
line-height: 0.89rem;
|
||||||
|
font-size: 0.89rem;
|
||||||
|
font-weight: 600;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
height: 0.96rem;
|
||||||
|
font-size: 0.52rem;
|
||||||
|
line-height: 1.02rem;
|
||||||
|
font-weight: 600;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text3 {
|
||||||
|
padding-left: 0.15rem;
|
||||||
|
height: 0.96rem;
|
||||||
|
line-height: 1.05rem;
|
||||||
|
font-size: 0.52rem;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item3 {
|
||||||
|
@include secStyle;
|
||||||
|
width: 5.73rem;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
margin-top: 0.71rem;
|
||||||
|
width: 1.61rem;
|
||||||
|
height: 2.54rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
margin-top: 0.52rem;
|
||||||
|
width: fit-content;
|
||||||
|
height: 1.55rem;
|
||||||
|
font-size: 0.58rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
background: linear-gradient(81deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__sec2 {
|
||||||
|
margin-top: 0.27rem;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 6.63rem 6.63rem 3.81rem;
|
||||||
|
grid-template-rows: 4.74rem 4.74rem;
|
||||||
|
grid-row-gap: 0.27rem;
|
||||||
|
grid-column-gap: 0.27rem;
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
grid-template-areas:
|
||||||
|
'gap1 gap1 gap2'
|
||||||
|
'gap3 gap4 gap4';
|
||||||
|
|
||||||
|
&__item1 {
|
||||||
|
grid-area: gap1;
|
||||||
|
background: url('/static/product/detail/n051/solar__2.webp') center center/cover;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: flex-end;
|
||||||
|
border-radius: 0.62rem;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
padding-right: 0.31rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-end;
|
||||||
|
|
||||||
|
&__top {
|
||||||
|
display: flex;
|
||||||
|
&__text {
|
||||||
|
height: 1.14rem;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0, #0FFFC4 20%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
font-size: 0.43rem;
|
||||||
|
padding: 0.43rem 0 0 0.15rem;
|
||||||
|
background: linear-gradient(87deg, #006AFF 0, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__bottom {
|
||||||
|
height: 0.83rem;
|
||||||
|
font-size: 0.52rem;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
color: #FFFFFF;
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-size: 0.43rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item2 {
|
||||||
|
grid-area: gap2;
|
||||||
|
background: url('/static/product/detail/n051/charging.webp') center center/cover;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 0.27rem;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
margin-top: 1.67rem;
|
||||||
|
width: fit-content;
|
||||||
|
height: 0.58rem;
|
||||||
|
line-height: 0.58rem;
|
||||||
|
font-size: 0.58rem;
|
||||||
|
font-weight: 600;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
width: fit-content;
|
||||||
|
height: 0.58rem;
|
||||||
|
line-height: 0.58rem;
|
||||||
|
font-size: 0.37rem;
|
||||||
|
background: linear-gradient(90deg, #0FFFC4 0%, #0FFFC4 70%, #006AFF 100%);
|
||||||
|
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text3 {
|
||||||
|
margin-top: 0.86rem;
|
||||||
|
height: 0.99rem;
|
||||||
|
font-size: 0.55rem;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item3 {
|
||||||
|
grid-area: gap3;
|
||||||
|
background: url('/static/product/detail/n051/rate.webp') center center/cover;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 0.27rem;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
transform: translateY(1.42rem);
|
||||||
|
width: fit-content;
|
||||||
|
height: 1.11rem;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
transform: translateY(1.86rem);
|
||||||
|
width: 5.27rem;
|
||||||
|
height: 0.71rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-size: 0.52rem;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FEFEFE;
|
||||||
|
line-height: 0.71rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item4 {
|
||||||
|
grid-area: gap4;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background: linear-gradient(182deg, #232E3C, #05080B);
|
||||||
|
border-radius: 0.27rem;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
margin-top: 0.46rem;
|
||||||
|
width: 4.4rem;
|
||||||
|
height: 4.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
width: fit-content;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
height: fit-content;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background: linear-gradient(266deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
height: 1.27rem;
|
||||||
|
font-size: 0.55rem;
|
||||||
|
line-height: 0.93rem;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//放大视频
|
||||||
|
.mobile-Energy {
|
||||||
|
width: 18.1rem;
|
||||||
|
height: 9.79rem;
|
||||||
|
margin: 0 auto;
|
||||||
|
&__avater {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//白天黑夜
|
||||||
|
.mobile-sun {
|
||||||
|
width: 100%;
|
||||||
|
height: 19.06rem;
|
||||||
|
&__img {
|
||||||
|
width: 100%;
|
||||||
|
height: 9.36rem;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
transform: translateY(0.24rem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//电流视频
|
||||||
|
.mobile-filter-video {
|
||||||
|
&__box {
|
||||||
|
width: 16.02rem;
|
||||||
|
height: 9.42rem;
|
||||||
|
margin: 4.03rem auto 0;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__avater {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
width: fit-content;
|
||||||
|
position: absolute;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
top: 0;
|
||||||
|
width: 8.06rem;
|
||||||
|
&__text {
|
||||||
|
display: flex;
|
||||||
|
width: fit-content;
|
||||||
|
height: 1.55rem;
|
||||||
|
font-size: 1.55rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 1.55rem;
|
||||||
|
background: linear-gradient(128deg, #0FFFC4 20%, #006AFF 100%, );
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
font-size: 0.38rem;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #dfdfdf;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//AC太阳能板
|
||||||
|
.Plugged {
|
||||||
|
margin-top: 5.36rem;
|
||||||
|
&__bar-view {
|
||||||
|
width: 16.52rem;
|
||||||
|
height: 0.86rem;
|
||||||
|
margin: 1.55rem auto 0;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
position: relative;
|
||||||
|
&__list {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
color: #C1C1C1;
|
||||||
|
border-bottom: 0.09rem solid #646464;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding-bottom: 0.15rem;
|
||||||
|
cursor: pointer;
|
||||||
|
margin-right: 0;
|
||||||
|
font-size: 0.46rem;
|
||||||
|
position: relative;
|
||||||
|
&::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
bottom: -0.09rem;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 0.93rem;
|
||||||
|
transition: all 0.3s;
|
||||||
|
height: 0.09rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-li--active {
|
||||||
|
&::after {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//AC太阳能板
|
||||||
|
&__swiper {
|
||||||
|
margin: 1.11rem auto 2.54rem;
|
||||||
|
width:15.25rem;
|
||||||
|
height:12.71rem;
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
|
&__full {
|
||||||
|
width:15.4rem;
|
||||||
|
height:12.71rem;
|
||||||
|
&__item {
|
||||||
|
//显示小时裁决样式
|
||||||
|
@mixin hoursStyle {
|
||||||
|
display: flex;
|
||||||
|
height: 1.79rem;
|
||||||
|
align-items: flex-end;
|
||||||
|
&__right {
|
||||||
|
font-size: 0.43rem;
|
||||||
|
line-height: 0.62rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-size: 1.73rem;
|
||||||
|
height: 1.79rem;
|
||||||
|
line-height: 1.79rem;
|
||||||
|
background: linear-gradient(128deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
height: 1.79rem;
|
||||||
|
font-size: 0.58rem;
|
||||||
|
line-height: 2.69rem;
|
||||||
|
padding-left: 0.21rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
margin-top: 1.02rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
width:15.5rem;
|
||||||
|
&__img {
|
||||||
|
width:7.16rem;
|
||||||
|
height:5.76rem;
|
||||||
|
position: relative;
|
||||||
|
img {
|
||||||
|
width:7.16rem;
|
||||||
|
height:5.76rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__power {
|
||||||
|
font-size: 0.58rem;
|
||||||
|
position: absolute;
|
||||||
|
top: 1.14rem;
|
||||||
|
left: 0.71rem;
|
||||||
|
color: #CCCCCC;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__hour {
|
||||||
|
margin:0.55rem 0 0 0.77rem ;
|
||||||
|
@include hoursStyle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box2 {
|
||||||
|
width:15.25rem;
|
||||||
|
height:5.79rem;
|
||||||
|
margin-top: 1.02rem;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__img2 {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__power {
|
||||||
|
font-size: 0.58rem;
|
||||||
|
position: absolute;
|
||||||
|
top: 1.24rem;
|
||||||
|
left: 1.36rem;
|
||||||
|
color: #CCCCCC;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
z-index: 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__hour {
|
||||||
|
position: absolute;
|
||||||
|
top: 0.55rem;
|
||||||
|
right: 4.09rem;
|
||||||
|
@include hoursStyle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box3 {
|
||||||
|
margin-top: 2.54rem;
|
||||||
|
&__img3 {
|
||||||
|
width:12.46rem;
|
||||||
|
height:4.21rem;
|
||||||
|
padding-left: 2.82rem;
|
||||||
|
img {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box4 {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin-top: 3.81rem;
|
||||||
|
&__img4{
|
||||||
|
width:12.09rem;
|
||||||
|
height:3.96rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__img5 {
|
||||||
|
width:11.56rem;
|
||||||
|
height:4.24rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__hour {
|
||||||
|
@include hoursStyle;
|
||||||
|
position: absolute;
|
||||||
|
top: 2.54rem;
|
||||||
|
right: 2.04rem;
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
font-size: 1.73rem;
|
||||||
|
height: 3.44rem;
|
||||||
|
line-height: 3.44rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
font-size: 0.77rem;
|
||||||
|
line-height: 0.77rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__hour2 {
|
||||||
|
@include hoursStyle;
|
||||||
|
position: absolute;
|
||||||
|
top: 2.04rem;
|
||||||
|
right: 4.46rem;
|
||||||
|
&__left {
|
||||||
|
font-size: 1.64rem;
|
||||||
|
height: 3.44rem;
|
||||||
|
line-height: 3.68rem;
|
||||||
|
}
|
||||||
|
&__right {
|
||||||
|
font-size: 0.58rem;
|
||||||
|
line-height: 1.14rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 快充进度条
|
||||||
|
.Fast {
|
||||||
|
width: 18.6rem;
|
||||||
|
margin: 0 auto 0;
|
||||||
|
padding-left: 1.02rem;
|
||||||
|
color: #fff;
|
||||||
|
h2 {
|
||||||
|
height: 1.86rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1.86rem;
|
||||||
|
color: #FFFFFF;
|
||||||
|
width: fit-content;
|
||||||
|
font-size: 0.86rem;
|
||||||
|
overflow: hidden;
|
||||||
|
p{
|
||||||
|
display: inline-block;
|
||||||
|
height: fit-content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-size: 0.46rem;
|
||||||
|
height: fit-content;
|
||||||
|
line-height: 0.93rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__progress-first {
|
||||||
|
margin-top: 1.33rem;
|
||||||
|
&__content {
|
||||||
|
height: 0.86rem;
|
||||||
|
transition: width .5s ease-out;
|
||||||
|
background: linear-gradient(125deg, #0FFFC4 0,#0FFFC4 30%, #006AFF 70%,#006AFF 100%);
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
width: 3.65rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
&__progress-second {
|
||||||
|
margin-top: 1.33rem;
|
||||||
|
|
||||||
|
text {
|
||||||
|
color: #C5C5C5;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
width: 0;
|
||||||
|
height: 0.86rem;
|
||||||
|
background: #C5C5C5;
|
||||||
|
transition: width .5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
width: 11.19rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//芯片BMS
|
||||||
|
.battery {
|
||||||
|
margin: 4.58rem auto 0;
|
||||||
|
width: 17.54rem;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
display: flex;
|
||||||
|
margin-top: 1.61rem;
|
||||||
|
|
||||||
|
&__decorate {
|
||||||
|
width: 9.48rem;
|
||||||
|
height: 7.53rem;
|
||||||
|
border-radius: 0.27rem;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background: linear-gradient(182deg, #3B3B3B, #05080B);
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
width: 6.72rem;
|
||||||
|
height: 4.34rem;
|
||||||
|
margin-right: 0.77rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__img2 {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__img3 {
|
||||||
|
width: 5.36rem;
|
||||||
|
height: 5.95rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
margin-left: 0.62rem;
|
||||||
|
width: 8.06rem;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
height: 1.02rem;
|
||||||
|
font-size: 0.62rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 0.93rem;
|
||||||
|
margin: 1.42rem 0 0.49rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-size: 0.4rem;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
color: #f5f5f5;
|
||||||
|
line-height: 0.65rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content2 {
|
||||||
|
text-align: right;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0.96rem;
|
||||||
|
h2{
|
||||||
|
font-size: 0.62rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin proIteTitle {
|
||||||
|
height: 1.36rem;
|
||||||
|
font-size: 0.68rem;
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 0.46rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin sectionBox {
|
||||||
|
margin: 0.52rem auto 0;
|
||||||
|
width: 16.43rem;
|
||||||
|
height: 10.41rem;
|
||||||
|
background: linear-gradient(182deg, #3B3B3B, #05080B);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 0.21rem;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$caitainerWidth: 18.32rem;
|
||||||
|
//15ports
|
||||||
|
.prots {
|
||||||
|
width: $caitainerWidth;
|
||||||
|
margin: 5.95rem auto 0;
|
||||||
|
h2 {
|
||||||
|
@include proIteTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
@include sectionBox;
|
||||||
|
&__text {
|
||||||
|
font-size: 0.77rem;
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 1.55rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//智能APP
|
||||||
|
.Intelligent-App {
|
||||||
|
width: $caitainerWidth;
|
||||||
|
margin: 3.68rem auto 3.72rem;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
@include proIteTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
margin-top: 0.52rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 16.74rem;
|
||||||
|
height: 9.2rem;
|
||||||
|
border-radius: 1.02rem;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
position: absolute;
|
||||||
|
top: 3.72rem;
|
||||||
|
left: 1.61rem;
|
||||||
|
width: 5.64rem;
|
||||||
|
height: 1.79rem;
|
||||||
|
font-size: 0.55rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 0.83rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text-lang {
|
||||||
|
width: 3.72rem;
|
||||||
|
left: 3.16rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
position: absolute;
|
||||||
|
width: fit-content;
|
||||||
|
height: 0.77rem;
|
||||||
|
font-size: 0.55rem;
|
||||||
|
padding-bottom: 1.27rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
text-align: center;
|
||||||
|
color: #FFFFFF;
|
||||||
|
transform: translate(10%);
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
&__text2-lang{
|
||||||
|
position: absolute;
|
||||||
|
transform: translate(40%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Whats
|
||||||
|
.boat {
|
||||||
|
width: $caitainerWidth;
|
||||||
|
margin: 3.06rem auto 2.69rem;
|
||||||
|
h2 {
|
||||||
|
@include proIteTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
@include sectionBox;
|
||||||
|
background: linear-gradient(182deg, #120F0F, #2D2D2D);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//更多产品
|
||||||
|
.More {
|
||||||
|
width: 18.56rem;
|
||||||
|
margin: 1.42rem auto 2.04rem;
|
||||||
|
|
||||||
|
&__top {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 0 1.02rem 0;
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 0.58rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 1.27rem;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: flex-end;
|
||||||
|
height: fit-content;
|
||||||
|
width: 16.52rem;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 7.9rem;
|
||||||
|
height: 11.47rem;
|
||||||
|
background: #121212;
|
||||||
|
border-radius: 0.27rem;
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
//手机端不能有hover事件
|
||||||
|
&:hover {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
width: 4.8rem;
|
||||||
|
height: 3.84rem;
|
||||||
|
margin-top: 2.04rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 0.68rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 1.02rem;
|
||||||
|
margin-top: 0.58rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subTit {
|
||||||
|
font-size: 0.46rem;
|
||||||
|
width: fit-content;
|
||||||
|
color: #478fff;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #949494;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__bottom {
|
||||||
|
padding: 0.52rem 1.55rem 0 0;
|
||||||
|
font-size: 0.58rem;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 0.77rem;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,927 @@
|
||||||
|
// 方框介绍
|
||||||
|
.mobile-product {
|
||||||
|
width: 566px;
|
||||||
|
margin: 41px auto 25px;
|
||||||
|
height: 492px;
|
||||||
|
|
||||||
|
&__sec {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
@mixin secStyle {
|
||||||
|
width: 214px;
|
||||||
|
height: 153px;
|
||||||
|
background: linear-gradient(182deg, #232E3C, #05080B);
|
||||||
|
border-radius: 9px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item1 {
|
||||||
|
@include secStyle;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
background: linear-gradient(128deg, #0FFFC4 0%, #0FFFC4 40%, #006AFF 60%, #006AFF 100%, );
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
margin-top: 9px;
|
||||||
|
height: 50px;
|
||||||
|
font-size: 36px;
|
||||||
|
font-weight: 600;
|
||||||
|
line-height: 40px;
|
||||||
|
width: fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
width: fit-content;
|
||||||
|
height: 33px;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item2 {
|
||||||
|
@include secStyle;
|
||||||
|
width: 152px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
margin: 10px 0 7px;
|
||||||
|
width: 72px;
|
||||||
|
height: 88px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
width: fit-content;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
width: fit-content;
|
||||||
|
height: 31px;
|
||||||
|
line-height: 29px;
|
||||||
|
font-size: 29px;
|
||||||
|
font-weight: 600;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
height: 31px;
|
||||||
|
font-size: 17px;
|
||||||
|
line-height: 33px;
|
||||||
|
font-weight: 600;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text3 {
|
||||||
|
padding-left: 5px;
|
||||||
|
height: 31px;
|
||||||
|
line-height: 34px;
|
||||||
|
font-size: 17px;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item3 {
|
||||||
|
@include secStyle;
|
||||||
|
width: 185px;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
margin-top: 23px;
|
||||||
|
width: 52px;
|
||||||
|
height: 82px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
margin-top: 17px;
|
||||||
|
width: fit-content;
|
||||||
|
height: 50px;
|
||||||
|
font-size: 19px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
background: linear-gradient(81deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__sec2 {
|
||||||
|
margin-top: 9px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 214px 214px 123px;
|
||||||
|
grid-template-rows: 153px 153px;
|
||||||
|
grid-row-gap: 9px;
|
||||||
|
grid-column-gap: 9px;
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
grid-template-areas:
|
||||||
|
'gap1 gap1 gap2'
|
||||||
|
'gap3 gap4 gap4';
|
||||||
|
|
||||||
|
&__item1 {
|
||||||
|
grid-area: gap1;
|
||||||
|
background: url('/static/product/detail/n051/solar__2.webp') center center/cover;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: flex-end;
|
||||||
|
border-radius: 20px;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
padding-right: 10px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-end;
|
||||||
|
|
||||||
|
&__top {
|
||||||
|
display: flex;
|
||||||
|
&__text {
|
||||||
|
height: 37px;
|
||||||
|
font-size: 26px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0, #0FFFC4 20%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 14px 0 0 5px;
|
||||||
|
background: linear-gradient(87deg, #006AFF 0, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__bottom {
|
||||||
|
height: 27px;
|
||||||
|
font-size: 17px;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
color: #FFFFFF;
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item2 {
|
||||||
|
grid-area: gap2;
|
||||||
|
background: url('/static/product/detail/n051/charging.webp') center center/cover;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 9px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
margin-top: 54px;
|
||||||
|
width: fit-content;
|
||||||
|
height: 19px;
|
||||||
|
line-height: 19px;
|
||||||
|
font-size: 19px;
|
||||||
|
font-weight: 600;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
width: fit-content;
|
||||||
|
height: 19px;
|
||||||
|
line-height: 19px;
|
||||||
|
font-size: 12px;
|
||||||
|
background: linear-gradient(90deg, #0FFFC4 0%, #0FFFC4 70%, #006AFF 100%);
|
||||||
|
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text3 {
|
||||||
|
margin-top: 28px;
|
||||||
|
height: 32px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item3 {
|
||||||
|
grid-area: gap3;
|
||||||
|
background: url('/static/product/detail/n051/rate.webp') center center/cover;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 9px;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
transform: translateY(46px);
|
||||||
|
width: fit-content;
|
||||||
|
height: 36px;
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
transform: translateY(60px);
|
||||||
|
width: 170px;
|
||||||
|
height: 23px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-size: 17px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FEFEFE;
|
||||||
|
line-height: 23px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item4 {
|
||||||
|
grid-area: gap4;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background: linear-gradient(182deg, #232E3C, #05080B);
|
||||||
|
border-radius: 9px;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
margin-top: 15px;
|
||||||
|
width: 142px;
|
||||||
|
height: 142px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
width: fit-content;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
height: fit-content;
|
||||||
|
font-size: 26px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background: linear-gradient(266deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
height: 41px;
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 30px;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//放大视频
|
||||||
|
.mobile-Energy {
|
||||||
|
width: 584px;
|
||||||
|
height: 316px;
|
||||||
|
margin: 0 auto;
|
||||||
|
&__avater {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//白天黑夜
|
||||||
|
.mobile-sun {
|
||||||
|
width: 100%;
|
||||||
|
height: 615px;
|
||||||
|
&__img {
|
||||||
|
width: 100%;
|
||||||
|
height: 302px;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
transform: translateY(8px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//电流视频
|
||||||
|
.mobile-filter-video {
|
||||||
|
&__box {
|
||||||
|
width: 517px;
|
||||||
|
height: 304px;
|
||||||
|
margin: 130px auto 0;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__avater {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
width: fit-content;
|
||||||
|
position: absolute;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
top: 0;
|
||||||
|
width: 260px;
|
||||||
|
&__text {
|
||||||
|
display: flex;
|
||||||
|
width: fit-content;
|
||||||
|
height: 50px;
|
||||||
|
font-size: 50px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 50px;
|
||||||
|
background: linear-gradient(128deg, #0FFFC4 20%, #006AFF 100%, );
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
font-size: 12.5px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #dfdfdf;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//AC太阳能板
|
||||||
|
.Plugged {
|
||||||
|
margin-top: 173px;
|
||||||
|
&__bar-view {
|
||||||
|
width: 533px;
|
||||||
|
height: 28px;
|
||||||
|
margin: 50px auto 0;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
position: relative;
|
||||||
|
&__list {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
color: #C1C1C1;
|
||||||
|
border-bottom: 3px solid #646464;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding-bottom: 5px;
|
||||||
|
cursor: pointer;
|
||||||
|
margin-right: 0;
|
||||||
|
font-size: 15px;
|
||||||
|
position: relative;
|
||||||
|
&::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
bottom: -3px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 30px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
height: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-li--active {
|
||||||
|
&::after {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//AC太阳能板
|
||||||
|
&__swiper {
|
||||||
|
margin: 36px auto 82px;
|
||||||
|
width:492px;
|
||||||
|
height:410px;
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
|
&__full {
|
||||||
|
width:497px;
|
||||||
|
height:410px;
|
||||||
|
&__item {
|
||||||
|
//显示小时裁决样式
|
||||||
|
@mixin hoursStyle {
|
||||||
|
display: flex;
|
||||||
|
height: 58px;
|
||||||
|
align-items: flex-end;
|
||||||
|
&__right {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-size: 56px;
|
||||||
|
height: 58px;
|
||||||
|
line-height: 58px;
|
||||||
|
background: linear-gradient(128deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
height: 58px;
|
||||||
|
font-size: 19px;
|
||||||
|
line-height: 87px;
|
||||||
|
padding-left: 7px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
margin-top: 33px;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
width:500px;
|
||||||
|
&__img {
|
||||||
|
width:231px;
|
||||||
|
height:186px;
|
||||||
|
position: relative;
|
||||||
|
img {
|
||||||
|
width:231px;
|
||||||
|
height:186px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__power {
|
||||||
|
font-size: 19px;
|
||||||
|
position: absolute;
|
||||||
|
top: 37px;
|
||||||
|
left: 23px;
|
||||||
|
color: #CCCCCC;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__hour {
|
||||||
|
margin:18px 0 0 25px ;
|
||||||
|
@include hoursStyle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box2 {
|
||||||
|
width:492px;
|
||||||
|
height:187px;
|
||||||
|
margin-top: 33px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__img2 {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__power {
|
||||||
|
font-size: 19px;
|
||||||
|
position: absolute;
|
||||||
|
top: 40px;
|
||||||
|
left: 44px;
|
||||||
|
color: #CCCCCC;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
z-index: 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__hour {
|
||||||
|
position: absolute;
|
||||||
|
top: 18px;
|
||||||
|
right: 132px;
|
||||||
|
@include hoursStyle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box3 {
|
||||||
|
margin-top: 82px;
|
||||||
|
&__img3 {
|
||||||
|
width:402px;
|
||||||
|
height:136px;
|
||||||
|
padding-left: 91px;
|
||||||
|
img {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box4 {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin-top: 123px;
|
||||||
|
&__img4{
|
||||||
|
width:390px;
|
||||||
|
height:128px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__img5 {
|
||||||
|
width:373px;
|
||||||
|
height:137px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__hour {
|
||||||
|
@include hoursStyle;
|
||||||
|
position: absolute;
|
||||||
|
top: 82px;
|
||||||
|
right: 66px;
|
||||||
|
|
||||||
|
&__left {
|
||||||
|
font-size: 56px;
|
||||||
|
height: 111px;
|
||||||
|
line-height: 111px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
font-size: 25px;
|
||||||
|
line-height: 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__hour2 {
|
||||||
|
@include hoursStyle;
|
||||||
|
position: absolute;
|
||||||
|
top: 66px;
|
||||||
|
right: 144px;
|
||||||
|
&__left {
|
||||||
|
font-size: 53px;
|
||||||
|
height: 111px;
|
||||||
|
line-height: 119px;
|
||||||
|
}
|
||||||
|
&__right {
|
||||||
|
font-size: 19px;
|
||||||
|
line-height: 37px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 快充进度条
|
||||||
|
.Fast {
|
||||||
|
width: 600px;
|
||||||
|
margin: 300px auto 0;
|
||||||
|
padding-left: 33px;
|
||||||
|
color: #fff;
|
||||||
|
h2 {
|
||||||
|
height: 60px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 60px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
width: fit-content;
|
||||||
|
font-size: 28px;
|
||||||
|
overflow: hidden;
|
||||||
|
p{
|
||||||
|
display: inline-block;
|
||||||
|
height: fit-content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-size: 15px;
|
||||||
|
height: fit-content;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__progress-first {
|
||||||
|
margin-top: 43px;
|
||||||
|
&__content {
|
||||||
|
height: 28px;
|
||||||
|
transition: width .5s ease-out;
|
||||||
|
background: linear-gradient(125deg, #0FFFC4 0,#0FFFC4 30%, #006AFF 70%,#006AFF 100%);
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
width: 118px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
&__progress-second {
|
||||||
|
margin-top: 43px;
|
||||||
|
|
||||||
|
text {
|
||||||
|
color: #C5C5C5;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
width: 0;
|
||||||
|
height: 28px;
|
||||||
|
background: #C5C5C5;
|
||||||
|
transition: width .5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
width: 361px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//芯片BMS
|
||||||
|
.battery {
|
||||||
|
margin: 148px auto 0;
|
||||||
|
width: 566px;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
display: flex;
|
||||||
|
margin-top: 52px;
|
||||||
|
|
||||||
|
&__decorate {
|
||||||
|
width: 306px;
|
||||||
|
height: 243px;
|
||||||
|
border-radius: 9px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background: linear-gradient(182deg, #3B3B3B, #05080B);
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
width: 217px;
|
||||||
|
height: 140px;
|
||||||
|
margin-right: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__img2 {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__img3 {
|
||||||
|
width: 173px;
|
||||||
|
height: 192px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
margin-left: 20px;
|
||||||
|
width: 260px;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
height: 33px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 30px;
|
||||||
|
margin: 46px 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-size: 13px;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
color: #f5f5f5;
|
||||||
|
line-height: 21px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content2 {
|
||||||
|
text-align: right;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 31px;
|
||||||
|
h2{
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin proIteTitle {
|
||||||
|
height: 44px;
|
||||||
|
font-size: 22px;
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 15px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin sectionBox {
|
||||||
|
margin: 17px auto 0;
|
||||||
|
width: 530px;
|
||||||
|
height: 336px;
|
||||||
|
background: linear-gradient(182deg, #3B3B3B, #05080B);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 7px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$caitainerWidth: 591px;
|
||||||
|
//15ports
|
||||||
|
.prots {
|
||||||
|
width: $caitainerWidth;
|
||||||
|
margin: 192px auto 0;
|
||||||
|
h2 {
|
||||||
|
@include proIteTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
@include sectionBox;
|
||||||
|
&__text {
|
||||||
|
font-size: 25px;
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//智能APP
|
||||||
|
.Intelligent-App {
|
||||||
|
width: $caitainerWidth;
|
||||||
|
margin: 119px auto 120px;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
@include proIteTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
margin-top: 17px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 540px;
|
||||||
|
height: 297px;
|
||||||
|
border-radius: 33px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
position: absolute;
|
||||||
|
top: 120px;
|
||||||
|
left: 52px;
|
||||||
|
width: 182px;
|
||||||
|
height: 58px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 27px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text-lang {
|
||||||
|
width: 120px;
|
||||||
|
left: 102px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
position: absolute;
|
||||||
|
width: fit-content;
|
||||||
|
height: 25px;
|
||||||
|
font-size: 18px;
|
||||||
|
padding-bottom: 41px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
text-align: center;
|
||||||
|
color: #FFFFFF;
|
||||||
|
transform: translate(10%);
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
&__text2-lang{
|
||||||
|
position: absolute;
|
||||||
|
transform: translate(40%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Whats
|
||||||
|
.boat {
|
||||||
|
width: $caitainerWidth;
|
||||||
|
margin: 99px auto 87px;
|
||||||
|
h2 {
|
||||||
|
@include proIteTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
@include sectionBox;
|
||||||
|
background: linear-gradient(182deg, #120F0F, #2D2D2D);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//更多产品
|
||||||
|
.More {
|
||||||
|
width: 599px;
|
||||||
|
margin: 46px auto 66px;
|
||||||
|
|
||||||
|
&__top {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 0 33px 0;
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 19px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 41px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: flex-end;
|
||||||
|
height: fit-content;
|
||||||
|
width: 533px;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 255px;
|
||||||
|
height: 370px;
|
||||||
|
background: #121212;
|
||||||
|
border-radius: 9px;
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
//手机端不能有hover事件
|
||||||
|
&:hover {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
width: 155px;
|
||||||
|
height: 124px;
|
||||||
|
margin-top: 66px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
font-size: 22px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 33px;
|
||||||
|
margin-top: 19px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__subTit {
|
||||||
|
font-size: 15px;
|
||||||
|
width: fit-content;
|
||||||
|
color: #478fff;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #949494;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__bottom {
|
||||||
|
padding: 17px 50px 0 0;
|
||||||
|
font-size: 19px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 25px;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,123 @@
|
||||||
|
|
||||||
|
$tone-color: #fff; //字体主色调
|
||||||
|
|
||||||
|
@mixin detailWidth {
|
||||||
|
width: 980px;
|
||||||
|
@media (max-width:1600px) {
|
||||||
|
width: 750px;
|
||||||
|
}
|
||||||
|
@media (max-width:1000px) {
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
img{
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-banner {
|
||||||
|
width: 100%;
|
||||||
|
color: $tone-color;
|
||||||
|
&__avater{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
@media (max-width:1200px) {
|
||||||
|
object-fit: cover;
|
||||||
|
padding-top: 80px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 方框介绍
|
||||||
|
.product__box {
|
||||||
|
padding: 250px 0 244px;
|
||||||
|
@include detailWidth;
|
||||||
|
@media (max-width:1000px) {
|
||||||
|
padding: 3rem 0 0;
|
||||||
|
width: 95%;
|
||||||
|
}
|
||||||
|
margin: 0 auto;
|
||||||
|
height: auto;
|
||||||
|
color: $tone-color;
|
||||||
|
&__avater{
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//液晶显示屏
|
||||||
|
.screen {
|
||||||
|
margin-top: 204px;
|
||||||
|
width: 100%;
|
||||||
|
@media (max-width:600px) {
|
||||||
|
margin-top: 5rem;
|
||||||
|
}
|
||||||
|
&__box {
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
padding: 150px 0 70px;
|
||||||
|
@media (max-width:1000px) {
|
||||||
|
padding: 0rem 0 4rem;
|
||||||
|
}
|
||||||
|
@include detailWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 切换面板2
|
||||||
|
.switchboard{
|
||||||
|
@include detailWidth;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
//端口介绍
|
||||||
|
.port {
|
||||||
|
padding: 320px 0 450px;
|
||||||
|
margin: 230px 0 450px;
|
||||||
|
@media (max-width:1000px) {
|
||||||
|
padding: 3rem 0 0;
|
||||||
|
margin: 2rem auto 5rem;
|
||||||
|
}
|
||||||
|
&__box {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
&__content {
|
||||||
|
@include detailWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 循环
|
||||||
|
.loop {
|
||||||
|
&__box {
|
||||||
|
margin: 500px auto 0;
|
||||||
|
@media (max-width:1000px) {
|
||||||
|
margin: 4rem auto 3rem;
|
||||||
|
}
|
||||||
|
display: flex;
|
||||||
|
@include detailWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保护系统
|
||||||
|
.protection {
|
||||||
|
&__box {
|
||||||
|
@include detailWidth;
|
||||||
|
margin: 400px auto 200px;
|
||||||
|
@media (max-width:1000px) {
|
||||||
|
width: 90%;
|
||||||
|
margin: 3rem auto 5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//展示
|
||||||
|
.show {
|
||||||
|
margin: 0 auto;
|
||||||
|
@include detailWidth;
|
||||||
|
padding-bottom: 300px;
|
||||||
|
@media (max-width:1000px) {
|
||||||
|
width: 100%;
|
||||||
|
padding-bottom: 5rem;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,987 @@
|
||||||
|
// 方框介绍
|
||||||
|
.product__box {
|
||||||
|
width: 957px;
|
||||||
|
margin: 92px auto 0;
|
||||||
|
height: 605px;
|
||||||
|
&__sec {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
@mixin secStyle {
|
||||||
|
width: 310px;
|
||||||
|
height: 174px;
|
||||||
|
background: linear-gradient(182deg, #232E3C, #05080B);
|
||||||
|
border-radius: 21px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
|
font-family: MiSans-Bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item1 {
|
||||||
|
@include secStyle;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
background: linear-gradient(128deg, #0FFFC4 0%, #0FFFC4 40%, #006AFF 60%, #006AFF 100%, );
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
width: fit-content;
|
||||||
|
height: 50px;
|
||||||
|
line-height: 50px;
|
||||||
|
font-size: 45px;
|
||||||
|
margin-top: 21px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
width: fit-content;
|
||||||
|
height: 55px;
|
||||||
|
font-size: 30px;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item2 {
|
||||||
|
@include secStyle;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
margin: 14px 0 7px;
|
||||||
|
width: 74px;
|
||||||
|
height: 92px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
background: linear-gradient(128deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
text-align: right;
|
||||||
|
padding-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 22px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item3 {
|
||||||
|
@include secStyle;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
margin-top: 16px;
|
||||||
|
width: 55px;
|
||||||
|
height: 87px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
margin-top: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 21px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background: linear-gradient(81deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 21px;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
margin-top: -12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__sec2 {
|
||||||
|
margin-top: 12px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 316px 257px 357px;
|
||||||
|
grid-template-rows: 201px 209px;
|
||||||
|
grid-row-gap: 12px;
|
||||||
|
grid-column-gap: 12px;
|
||||||
|
grid-template-areas:
|
||||||
|
'gap1 gap1 gap4'
|
||||||
|
'gap2 gap3 gap4';
|
||||||
|
|
||||||
|
&__item1 {
|
||||||
|
grid-area: gap1;
|
||||||
|
background: url('/static/product/detail/n051/solar.webp') center center/cover;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: flex-end;
|
||||||
|
border-radius: 21px;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
padding: 0 27px 21px 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-end;
|
||||||
|
|
||||||
|
&__top {
|
||||||
|
box-sizing: content-box;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
width: auto;
|
||||||
|
height: 47px;
|
||||||
|
font-size: 34px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0, #0FFFC4 20%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
width: auto;
|
||||||
|
font-size: 18px;
|
||||||
|
// border: 1px solid #0FFFC4;
|
||||||
|
font-weight: 600;
|
||||||
|
padding-top: 20px;
|
||||||
|
background: linear-gradient(87deg, #006AFF 0, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__bottom {
|
||||||
|
height: 31px;
|
||||||
|
font-size: 22px;
|
||||||
|
font-weight: 500;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item2 {
|
||||||
|
grid-area: gap2;
|
||||||
|
background: url('/static/product/detail/n051/charging.webp') center center/cover;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 21px;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
margin-top: 74px;
|
||||||
|
width: 109px;
|
||||||
|
text-align: center;
|
||||||
|
height: 29px;
|
||||||
|
font-size: 31px;
|
||||||
|
font-family:MiSans-Regular ;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #3E4752;
|
||||||
|
line-height: 25px;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
padding-top: 7px;
|
||||||
|
text-align: center;
|
||||||
|
width: 55px;
|
||||||
|
height: auto;
|
||||||
|
line-height: 1;
|
||||||
|
font-size: 25px;
|
||||||
|
background: linear-gradient(90deg, #0FFFC4 0%, #0FFFC4 70%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text3 {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 25px;
|
||||||
|
height: 34px;
|
||||||
|
font-size: 22px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item3 {
|
||||||
|
grid-area: gap3;
|
||||||
|
background: url('/static/product/detail/n051/rate.webp') center center/cover;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 21px;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
margin-top: 60px;
|
||||||
|
width:210px;
|
||||||
|
height: auto;
|
||||||
|
font-size: 35px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background: linear-gradient(87deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 174px;
|
||||||
|
height: 60px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-size: 22px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FEFEFE;
|
||||||
|
line-height: 31px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
&__textTop{
|
||||||
|
margin-top: 38px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__item4 {
|
||||||
|
grid-area: gap4;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
background: linear-gradient(182deg, #232E3C, #05080B);
|
||||||
|
border-radius: 21px;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
width: 276px;
|
||||||
|
height: 247px;
|
||||||
|
margin-top: 60px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
display: inline-block;
|
||||||
|
height: fit-content;
|
||||||
|
font-size: 36px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
background: linear-gradient(266deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
height: 40px;
|
||||||
|
font-size: 22px;
|
||||||
|
line-height: 40px;
|
||||||
|
font-weight: 500;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
color: #FFFFFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//设备放大视频
|
||||||
|
#Energy {
|
||||||
|
height: 717px;
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 435px;
|
||||||
|
|
||||||
|
.Energy-scale {
|
||||||
|
position: absolute;
|
||||||
|
width: 181px;
|
||||||
|
height: 270px;
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 90%;
|
||||||
|
left: 52%;
|
||||||
|
transform: scale(2.5) translate(-25%, -50%);
|
||||||
|
opacity: 0;
|
||||||
|
z-index: 99;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Energy-el {
|
||||||
|
margin: 0 auto 0;
|
||||||
|
width: 1214px;
|
||||||
|
height: 717px;
|
||||||
|
opacity: 0;
|
||||||
|
@media (max-width:1214px) {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
aspect-ratio:1/0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__avater {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//电流视频
|
||||||
|
.filter-video {
|
||||||
|
background-color: #000;
|
||||||
|
&__box {
|
||||||
|
margin-top: 74px;
|
||||||
|
width: 1714px;
|
||||||
|
height: 965px;
|
||||||
|
margin: 0 auto 0;
|
||||||
|
position: relative;
|
||||||
|
@media (max-width:1714px) {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__avater {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
@mixin filterContentStyle($unit,$radio){
|
||||||
|
&__content {
|
||||||
|
position: absolute;
|
||||||
|
width: 443 * $radio + $unit;
|
||||||
|
font-size: 20 * $radio + $unit;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 38 * $radio + $unit;
|
||||||
|
top: 20%;
|
||||||
|
left: 20%;
|
||||||
|
opacity: 0;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
display: flex;
|
||||||
|
&__num {
|
||||||
|
width: 190 * $radio + $unit;
|
||||||
|
height: 75 * $radio + $unit;
|
||||||
|
font-size: 73 * $radio + $unit;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 78 * $radio + $unit;
|
||||||
|
background: linear-gradient(128deg, #0FFFC4 17%, #006AFF 100%, );
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text2 {
|
||||||
|
width: 473 * $radio + $unit;
|
||||||
|
font-size: 23 * $radio + $unit;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #dfdfdf;
|
||||||
|
line-height: 38 * $radio + $unit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width:1479px) {
|
||||||
|
@include filterContentStyle(px,1);
|
||||||
|
&__content{
|
||||||
|
top: 18%;
|
||||||
|
left: 20%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:1479px) and (min-width:1219px){
|
||||||
|
@include filterContentStyle(px,0.8);
|
||||||
|
&__content{
|
||||||
|
top: 18%;
|
||||||
|
left: 18%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:1218px) and (min-width:957px){
|
||||||
|
@include filterContentStyle(px,0.7);
|
||||||
|
&__content{
|
||||||
|
top: 20%;
|
||||||
|
left: 16%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//AC太阳能板
|
||||||
|
.Plugged {
|
||||||
|
// power标题;
|
||||||
|
background-color: #000000;
|
||||||
|
|
||||||
|
// 滑动滚动
|
||||||
|
&__bar-view {
|
||||||
|
width: 834px;
|
||||||
|
height: 29px;
|
||||||
|
margin: 79px auto 0;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
position: relative;
|
||||||
|
&__list {
|
||||||
|
width: 834px;
|
||||||
|
border-bottom: 5px solid #646464;
|
||||||
|
display: flex;
|
||||||
|
justify-content:space-evenly;
|
||||||
|
font-size: 21px;
|
||||||
|
color: #C1C1C1;
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding: 12px 0;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 18px;
|
||||||
|
position: relative;
|
||||||
|
&::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
bottom: -5px;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
width: 30px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
height: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&-li--active {
|
||||||
|
&::after {
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//AC太阳能板
|
||||||
|
&__swiper {
|
||||||
|
margin: 38px auto 261px;
|
||||||
|
width: 834px;
|
||||||
|
height: 609px;
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
|
&__full {
|
||||||
|
height: 609px;
|
||||||
|
width: 834px;
|
||||||
|
&__item {
|
||||||
|
//显示小时裁决样式
|
||||||
|
@mixin hoursStyle {
|
||||||
|
display: flex;
|
||||||
|
height: 74px;
|
||||||
|
align-items: flex-end;
|
||||||
|
&__left{
|
||||||
|
font-size:96px;
|
||||||
|
// border: 1px solid #fff;
|
||||||
|
height: 118px;
|
||||||
|
line-height: 118px;
|
||||||
|
}
|
||||||
|
&__right{
|
||||||
|
font-size:27px;
|
||||||
|
line-height: 21px;
|
||||||
|
}
|
||||||
|
&__left {
|
||||||
|
font-family:MiSans-Regular;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-size:96px;
|
||||||
|
height: 118px;
|
||||||
|
line-height: 118px;
|
||||||
|
background: linear-gradient(128deg, #0FFFC4 0%, #006AFF 100%);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__right {
|
||||||
|
height: 44px;
|
||||||
|
font-size:27px;
|
||||||
|
line-height: 21px;
|
||||||
|
padding-left: 7px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
margin-top: 55px;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
width: 431px;
|
||||||
|
height: 340px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 431px;
|
||||||
|
height: 340px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__power {
|
||||||
|
font-size: 21px;
|
||||||
|
position: absolute;
|
||||||
|
top: 60px;
|
||||||
|
left: 47px;
|
||||||
|
color: #CCCCCC;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__hour {
|
||||||
|
color: #fff;
|
||||||
|
display: flex;
|
||||||
|
height: 74px;
|
||||||
|
align-items: flex-end;
|
||||||
|
margin: 74px 0 0 55px;
|
||||||
|
@include hoursStyle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box2 {
|
||||||
|
width: 100%;
|
||||||
|
height: 340px;
|
||||||
|
margin-top: 64px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__img2 {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__power {
|
||||||
|
font-size: 21px;
|
||||||
|
position: absolute;
|
||||||
|
top: 42px;
|
||||||
|
left: 47px;
|
||||||
|
color: #CCCCCC;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
z-index: 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__hour {
|
||||||
|
position: absolute;
|
||||||
|
top: 42px;
|
||||||
|
right: 253px;
|
||||||
|
@include hoursStyle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box3 {
|
||||||
|
margin-top: 144px;
|
||||||
|
&__img3 {
|
||||||
|
width: 596px;
|
||||||
|
height: 244px;
|
||||||
|
display: flex;
|
||||||
|
padding-left: 135px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__box4 {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
margin-top: 174px;
|
||||||
|
&__img4 {
|
||||||
|
width: 100%;
|
||||||
|
height:340px;
|
||||||
|
}
|
||||||
|
&__hour{
|
||||||
|
@include hoursStyle;
|
||||||
|
position: absolute;
|
||||||
|
top: 70px;
|
||||||
|
right:201px;
|
||||||
|
&__left{
|
||||||
|
font-size:96px;
|
||||||
|
height: 118px;
|
||||||
|
line-height: 118px;
|
||||||
|
}
|
||||||
|
&__right{
|
||||||
|
font-size:27px;
|
||||||
|
line-height: 21px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__hour2{
|
||||||
|
@include hoursStyle;
|
||||||
|
position: absolute;
|
||||||
|
top: 70px;
|
||||||
|
right: 235px;
|
||||||
|
&__left{
|
||||||
|
font-size:96px;
|
||||||
|
// border: 1px solid #fff;
|
||||||
|
height: 118px;
|
||||||
|
line-height: 118px;
|
||||||
|
}
|
||||||
|
&__right{
|
||||||
|
font-size:27px;
|
||||||
|
line-height: 21px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//快充进度条
|
||||||
|
.Fast {
|
||||||
|
width: 960px;
|
||||||
|
margin: 0 auto 0;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
height: 60px;
|
||||||
|
font-size: 38px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 60px;
|
||||||
|
overflow: hidden;
|
||||||
|
p{
|
||||||
|
height: fit-content;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 34px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__progress-first {
|
||||||
|
margin-top: 29px;
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
width: 0;
|
||||||
|
height: 53px;
|
||||||
|
background: linear-gradient(125deg, #0FFFC4 0,#0FFFC4 30%, #006AFF 70%,#006AFF 100%);
|
||||||
|
will-change: width, padding;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
width: 30%;
|
||||||
|
padding: 0 14px;
|
||||||
|
transition: width 1s linear;
|
||||||
|
will-change: width, padding;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__progress-second {
|
||||||
|
margin-top: 29px;
|
||||||
|
|
||||||
|
text {
|
||||||
|
color: #C5C5C5;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
width: 0;
|
||||||
|
height: 53px;
|
||||||
|
background: #666;
|
||||||
|
will-change: width, padding;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
width: 60%;
|
||||||
|
transition: width 6s steps(8,start);
|
||||||
|
padding: 0 14px;
|
||||||
|
will-change: width, padding;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//芯片BMS
|
||||||
|
.battery {
|
||||||
|
margin: 208px auto 0;
|
||||||
|
width: 960px;
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
display: flex;
|
||||||
|
margin-top: 100px;
|
||||||
|
|
||||||
|
&__decorate {
|
||||||
|
width: 486px;
|
||||||
|
height: 386px;
|
||||||
|
display: flex;
|
||||||
|
border-radius:5px;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background: linear-gradient(182deg, #3B3B3B, #05080B);
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
width: 340px;
|
||||||
|
height: 242px;
|
||||||
|
margin-right: 29px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__img2 {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__img3 {
|
||||||
|
width: 261px;
|
||||||
|
height: 295px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content {
|
||||||
|
margin-left: 60px;
|
||||||
|
width: 486px;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
height: 44px;
|
||||||
|
font-size: 27px;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height: 16px;
|
||||||
|
margin-top: 92px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
font-size: 18px;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
color: #f5f5f5;
|
||||||
|
line-height: 29px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__content2 {
|
||||||
|
text-align: right;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 70px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin proIteTitle {
|
||||||
|
height: 40px;
|
||||||
|
font-size: 28px;
|
||||||
|
font-family: MiSans-Semibold;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 16px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin sectionBox {
|
||||||
|
margin-top: 18px;
|
||||||
|
width: 960px;
|
||||||
|
height: 386px;
|
||||||
|
background: linear-gradient(182deg, #3B3B3B, #05080B);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 7px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$caitainerWidth: 960px;
|
||||||
|
|
||||||
|
//15ports
|
||||||
|
.prots {
|
||||||
|
width: $caitainerWidth;
|
||||||
|
margin: 151px auto 0;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
@include proIteTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
@include sectionBox;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
font-size: 32px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//智能APP
|
||||||
|
.Intelligent-App {
|
||||||
|
width: $caitainerWidth;
|
||||||
|
margin: 227px auto ;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
@include proIteTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
margin-top: 21px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 435px;
|
||||||
|
height: 240px;
|
||||||
|
border-radius: 35px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
&__img {
|
||||||
|
width: inherit;
|
||||||
|
height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
position: absolute;
|
||||||
|
top: 80px;
|
||||||
|
left: 55px;
|
||||||
|
width: 150px;
|
||||||
|
height: 70px;
|
||||||
|
font-size: 17px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: 27px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
&__text-lang {
|
||||||
|
top: 109px;
|
||||||
|
left: 55px;
|
||||||
|
width: 140px;
|
||||||
|
}
|
||||||
|
&__text2 {
|
||||||
|
position: absolute;
|
||||||
|
font-size: 17px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
text-align: center;
|
||||||
|
color: #FFFFFF;
|
||||||
|
line-height: fit-content;
|
||||||
|
width: 200px;
|
||||||
|
transform: translate(50%,50%);
|
||||||
|
bottom: 50%;
|
||||||
|
}
|
||||||
|
&__text2-lang{
|
||||||
|
position: absolute;
|
||||||
|
transform: translate(40%);
|
||||||
|
bottom: 0;
|
||||||
|
line-height: 30px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Whats
|
||||||
|
.boat {
|
||||||
|
width: $caitainerWidth;
|
||||||
|
margin: 261px auto 0;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
@include proIteTitle;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box {
|
||||||
|
@include sectionBox;
|
||||||
|
background: linear-gradient(182deg, #120F0F, #2D2D2D);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 滑动滚动要分成组件的
|
||||||
|
.swiper__box {
|
||||||
|
height: 409px;
|
||||||
|
width: 696px;
|
||||||
|
display: flex;
|
||||||
|
&__list {
|
||||||
|
width: 696px;
|
||||||
|
padding-left: 44px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, 131px);
|
||||||
|
grid-gap: 0px 44px;
|
||||||
|
margin: 44px auto 0;
|
||||||
|
&__li {
|
||||||
|
width: fit-content;
|
||||||
|
height: fit-content;
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
&__img {
|
||||||
|
width: 27px;
|
||||||
|
height: 27px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
margin-top: 16px;
|
||||||
|
width: fit-content;
|
||||||
|
height: fit-content;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #C1C1C1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__power {
|
||||||
|
margin-top: 7px;
|
||||||
|
height: fit-content;
|
||||||
|
font-size: 16px;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #C1C1C1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__houres {
|
||||||
|
margin-top: 7px;
|
||||||
|
height: fit-content;
|
||||||
|
font-size: 23px;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #FFFFFF;
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//动画
|
||||||
|
@keyframes textAnimation {
|
||||||
|
0% {
|
||||||
|
transform: translateY(29px);
|
||||||
|
opacity: .3;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateY(5px);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes textAnimation2 {
|
||||||
|
0% {
|
||||||
|
transform: translateY(47px);
|
||||||
|
opacity: .3;
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateY(5px);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//文字的
|
||||||
|
.is-animating {
|
||||||
|
animation: textAnimation 1.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-animating2 {
|
||||||
|
animation: textAnimation2 2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-display {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,261 @@
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
ref,
|
||||||
|
reactive,
|
||||||
|
onMounted,
|
||||||
|
onBeforeMount,
|
||||||
|
onBeforeUnmount
|
||||||
|
} from "vue";
|
||||||
|
import topBar from "@/components/top/title-bar.vue";
|
||||||
|
import footBar from "@/components/bottom/foot-bar.vue";
|
||||||
|
// import detailParams from "./components/detail-params.vue";
|
||||||
|
// import collapse from "@/views/product/detail/components/collapse.vue";
|
||||||
|
import {
|
||||||
|
GetProductDetailApi
|
||||||
|
} from "@/service/api.js";
|
||||||
|
import langToCheck from "@/hook/lang.js";
|
||||||
|
import {
|
||||||
|
useI18n
|
||||||
|
} from "vue-i18n";
|
||||||
|
const {
|
||||||
|
t
|
||||||
|
} = useI18n();
|
||||||
|
const langIs = ref('');
|
||||||
|
import {
|
||||||
|
useRoute
|
||||||
|
} from '#imports';
|
||||||
|
const route = useRoute();
|
||||||
|
//监听返回顶部
|
||||||
|
let proId = ref("");
|
||||||
|
let proName = ref("");
|
||||||
|
const productSpecs = reactive({
|
||||||
|
data: [],
|
||||||
|
});
|
||||||
|
const htmlNodes = ref("");
|
||||||
|
let isMaskShow = ref(true); //是否显示遮罩层
|
||||||
|
|
||||||
|
let tabCollection = reactive([]);
|
||||||
|
onBeforeMount(() => {
|
||||||
|
langIs.value = langToCheck()
|
||||||
|
tabCollection.push({
|
||||||
|
name: t("detail.summary"),
|
||||||
|
value: 0,
|
||||||
|
});
|
||||||
|
if (route.query.id) {
|
||||||
|
proId.value = route.query.id;
|
||||||
|
GetSpaceRequest(proId.value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const GetSpaceRequest = (Id) => {
|
||||||
|
let parmas = {
|
||||||
|
locale: langIs.value,
|
||||||
|
product_id: Id,
|
||||||
|
};
|
||||||
|
GetProductDetailApi(parmas).then((res) => {
|
||||||
|
if (res.info.children[0]) {
|
||||||
|
let received = res.info.children[0];
|
||||||
|
productSpecs.data = received.product_specs;
|
||||||
|
if (productSpecs.data.length > 0) {
|
||||||
|
tabCollection.push({
|
||||||
|
name: t("detail.specs"),
|
||||||
|
value: 1,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
document.title = received.product_name;
|
||||||
|
proName.value = received.product_name;
|
||||||
|
const htmlString = received.product_detail_body;
|
||||||
|
const parser = new DOMParser(htmlString);
|
||||||
|
const doc = parser.parseFromString(htmlString, 'text/html');
|
||||||
|
const imgElements = doc.querySelectorAll('img');
|
||||||
|
imgElements.forEach((img, index) => {
|
||||||
|
img.removeAttribute('width');
|
||||||
|
img.removeAttribute('height');
|
||||||
|
img.removeAttribute('style');
|
||||||
|
img.removeAttribute('class');
|
||||||
|
img.classList.add('rich-only-avater');
|
||||||
|
});
|
||||||
|
htmlNodes.value = doc.body.innerHTML;
|
||||||
|
isMaskShow.value = false
|
||||||
|
}
|
||||||
|
}).catch(isMaskShow.value = false)
|
||||||
|
};
|
||||||
|
let tabValue = ref(0);
|
||||||
|
let tabChange = (index) => {
|
||||||
|
tabValue.value = index;
|
||||||
|
};
|
||||||
|
|
||||||
|
let scrollTop = ref(0); // 监听滚动事件得到的值
|
||||||
|
// 监听页面滚动事件
|
||||||
|
onMounted(() => {
|
||||||
|
window.addEventListener('scroll', handleScroll);
|
||||||
|
});
|
||||||
|
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
window.removeEventListener('scroll', handleScroll);
|
||||||
|
});
|
||||||
|
const handleScroll = () => {
|
||||||
|
scrollTop.value = window.scrollY || document.documentElement.scrollTop;
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="page">
|
||||||
|
<topBar></topBar>
|
||||||
|
<div class="sticky-page-layout">
|
||||||
|
<div class="nav-sticky" :class="{ 'nav-sticky--active': scrollTop >= 100 }">
|
||||||
|
<div class="nav-sticky__center">
|
||||||
|
<h1 class="nav-sticky__center__left">{{ proName }}</h1>
|
||||||
|
<div class="nav-sticky__center__right">
|
||||||
|
<div class="nav-sticky__center__right__item" :class="{
|
||||||
|
'nav-sticky__center__right--Active': tabValue == item.value,
|
||||||
|
}" @click="tabChange(item.value)" v-for="(item, index) in tabCollection"
|
||||||
|
:key="'rich' + index">
|
||||||
|
{{ item.name }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="tabValue == 0">
|
||||||
|
<div class="rich-detail-only" v-dompurify-html="htmlNodes"></div>
|
||||||
|
</div>
|
||||||
|
<div v-else-if="tabValue == 1">
|
||||||
|
<!-- <detail-params :detailList="productSpecs.data"></detail-params> -->
|
||||||
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
<!-- <collapse></collapse> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<foot-bar></foot-bar>
|
||||||
|
<div class="load-mask" v-if="isMaskShow">
|
||||||
|
<div class="spinner">
|
||||||
|
<div class="spinner__item bounce1"></div>
|
||||||
|
<div class="spinner__item bounce2"></div>
|
||||||
|
<div class="spinner__item bounce3"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/* 为了全局谨慎使用 */
|
||||||
|
.rich-detail-only {
|
||||||
|
min-height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:first-child {
|
||||||
|
width: 100vw;
|
||||||
|
min-height: 50vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:first-child {
|
||||||
|
min-height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 850px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:first-child {
|
||||||
|
padding-top: 1.7rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 650px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:first-child {
|
||||||
|
padding-top: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:first-child {
|
||||||
|
padding-top: 2.35rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:nth-child(2) {
|
||||||
|
margin: 2.4rem auto 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 9.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1600px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:nth-child(2) {
|
||||||
|
width: 750px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:nth-child(2) {
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:nth-child(2) {
|
||||||
|
margin-top: 2.4rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:nth-child(n + 3) {
|
||||||
|
padding-top: 1rem;
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 9.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1600px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:nth-child(n + 3) {
|
||||||
|
width: 750px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:nth-child(n + 3) {
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:nth-child(n + 3) {
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:last-child {
|
||||||
|
margin-bottom: 2.4rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1000px) {
|
||||||
|
.rich-detail-only
|
||||||
|
.rich-only-avater:last-child {
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.page {
|
||||||
|
background-color: #000000;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,580 @@
|
||||||
|
@mixin flexCenter {
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@mixin productWidth {
|
||||||
|
width: 10rem;
|
||||||
|
@media (max-width:1300px) {
|
||||||
|
width: 15rem;
|
||||||
|
}
|
||||||
|
@media (max-width:599px) {
|
||||||
|
width: 90%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.scroll-height{
|
||||||
|
height: 100vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
.banner {
|
||||||
|
width: 100vw;
|
||||||
|
height: 5rem;
|
||||||
|
background:url('/static/product/goods__banner.webp') center center/cover;
|
||||||
|
&__box {
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 横栏
|
||||||
|
.menu {
|
||||||
|
height: 0.5rem;
|
||||||
|
@include flexCenter;
|
||||||
|
background-color: #ffffff;
|
||||||
|
@media (max-width:1900px) {
|
||||||
|
height: 55px;
|
||||||
|
}
|
||||||
|
@media (max-width:1300px) {
|
||||||
|
height: 0.78rem;
|
||||||
|
padding: 0 0.6rem;
|
||||||
|
}
|
||||||
|
&__container{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
@include productWidth;
|
||||||
|
&__left{
|
||||||
|
width: 1.6rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__box{
|
||||||
|
display: flex;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
flex-basis: 65%;
|
||||||
|
&__list {
|
||||||
|
height: auto;
|
||||||
|
padding: 0.12rem 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
color: #333333;
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding: 0 .3rem;
|
||||||
|
height: auto;
|
||||||
|
line-height: 0.2rem;
|
||||||
|
border-right: 0.01rem solid #e5e5e5;
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
border-right: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--Active {
|
||||||
|
color: #2164ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__dropdown{
|
||||||
|
min-width: 1.6rem;
|
||||||
|
height: inherit;
|
||||||
|
position: relative;
|
||||||
|
font-size: inherit;
|
||||||
|
&__selected{
|
||||||
|
width: inherit;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
border-left: 0.015rem solid #e5e5e5;
|
||||||
|
border-right: 0.015rem solid #e5e5e5;
|
||||||
|
height: 100%;
|
||||||
|
color: #333;
|
||||||
|
display: flex;
|
||||||
|
line-height: 0.45rem;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__text {
|
||||||
|
min-width: 1.4rem;
|
||||||
|
text-align: center;
|
||||||
|
font-size: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__arrow {
|
||||||
|
width: 0.2rem;
|
||||||
|
height: inherit;
|
||||||
|
.iconfont{
|
||||||
|
font-weight: bold;
|
||||||
|
color: #333;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
font-size: 10px;
|
||||||
|
line-height: inherit;
|
||||||
|
transition-property: transform;
|
||||||
|
transition-duration: 0.3s;
|
||||||
|
transition-timing-function: ease;
|
||||||
|
transform-origin: 50% 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--down {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__options{
|
||||||
|
position: absolute;
|
||||||
|
top: calc(100% + 5px);
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 0.05rem;
|
||||||
|
box-shadow: 0 0.02rem 0.04rem rgba(0, 0, 0, 0.1);
|
||||||
|
z-index: 800;
|
||||||
|
height: auto;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding-bottom: 0.1rem;
|
||||||
|
&__item{
|
||||||
|
line-height: 2.7;
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color 0.3s;
|
||||||
|
&:hover{
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:1750px) {
|
||||||
|
font-size: 0.17rem;
|
||||||
|
}
|
||||||
|
@media (max-width:1300px) {
|
||||||
|
font-size: 0.22rem;
|
||||||
|
&__container{
|
||||||
|
&__left{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
&__box{
|
||||||
|
flex-basis: 70%;
|
||||||
|
}
|
||||||
|
&__dropdown{
|
||||||
|
min-width: 2.2rem;
|
||||||
|
&__selected{
|
||||||
|
&__text {
|
||||||
|
min-width: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:900px) {
|
||||||
|
font-size: 0.3rem;
|
||||||
|
height: auto;
|
||||||
|
min-height: 1rem;
|
||||||
|
&__container{
|
||||||
|
&__left{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
&__box{
|
||||||
|
flex-basis: 70%;
|
||||||
|
}
|
||||||
|
&__dropdown{
|
||||||
|
min-width: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:800px) {
|
||||||
|
font-size: 0.35rem;
|
||||||
|
height: auto;
|
||||||
|
min-height: 1rem;
|
||||||
|
&__container{
|
||||||
|
&__left{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
&__box{
|
||||||
|
flex-basis: 70%;
|
||||||
|
}
|
||||||
|
&__dropdown{
|
||||||
|
min-width: 3.8rem;
|
||||||
|
&__selected{
|
||||||
|
&__text {
|
||||||
|
min-width: 3.6rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:600px) {
|
||||||
|
font-size: 0.56rem;
|
||||||
|
height: 2rem;
|
||||||
|
padding: 0 0rem;
|
||||||
|
&__container{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
height: 2rem;
|
||||||
|
&__box{
|
||||||
|
flex-basis: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
height: inherit;
|
||||||
|
&__list{
|
||||||
|
padding: 0;
|
||||||
|
height: inherit;
|
||||||
|
width: 100%;
|
||||||
|
li{
|
||||||
|
padding: 0 0.5rem;
|
||||||
|
line-height: 2rem;
|
||||||
|
font-size: 0.6rem;
|
||||||
|
letter-spacing: 0.02rem;
|
||||||
|
border-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__dropdown{
|
||||||
|
margin: 0.8rem auto 0 0;
|
||||||
|
width: 8.3rem;
|
||||||
|
float: right;
|
||||||
|
font-size: 0.56rem;
|
||||||
|
&__selected{
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #e5e5e5;
|
||||||
|
padding: 0.5rem;
|
||||||
|
&__text {
|
||||||
|
min-width: 6rem;
|
||||||
|
text-align: center;
|
||||||
|
padding-left: 1rem;
|
||||||
|
}
|
||||||
|
&__arrow {
|
||||||
|
width: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__options{
|
||||||
|
font-size: 0.56rem;
|
||||||
|
width: 8.3rem;
|
||||||
|
box-shadow: 0 0.02rem 0.1rem rgba(0, 0, 0, 0.1);
|
||||||
|
&__item{
|
||||||
|
padding: 0.3rem 0.2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 导航
|
||||||
|
.mobile-menu{
|
||||||
|
@media (max-width:600px) {
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 商品列表
|
||||||
|
.goods {
|
||||||
|
min-height: 6rem;
|
||||||
|
margin: 0 auto;
|
||||||
|
height: auto;
|
||||||
|
@media (max-width:600px) {
|
||||||
|
min-height: 13rem;
|
||||||
|
}
|
||||||
|
// 商品展示2
|
||||||
|
&__product {
|
||||||
|
margin: 0.3rem auto 1rem;
|
||||||
|
width: 10rem;
|
||||||
|
|
||||||
|
&__list {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
@media (max-width:499px) {
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
min-height: 17rem;
|
||||||
|
}
|
||||||
|
&__li {
|
||||||
|
flex-basis: 32.5%;
|
||||||
|
border-radius: 0.1rem;
|
||||||
|
background: #ffffff;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
height: 5rem;
|
||||||
|
margin-right: 1.2%;
|
||||||
|
|
||||||
|
@media (min-width:850px) {
|
||||||
|
&:nth-child(3n){
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
&:nth-child(n+4) {
|
||||||
|
margin-top: 1.2%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__top{
|
||||||
|
height: 3.25rem;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
&__avater-2{
|
||||||
|
height: auto;
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
//标志位
|
||||||
|
&__avater {
|
||||||
|
border-radius: 0.1rem 0.1rem 0 0;
|
||||||
|
width: 100%;
|
||||||
|
height:3.25rem;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
font-family: MiSans-Medium;
|
||||||
|
width: 100%;
|
||||||
|
&__box{
|
||||||
|
height: 1rem;
|
||||||
|
font-size: 0.2rem;
|
||||||
|
color: #333333;
|
||||||
|
line-height: 1.6;
|
||||||
|
text-align: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
width: 90%;
|
||||||
|
&__title{
|
||||||
|
font-family: "Microsoft YaHei";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__btn {
|
||||||
|
width: 1.1rem;
|
||||||
|
height: 0.4rem;
|
||||||
|
background: #1777ff;
|
||||||
|
border-radius: 0.26rem;
|
||||||
|
color: #ffffff;
|
||||||
|
line-height:0.4rem;
|
||||||
|
font-size: 0.16rem;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: center;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1300px) {
|
||||||
|
&__box{
|
||||||
|
font-size: 0.25rem;
|
||||||
|
margin-top: 5%;
|
||||||
|
}
|
||||||
|
&__btn{
|
||||||
|
font-size: 0.22rem;
|
||||||
|
margin: 0.3rem 0;
|
||||||
|
width: 1.5rem;
|
||||||
|
height: 0.5rem;
|
||||||
|
line-height:0.5rem ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:1100px) {
|
||||||
|
&__box{
|
||||||
|
font-size: 0.3rem;
|
||||||
|
line-height: 1.7;
|
||||||
|
margin-top: 0rem;
|
||||||
|
}
|
||||||
|
&__btn{
|
||||||
|
font-size: 0.26rem;
|
||||||
|
margin: 0.3rem 0;
|
||||||
|
width: 1.8rem;
|
||||||
|
height: 0.5rem;
|
||||||
|
line-height:0.5rem ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:849px) {
|
||||||
|
&__box{
|
||||||
|
font-size: 0.4rem;
|
||||||
|
}
|
||||||
|
&__btn{
|
||||||
|
font-size: 0.36rem;
|
||||||
|
margin: 0.8rem 0;
|
||||||
|
width: 2.6rem;
|
||||||
|
border-radius: 2rem;
|
||||||
|
height: 0.8rem;
|
||||||
|
line-height:0.8rem ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:600px) {
|
||||||
|
&__box{
|
||||||
|
height: 2rem;
|
||||||
|
font-size: 0.55rem;
|
||||||
|
line-height: 1.7;
|
||||||
|
}
|
||||||
|
&__btn{
|
||||||
|
font-size: 0.45rem;
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
width: 3rem;
|
||||||
|
border-radius: 2rem;
|
||||||
|
height: 1rem;
|
||||||
|
line-height:1rem ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:499px) {
|
||||||
|
&__box{
|
||||||
|
font-size: 0.66rem;
|
||||||
|
}
|
||||||
|
&__btn{
|
||||||
|
font-size: 0.55rem;
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
width: 4rem;
|
||||||
|
border-radius: 2rem;
|
||||||
|
height: 1.2rem;
|
||||||
|
line-height:1.2rem ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__li--point{
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (max-width:1300px) {
|
||||||
|
width: 15rem;
|
||||||
|
&__list{
|
||||||
|
width: inherit;
|
||||||
|
&__li{
|
||||||
|
height: 7.2rem;
|
||||||
|
&__top{
|
||||||
|
height: 4.5rem;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:849px) {
|
||||||
|
&__top{
|
||||||
|
height: 6rem;
|
||||||
|
}
|
||||||
|
margin-right: 2.5%;
|
||||||
|
height: 9.5rem;
|
||||||
|
flex-basis: 47%;
|
||||||
|
&:nth-child(n+3) {
|
||||||
|
margin-top: 2.5%;
|
||||||
|
}
|
||||||
|
&:nth-child(2n){
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:600px) {
|
||||||
|
width: 90%;
|
||||||
|
&__list{
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 1.5rem;
|
||||||
|
&__li{
|
||||||
|
height: 13rem;
|
||||||
|
flex-basis: 48%;
|
||||||
|
margin-right: 2%;
|
||||||
|
&:nth-child(n+3) {
|
||||||
|
margin-top: 4%;
|
||||||
|
}
|
||||||
|
&__top{
|
||||||
|
height: 8rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__page-num {
|
||||||
|
width: fit-content;
|
||||||
|
height: auto;
|
||||||
|
margin: 0.4rem auto 0.3rem;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 0.4rem;
|
||||||
|
height: 0.4rem;
|
||||||
|
font-size: 0.18rem;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 0.4rem;
|
||||||
|
background-color: #ffffff;
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 0 0.1rem;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 0.01rem solid #d0d0d0;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #1777ff;
|
||||||
|
font-size: 0.18rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--grey {
|
||||||
|
color: #bfbfbf;
|
||||||
|
cursor: not-allowed;
|
||||||
|
color: #eee;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:1024px) {
|
||||||
|
width: fit-content;
|
||||||
|
height: 0.4rem;
|
||||||
|
margin: 0.4rem auto 0.6rem;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 1rem;
|
||||||
|
height: 1rem;
|
||||||
|
font-size: 0.36rem;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1rem;
|
||||||
|
background-color: #ffffff;
|
||||||
|
cursor: pointer;
|
||||||
|
margin: 0 0.2rem;
|
||||||
|
border-radius: 50%;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #1777ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--grey {
|
||||||
|
color: #bfbfbf;
|
||||||
|
border: 1px solid #bfbfbf;
|
||||||
|
cursor: not-allowed;
|
||||||
|
color: #eee;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width:640px) {
|
||||||
|
height: 1rem;
|
||||||
|
margin: 1rem auto 1rem;
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
width: 1.2rem;
|
||||||
|
height: 1.2rem;
|
||||||
|
font-size: 0.5rem;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 1.2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
color: #fff;
|
||||||
|
line-height: 1.2rem;
|
||||||
|
background-color: #1777ff;
|
||||||
|
font-size: 0.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,150 @@
|
||||||
|
<template>
|
||||||
|
<div class="wrap">
|
||||||
|
<p style="margin-top:15.6pt; margin-bottom:15.6pt; text-align:center; font-size:27px; font-weight:bold">Privacy Statement</p>
|
||||||
|
<p>
|
||||||
|
<span>Privacy Policy Scope</span>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<span>For
|
||||||
|
users logging on to the site to stay personally</span>
|
||||||
|
<br><br>
|
||||||
|
<span>identifiable information.</span>
|
||||||
|
<br><br>
|
||||||
|
<span>The
|
||||||
|
content of the information collected</span>
|
||||||
|
<br><br><span>When
|
||||||
|
you register on our website, or using other companies</span>
|
||||||
|
<br><br><span>products
|
||||||
|
or services, visit the company website, I have that</span>
|
||||||
|
<br><br><span>station
|
||||||
|
will collect your personal information,</span><br><span>Including
|
||||||
|
name, phone number, zip code, address.</span>
|
||||||
|
<br><br><span>The
|
||||||
|
Bank will automatically receive and record your browser</span>
|
||||||
|
<br><br><span>and
|
||||||
|
the server log information, including but not limited to</span>
|
||||||
|
<br><br><span>your
|
||||||
|
IP address, cookie information in this site and your</span>
|
||||||
|
<br><br><span>web
|
||||||
|
history requirements.</span>
|
||||||
|
<br><br><span>
|
||||||
|
</span>
|
||||||
|
<br><br><span>The
|
||||||
|
use and protection of information</span>
|
||||||
|
<br><br><span>The
|
||||||
|
company will collect the contents of the above</span>
|
||||||
|
<br><br><span>information
|
||||||
|
to:</span>
|
||||||
|
<br><br><span>1.
|
||||||
|
for customers to send products and services;</span>
|
||||||
|
<br><br><span>2.
|
||||||
|
for customers to design and provide after sales
|
||||||
|
guidance</span>
|
||||||
|
<br><br><span>services;</span>
|
||||||
|
<br><br><span>3.
|
||||||
|
to provide other services (the part of the increase or</span>
|
||||||
|
<br><br><span>decrease
|
||||||
|
depending on your situation.)</span>
|
||||||
|
<br><br><span>Held
|
||||||
|
by the Company of its customer data confidential,</span>
|
||||||
|
<br><br><span>except:</span>
|
||||||
|
<br><br><span>1.
|
||||||
|
have your consent to share the information;</span>
|
||||||
|
<br><br><span>2.
|
||||||
|
only disclose your personal information to provide you</span>
|
||||||
|
<br><br><span>requested
|
||||||
|
products and services;</span>
|
||||||
|
<br><br><span>3.
|
||||||
|
According to legal requirements, have the right authority</span>
|
||||||
|
<br><br><span>to
|
||||||
|
make law or comply with legal directives, but the company</span>
|
||||||
|
<br><br><span>will
|
||||||
|
provide the appropriate jurisdiction;</span>
|
||||||
|
<br><br><span>4.
|
||||||
|
In case of emergency, to safeguard the interests of users</span>
|
||||||
|
<br><br><span>and
|
||||||
|
the public;</span>
|
||||||
|
<br><br><span>5.
|
||||||
|
the other Companies that need to open, edit, or disclose</span>
|
||||||
|
<br><br><span>personal
|
||||||
|
information in the situation.</span>
|
||||||
|
<br><br><span>The
|
||||||
|
revised privacy policy privacy policy website reserves</span>
|
||||||
|
<br><br><span>the
|
||||||
|
right to make changes.</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
p {
|
||||||
|
font-family: "Microsoft YaHei" !important;
|
||||||
|
word-break: break-word;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000000;
|
||||||
|
@media (min-width:2000px) {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
strong {
|
||||||
|
color: #000000;
|
||||||
|
font-family: "Microsoft YaHei" !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
font-family: "Microsoft YaHei" !important;
|
||||||
|
color: #0000FF;
|
||||||
|
text-decoration: underline;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subTitle {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap {
|
||||||
|
padding: 50px 30px;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap .sub-title {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap .list {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #0563c1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap .list a {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap .title {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap .title a {
|
||||||
|
margin-left: 10px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap table {
|
||||||
|
border-left: 1px solid #000000;
|
||||||
|
border-top: 1px solid #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap table td,
|
||||||
|
.wrap table th {
|
||||||
|
padding: 10px;
|
||||||
|
border-right: 1px solid;
|
||||||
|
border-bottom: 1px solid;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,103 @@
|
||||||
|
<template>
|
||||||
|
<div class="wrap">
|
||||||
|
<p style="margin-top:15.6pt; margin-bottom:15.6pt; text-align:center; font-size:27px; font-weight:bold">隐私声明</p>
|
||||||
|
<p>
|
||||||
|
<strong>隐私政策范围</strong>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<span>本隐私政策适用于登录本站并留下个人身份信息的用户。</span>
|
||||||
|
<br><br>
|
||||||
|
<strong>信息的收集内容</strong>
|
||||||
|
<br><br>
|
||||||
|
当您在我们的网站注册、使用其他公司的产品或服务、访问公司网站时,我们会收集您的
|
||||||
|
个人信息,包括姓名、电话号码、邮政编码、地址。本公司将自动接收并记录您的浏览器
|
||||||
|
和服务器日志信息,包括但不限于您的IP地址、本站Cookie信息及您的网页浏览历史记录。
|
||||||
|
<br><br><strong>信息的使用与保护</strong>
|
||||||
|
<br><br><span>公司将收集的上述信息内容用于:</span>
|
||||||
|
<br><br><span>1.向客户发送产品和服务;</span>
|
||||||
|
<br><br><span>2.为客户设计并提供售后指导服务;</span>
|
||||||
|
<br><br><span>3.提供其他服务(根据您的情况可能增加或减少部分内容)。</span>
|
||||||
|
<br><br><strong>公司将对其持有的客户数据进行保密,除非:</strong>
|
||||||
|
<br><br><span>1.获得您的同意分享这些信息;</span>
|
||||||
|
<br><br><span>2.仅为提供您所请求的产品和服务而披露您的个人信息;</span>
|
||||||
|
<br><br><span>3.根据法律要求,有权机构执行法律或遵守法律指令,但公司将提供适当的司法管辖区;</span>
|
||||||
|
<br><br><span>4.在紧急情况下,为了保护用户和公众的利益;</span>
|
||||||
|
<br><br><span>5.其他公司在需要的情况下,必须公开、编辑或披露个人信息。</span>
|
||||||
|
<br><br><strong>隐私政策的修订</strong>
|
||||||
|
<br><br><span>本网站保留对隐私政策进行修改的权利。</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
p {
|
||||||
|
font-family: "Microsoft YaHei" !important;
|
||||||
|
word-break: break-word;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #000000;
|
||||||
|
@media (min-width:2000px) {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
strong {
|
||||||
|
color: #000000;
|
||||||
|
font-family: "Microsoft YaHei" !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
font-family: "Microsoft YaHei" !important;
|
||||||
|
color: #0000FF;
|
||||||
|
text-decoration: underline;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subTitle {
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap {
|
||||||
|
padding: 50px 30px;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap .sub-title {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap .list {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #0563c1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap .list a {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap .title {
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
line-height: 1.5;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap .title a {
|
||||||
|
margin-left: 10px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap table {
|
||||||
|
border-left: 1px solid #000000;
|
||||||
|
border-top: 1px solid #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrap table td,
|
||||||
|
.wrap table th {
|
||||||
|
padding: 10px;
|
||||||
|
border-right: 1px solid;
|
||||||
|
border-bottom: 1px solid;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
ref,
|
||||||
|
onBeforeMount
|
||||||
|
} from "vue";
|
||||||
|
import {
|
||||||
|
useRoute,
|
||||||
|
useRouter
|
||||||
|
} from "#imports";
|
||||||
|
import {
|
||||||
|
useI18n
|
||||||
|
} from "vue-i18n";
|
||||||
|
import langToCheck from "@/hook/lang.js";
|
||||||
|
|
||||||
|
const {
|
||||||
|
t
|
||||||
|
} = useI18n();
|
||||||
|
|
||||||
|
useHead({
|
||||||
|
title: t('contact.thank-message'),
|
||||||
|
})
|
||||||
|
|
||||||
|
const langIs = ref('')
|
||||||
|
onBeforeMount(()=>{
|
||||||
|
langIs.value = langToCheck()
|
||||||
|
})
|
||||||
|
|
||||||
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
|
const BackToMenu = () => {
|
||||||
|
router.push("/");
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="container">
|
||||||
|
<div class="img-container">
|
||||||
|
<img src="/static/contact-us/complete.webp" alt="Icon">
|
||||||
|
</div>
|
||||||
|
<div class="message">{{t('contact.thank-message')}}</div>
|
||||||
|
<button type="button" @click="BackToMenu">{{$t('contact.back')}}</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.container{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column; /* 垂直方向排列子元素 */
|
||||||
|
justify-content: center; /* 垂直居中 */
|
||||||
|
align-items: center; /* 水平居中 */
|
||||||
|
height: 100vh; /* 让父容器高度占满视口 */
|
||||||
|
.img-container{
|
||||||
|
margin-bottom: 71px;
|
||||||
|
}
|
||||||
|
.message{
|
||||||
|
font-size: 0.48rem;
|
||||||
|
font-family: MiSans-Regular;
|
||||||
|
margin-bottom: 84px;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
width: 150px;
|
||||||
|
height: 45px;
|
||||||
|
background: #2164ff;
|
||||||
|
border-radius: 31px;
|
||||||
|
margin: 1vw auto 0;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 22px;
|
||||||
|
text-transform: capitalize;
|
||||||
|
-webkit-transition: all 0.5s;
|
||||||
|
-o-transition: all 0.5s;
|
||||||
|
transition: all 0.5s;
|
||||||
|
|
||||||
|
@media (min-width:1920px) {
|
||||||
|
width: 1.5rem;
|
||||||
|
height: 0.45rem;
|
||||||
|
font-size: 0.22rem;
|
||||||
|
border-radius: 0.31rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1680px) {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1280px) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1024px) {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
// plugins/aos.client.ts
|
||||||
|
import AOS from 'aos'
|
||||||
|
import 'aos/dist/aos.css'
|
||||||
|
|
||||||
|
export default defineNuxtPlugin((nuxtApp) => {
|
||||||
|
nuxtApp.hook('app:mounted', () => {
|
||||||
|
AOS.init()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import { getCdnImageUrl, getCdnStaticUrl, appConfig } from '@/config';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图片路径管理Vue插件
|
||||||
|
* 将图片路径处理函数注册为全局属性
|
||||||
|
*/
|
||||||
|
export default defineNuxtPlugin((nuxtApp) => {
|
||||||
|
// 在模板中可以直接使用 $cdnImageUrl 和 $cdnStaticUrl
|
||||||
|
return {
|
||||||
|
provide: {
|
||||||
|
cdnImageUrl: getCdnImageUrl,
|
||||||
|
cdnStaticUrl: getCdnStaticUrl,
|
||||||
|
appConfig: appConfig
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
import { defineNuxtPlugin } from '#imports'
|
||||||
|
|
||||||
|
export default defineNuxtPlugin(() => {
|
||||||
|
// 只在客户端执行
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
|
// 从服务端渲染的HTML中获取静态数据
|
||||||
|
const staticDataScript = document.getElementById('__NUXT_STATIC_DATA__')
|
||||||
|
if (staticDataScript) {
|
||||||
|
try {
|
||||||
|
const data = JSON.parse(staticDataScript.textContent)
|
||||||
|
window.__NUXT_STATIC_DATA__ = data
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('解析静态数据失败:', error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
import { defineNuxtPlugin } from '#imports'
|
||||||
|
import VueDOMPurifyHTML from 'vue-dompurify-html'
|
||||||
|
|
||||||
|
export default defineNuxtPlugin((nuxtApp) => {
|
||||||
|
nuxtApp.vueApp.use(VueDOMPurifyHTML)
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
import { defineNuxtPlugin } from '#imports'
|
||||||
|
import VueLazyload from 'vue3-lazyload'
|
||||||
|
|
||||||
|
export default defineNuxtPlugin(nuxtApp => {
|
||||||
|
nuxtApp.vueApp.use(VueLazyload, {
|
||||||
|
// 配置选项
|
||||||
|
loading: '',
|
||||||
|
error: '',
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
import langToCheck from "@/hook/lang.js";
|
||||||
|
import { api } from './config.js';
|
||||||
|
|
||||||
|
// 首页轮播图
|
||||||
|
export const GetCarouseApi = () => {
|
||||||
|
return api("/website/get/homePageCarousel_list", {
|
||||||
|
method: 'POST',
|
||||||
|
body: {
|
||||||
|
locale: langToCheck()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 产品分类
|
||||||
|
export const GetProductCategoryApi = () => {
|
||||||
|
return api("/website/get/productCategory_list", {
|
||||||
|
method: 'POST',
|
||||||
|
body: {
|
||||||
|
locale: langToCheck()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 产品列表
|
||||||
|
export const GetProductApi = (data) => {
|
||||||
|
return api("/website/get/product_list", {
|
||||||
|
method: 'POST',
|
||||||
|
body: data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 产品详情
|
||||||
|
export const GetProductDetailApi = (data) => {
|
||||||
|
return api("/website/get/product_detail", {
|
||||||
|
method: 'POST',
|
||||||
|
body: data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 资讯列表
|
||||||
|
export const GetNewsApi = (data) => {
|
||||||
|
return api("/website/get/news_list", {
|
||||||
|
method: 'POST',
|
||||||
|
body: data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 资讯详情
|
||||||
|
export const GetNewsDetailApi = (data) => {
|
||||||
|
return api("/website/get/news_detail", {
|
||||||
|
method: 'POST',
|
||||||
|
body: data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 联系我们提交
|
||||||
|
export const GetMessageApi = (data) => {
|
||||||
|
return api("/website/add/message", {
|
||||||
|
method: 'POST',
|
||||||
|
body: data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 证书列表
|
||||||
|
export const GetCertificateApi = () => {
|
||||||
|
return api("/website/get/certificate_list", {
|
||||||
|
method: 'POST',
|
||||||
|
body: {
|
||||||
|
locale: langToCheck()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// app下载
|
||||||
|
export const GetDownloadApi = () => {
|
||||||
|
return api("/website/get/appInstallPackage", {
|
||||||
|
method: 'POST',
|
||||||
|
body: {
|
||||||
|
locale: langToCheck()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
let BASE_URL = ''
|
||||||
|
|
||||||
|
if (process.env.NODE_ENV == 'development') {
|
||||||
|
BASE_URL = 'https://api.dev.mingyanglg.com/http/router'
|
||||||
|
} else {
|
||||||
|
BASE_URL = 'https://api.mingyanglg.com/http/router'
|
||||||
|
}
|
||||||
|
const configService = {
|
||||||
|
apiUrl: BASE_URL
|
||||||
|
};
|
||||||
|
|
||||||
|
export default configService
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
// 使用 Nuxt 4 的原生 $fetch
|
||||||
|
const API_BASE_URL = process.env.NODE_ENV === 'development'
|
||||||
|
? 'https://api.dev.mingyanglg.com/http/router'
|
||||||
|
: 'https://api.mingyanglg.com/http/router';
|
||||||
|
|
||||||
|
// 创建自定义 fetch 函数
|
||||||
|
export const api = $fetch.create({
|
||||||
|
baseURL: API_BASE_URL,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
onRequest({ request, options }) {
|
||||||
|
// 请求拦截
|
||||||
|
console.log('Making request to:', request);
|
||||||
|
},
|
||||||
|
onResponse({ response }) {
|
||||||
|
// 响应拦截
|
||||||
|
if (response._data && response._data.code === 0) {
|
||||||
|
return response._data;
|
||||||
|
} else if (response._data) {
|
||||||
|
throw new Error(response._data.message || 'API Error');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onResponseError({ response }) {
|
||||||
|
// 错误处理
|
||||||
|
console.error('HTTP Error:', response.status, response._data);
|
||||||
|
throw new Error(`HTTP ${response.status}: ${response._data?.message || 'Request failed'}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
{
|
||||||
|
"en": {
|
||||||
|
"carousel": {
|
||||||
|
"rows": []
|
||||||
|
},
|
||||||
|
"categories": {
|
||||||
|
"rows": []
|
||||||
|
},
|
||||||
|
"products": {
|
||||||
|
"rows": []
|
||||||
|
},
|
||||||
|
"news": {
|
||||||
|
"rows": []
|
||||||
|
},
|
||||||
|
"certificates": {
|
||||||
|
"rows": []
|
||||||
|
},
|
||||||
|
"downloads": {
|
||||||
|
"rows": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cn": {
|
||||||
|
"carousel": {
|
||||||
|
"rows": []
|
||||||
|
},
|
||||||
|
"categories": {
|
||||||
|
"rows": []
|
||||||
|
},
|
||||||
|
"products": {
|
||||||
|
"rows": []
|
||||||
|
},
|
||||||
|
"news": {
|
||||||
|
"rows": []
|
||||||
|
},
|
||||||
|
"certificates": {
|
||||||
|
"rows": []
|
||||||
|
},
|
||||||
|
"downloads": {
|
||||||
|
"rows": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import {defineStore} from 'pinia'
|
||||||
|
//商品状态管理
|
||||||
|
|
||||||
|
const useCounter = defineStore("goods",{
|
||||||
|
state:() => ({
|
||||||
|
categoryList:[],
|
||||||
|
}),
|
||||||
|
getters: {
|
||||||
|
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export default useCounter
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
import {
|
||||||
|
defineStore
|
||||||
|
} from 'pinia'
|
||||||
|
import {
|
||||||
|
GetCarouseApi
|
||||||
|
} from '@/service/api.js'
|
||||||
|
|
||||||
|
//新闻与展会状态管理
|
||||||
|
|
||||||
|
const useCarouse = defineStore("useCarouse", {
|
||||||
|
state: () => ({
|
||||||
|
CarouseList: [{
|
||||||
|
"_id": "",
|
||||||
|
"path": "",
|
||||||
|
"sort": "0",
|
||||||
|
"children": [{
|
||||||
|
"title": "",
|
||||||
|
"sub_title": "",
|
||||||
|
"image": ""
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}),
|
||||||
|
getters: {
|
||||||
|
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
async GetCarouseFunctin() {
|
||||||
|
try {
|
||||||
|
const res = await GetCarouseApi();
|
||||||
|
this.CarouseList = res.rows;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取轮播图失败:', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export default useCarouse
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import {defineStore} from 'pinia'
|
||||||
|
//新闻与展会状态管理
|
||||||
|
|
||||||
|
const useNews = defineStore("news",{
|
||||||
|
state:() => ({
|
||||||
|
selectBool:{},
|
||||||
|
}),
|
||||||
|
getters: {
|
||||||
|
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export default useNews
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
import { defineStore } from "pinia";
|
||||||
|
//商品状态管理
|
||||||
|
|
||||||
|
const useCounter = defineStore("seller", {
|
||||||
|
state: () => ({
|
||||||
|
clickTab: 0,
|
||||||
|
categoryList: [],
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
export default useCounter;
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
// https://nuxt.com/docs/guide/concepts/typescript
|
||||||
|
"extends": "./.nuxt/tsconfig.json"
|
||||||
|
}
|
||||||