naweigete-web/pages/index.vue

715 lines
25 KiB
Vue
Raw Normal View History

2025-03-12 14:18:25 +08:00
<template>
<div style="height: 100%;width: 100%;">
<!-- Swiper 容器 -->
2025-03-13 14:15:31 +08:00
<swiper class="swiper-container h-full" v-bind="swiperOptions" @swiper="onSwiper" @slideChange="onSlideChange">
2025-03-12 14:18:25 +08:00
<!-- 第一个滑块 -->
<swiper-slide class="swiper-slide-a flex flex-col items-center justify-center text-white" :style="{
backgroundImage: `url(${bgImage})`,
backgroundPosition: 'center center',
backgroundRepeat: 'no-repeat',
2025-03-14 15:53:35 +08:00
backgroundSize: 'cover',
2025-03-12 14:18:25 +08:00
}">
2025-03-14 15:53:35 +08:00
<div class="ani md:text-xl text-base font-light tracking-[0.3em]" swiper-animate-effect="fadeInUp"
2025-03-13 14:15:31 +08:00
swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
2025-03-19 18:01:04 +08:00
{{ locale == 'zh' ? store.tempApiData.company_name : store.tempApiData.en_company_name }}
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<div class="ani w-[80%] md:w-[45%] h-px bg-white my-5" swiper-animate-effect="fadeInUp"
2025-03-13 14:15:31 +08:00
swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
</div>
2025-03-14 15:53:35 +08:00
<div class="md:text-3xl text-xl font-semibold ani" swiper-animate-effect="fadeInUp"
2025-03-19 18:01:04 +08:00
swiper-animate-duration="0.5s" swiper-animate-delay="0.4s">{{ locale == 'zh' ?
top_one.home_one_text : top_one.en_home_one_text }}</div>
2025-03-14 15:53:35 +08:00
<div class="w-[80%] md:w-[45%] h-px bg-white my-5 ani" swiper-animate-effect="fadeInUp"
2025-03-13 14:15:31 +08:00
swiper-animate-duration="0.5s" swiper-animate-delay="0.3s"></div>
2025-03-14 15:53:35 +08:00
<div class="md:text-lg text-base font-light ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">{{ $t('index_get_to') }}</div>
<div class="array" style="margin-top: 30px; margin-bottom: 20px;">
<img class="w-[40px] h-[40px] md:w-[50px] md:h-[50px]" src="/images/group9.png">
2025-03-12 14:18:25 +08:00
</div>
<!-- 社交图标 -->
2025-03-14 15:53:35 +08:00
<div class="absolute bottom-[20px] md:bottom-[42px] w-full ani" swiper-animate-effect="fadeInUp"
2025-03-13 14:15:31 +08:00
swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
2025-03-12 14:18:25 +08:00
<div class="flex justify-center w-full">
2025-03-19 18:01:04 +08:00
<template v-for="(item, index) in store.serApiData">
<img @click="shareToLink(item)" :src="item.img"
class="w-[25px] h-[25px] md:w-[30px] md:h-[30px] cursor-pointer">
<span v-if="index !== store.serApiData.length - 1"
class="mx-[10px] md:mx-[17px] border-r-2 border-white h-[25px] md:h-[30px] mb-[-12px]"></span>
</template>
<!-- <img @click="shareToYoutube" src="/images/group14.png"
2025-03-14 15:53:35 +08:00
class="w-[25px] h-[25px] md:w-[30px] md:h-[30px] cursor-pointer">
<span
class="mx-[10px] md:mx-[17px] border-r-2 border-white h-[25px] md:h-[30px] mb-[-12px]"></span>
2025-03-13 14:15:31 +08:00
<img @click="shareToInstagram" src="/images/group13.png"
2025-03-14 15:53:35 +08:00
class="w-[25px] h-[25px] md:w-[30px] md:h-[30px] cursor-pointer">
<span
class="mx-[10px] md:mx-[17px] border-r-2 border-white h-[25px] md:h-[30px] mb-[-12px]"></span>
<img @click="shareToYoutube" src="/images/group12.png"
2025-03-19 18:01:04 +08:00
class="w-[25px] h-[25px] md:w-[30px] md:h-[30px] cursor-pointer"> -->
2025-03-12 14:18:25 +08:00
</div>
<!-- 导航链接 -->
2025-03-14 15:53:35 +08:00
<div class="w-[80%] md:w-[45%] h-[2px] bg-white mx-auto my-3 md:my-5"></div>
<div
class="flex flex-wrap w-full md:w-1/2 justify-around px-2 md:px-0 mx-auto text-xs md:text-base">
2025-03-19 18:01:04 +08:00
<NuxtLink to="/index_about/" class="text-white mb-1 md:mb-0">{{ $t('index_about') }}</NuxtLink>
<NuxtLink to="/index_service/" class="text-white mb-1 md:mb-0">{{ $t('index_services') }}
</NuxtLink>
<NuxtLink to="/index_clients/" class="text-white mb-1 md:mb-0">{{ $t('index_clients') }}
</NuxtLink>
<NuxtLink to="/index_news/" class="text-white mb-1 md:mb-0">{{ $t('index_news') }}</NuxtLink>
<NuxtLink to="/index_contact/" class="text-white mb-1 md:mb-0">{{ $t('index_contact') }}
</NuxtLink>
2025-03-12 14:18:25 +08:00
</div>
</div>
</swiper-slide>
2025-03-13 14:15:31 +08:00
<!-- 第二个滑块 -->
<swiper-slide class="swiper-slide-a text-white" :style="{
backgroundImage: `url(${bgImage2})`,
backgroundPosition: 'center center',
backgroundRepeat: 'no-repeat',
2025-03-14 15:53:35 +08:00
backgroundSize: 'cover',
2025-03-13 14:15:31 +08:00
height: '100%'
}">
2025-03-14 15:53:35 +08:00
<div class="px-4 md:px-[150px]">
<div class="flex flex-col md:flex-row items-center text-left">
<div class="w-full md:w-1/2 mb-5 md:mb-0">
<h2 class="text-xl md:text-3xl t1 inline-block ani" swiper-animate-effect="fadeInUp"
2025-03-19 18:01:04 +08:00
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">{{ locale == 'zh' ?
top_two.home_two_title : top_two.en_home_two_title }}</h2>
2025-03-14 15:53:35 +08:00
<h4 class="text-base md:text-lg mt-5 md:mt-10 leading-[25px] md:leading-[35px] ani"
swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s"
2025-03-19 18:01:04 +08:00
swiper-animate-delay="0.1s">{{
locale == 'zh' ?
top_two.home_two_desc : top_two.en_home_two_desc }}</h4>
2025-03-14 15:53:35 +08:00
<div class="w-[30%] md:w-[18%] h-[2px] bg-white my-3 md:my-5 ani"
swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s"></div>
2025-03-13 14:15:31 +08:00
<div class="flex items-center ani" swiper-animate-effect="fadeInUp"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
2025-03-19 18:01:04 +08:00
<NuxtLink to="/index_clients" class="text-white">{{ $t('index_m3') }}</NuxtLink>
2025-03-13 14:15:31 +08:00
<img src="/images/group7.png" alt="">
</div>
</div>
2025-03-14 15:53:35 +08:00
<div class="w-full md:w-1/2 text-center ani" swiper-animate-effect="fadeInUp"
2025-03-13 14:15:31 +08:00
swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
2025-03-19 18:01:04 +08:00
<img :src="top_two.home_two_img" class="w-[250px] md:w-[400px] mx-auto">
2025-03-13 14:15:31 +08:00
</div>
</div>
2025-03-14 15:53:35 +08:00
<div class="w-full h-px bg-white my-5 md:my-10"></div>
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<div class="flex flex-col md:flex-row w-full justify-center px-4 md:px-0">
<div class="w-full md:w-[205px] mb-5 md:mb-0 ani" swiper-animate-effect="zoomIn"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
2025-03-19 18:01:04 +08:00
<h4 class="t2 text-lg md:text-xl font-semibold">{{ locale == 'zh' ?
top_two.home_two_left_title : top_two.en_home_two_left_title }}</h4>
<div class="mt-[10px] md:mt-[15px] leading-[22px] md:leading-[26px] tracking-[1px]">{{ locale ==
'zh' ?
top_two.home_two_left_desc : top_two.en_home_two_left_desc }}</div>
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<span class="hidden md:inline-block mx-[60px] -mb-3 border-r-2 border-white h-[145px] ani"
2025-03-13 14:15:31 +08:00
swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s"></span>
2025-03-14 15:53:35 +08:00
<div class="w-full md:w-[205px] mb-5 md:mb-0 ani" swiper-animate-effect="zoomIn"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
2025-03-19 18:01:04 +08:00
<h4 class="t2 text-lg md:text-xl font-semibold">{{ locale == 'zh' ?
top_two.home_two_center_title : top_two.en_home_two_center_title }}</h4>
<div class="mt-[10px] md:mt-[15px] leading-[22px] md:leading-[26px] tracking-[1px]">{{ locale ==
'zh' ?
top_two.home_two_center_desc : top_two.en_home_two_center_desc }}</div>
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<span class="hidden md:inline-block mx-[60px] -mb-3 border-r-2 border-white h-[145px] ani"
2025-03-13 14:15:31 +08:00
swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s"></span>
2025-03-14 15:53:35 +08:00
<div class="w-full md:w-[205px] ani" swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
2025-03-13 14:15:31 +08:00
swiper-animate-delay="0.1s">
2025-03-19 18:01:04 +08:00
<h4 class="t2 text-lg md:text-xl font-semibold">{{ locale == 'zh' ?
top_two.home_two_right_title : top_two.en_home_two_right_title }}</h4>
<div class="mt-[10px] md:mt-[15px] leading-[22px] md:leading-[26px] tracking-[1px]">{{ locale ==
'zh' ?
top_two.home_two_right_desc : top_two.en_home_two_right_desc }}</div>
2025-03-13 14:15:31 +08:00
</div>
</div>
<div class="array absolute bottom-[50px]">
2025-03-14 15:53:35 +08:00
<img class="w-[40px] h-[40px] md:w-[50px] md:h-[50px]" src="/images/group9.png" alt="">
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<div v-if="!isMobile"
class="absolute bottom-42 px-4 flex flex-col md:flex-row justify-between items-center right-2">
<div class="float-left flex mb-3 md:mb-0">
2025-03-13 14:15:31 +08:00
<img src="/images/group191.png" class="h-full mt-[10px]">
2025-03-14 15:53:35 +08:00
<span class="box2ybs1">{{ $t('index_m7') }}</span>
2025-03-13 14:15:31 +08:00
<span class="mx-4 box2ybs2"></span>
</div>
<div class="float-right text-center">
2025-03-14 15:53:35 +08:00
<img @click="scrollToTop" src="/images/group97.png"
class="w-[30px] h-[30px] md:w-[35px] md:h-[35px] cursor-pointer">
<div class="w-[28px] md:w-[33px] h-[1px] bg-[#DEDEDE] mx-auto my-2"></div>
2025-03-19 18:01:04 +08:00
<temple v-for="(item, index) in store.serApiData">
<img @click="shareToLink(item)" :src="item.img"
class="w-[30px] h-[30px] md:w-[35px] md:h-[35px] cursor-pointer">
<div v-if="index !== store.serApiData.length - 1"
class="w-[28px] md:w-[33px] h-[1px] bg-[#DEDEDE] mx-auto my-2"></div>
</temple>
<!-- <div class="mr-2 md:mr-0">
2025-03-14 15:53:35 +08:00
<img @click="shareToInstagram" src="/images/group11.png"
class="w-[30px] h-[30px] md:w-[35px] md:h-[35px] cursor-pointer">
<div class="w-[28px] md:w-[33px] h-[1px] bg-[#DEDEDE] mx-auto my-2"></div>
</div>
<div class="mr-2 md:mr-0">
<img @click="shareToYoutube" src="/images/group14.png"
class="w-[30px] h-[30px] md:w-[35px] md:h-[35px] cursor-pointer">
<div class="w-[28px] md:w-[33px] h-[1px] bg-[#DEDEDE] mx-auto my-2"></div>
</div>
<div class="mr-2 md:mr-0">
<img @click="shareToFacebook" src="/images/group13.png"
class="w-[30px] h-[30px] md:w-[35px] md:h-[35px] cursor-pointer">
<div class="w-[28px] md:w-[33px] h-[1px] bg-[#DEDEDE] mx-auto my-2"></div>
</div>
<div>
<img @click="shareToX" src="/images/group12.png"
class="w-[30px] h-[30px] md:w-[35px] md:h-[35px] cursor-pointer">
2025-03-19 18:01:04 +08:00
</div> -->
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
2025-03-13 14:15:31 +08:00
</div>
</swiper-slide>
<!-- 第三个滑块 -->
<swiper-slide class="swiper-slide-a" :style="{
height: '100%'
}">
2025-03-14 15:53:35 +08:00
<h3 class="t3 text-xl md:text-2xl font-semibold ani" swiper-animate-effect="fadeInUp"
2025-03-19 18:01:04 +08:00
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">{{ locale == 'zh' ?
top_three.home_three_title : top_three.en_home_three_title }}</h3>
2025-03-14 15:53:35 +08:00
<div class="w-[90%] md:w-1/2 mt-[20px] md:mt-[30px] text-xs md:text-sm text-[#606060] text-center ani"
swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
2025-03-19 18:01:04 +08:00
{{ locale == 'zh' ? top_three.home_three_desc : top_three.en_home_three_desc }}
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<div class="px-4 md:px-[150px] py-3 md:py-5">
2025-03-19 18:01:04 +08:00
<div class="flex flex-wrap md:flex-row justify-center" v-if="top_three.home_three_img">
2025-03-14 15:53:35 +08:00
<div class="relative w-1/2 md:w-1/3 mb-4 md:mb-0 ani" swiper-animate-effect="zoomIn"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
2025-03-19 18:01:04 +08:00
<img :src="top_three.home_three_img[0]" class="w-[90%] md:w-[80%] mx-auto">
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<div class="relative w-1/2 md:w-1/3 mb-4 md:mb-0 ani" swiper-animate-effect="zoomIn"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
2025-03-19 18:01:04 +08:00
<img :src="top_three.home_three_img[1]" class="w-[90%] md:w-[80%] mx-auto">
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<div class="relative w-1/2 md:w-1/3 mb-4 md:mb-0 ani mx-auto" swiper-animate-effect="zoomIn"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
2025-03-19 18:01:04 +08:00
<img :src="top_three.home_three_img[2]" class="w-[90%] md:w-[80%] mx-auto">
2025-03-13 14:15:31 +08:00
</div>
</div>
2025-03-14 15:53:35 +08:00
<div class="w-full h-px bg-[#1C1C1C] my-3 md:my-5"></div>
2025-03-13 14:15:31 +08:00
</div>
<div class="flex items-center ani" swiper-animate-effect="zoomIn" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s">
2025-03-19 18:01:04 +08:00
<NuxtLink to="/index_clients" class="text-[#0c1923]">{{ $t('index_m3') }}</NuxtLink>
2025-03-13 14:15:31 +08:00
<img src="/images/group7-1.png" alt="">
</div>
<div class="array absolute bottom-[50px]">
2025-03-14 15:53:35 +08:00
<img class="w-[40px] h-[40px] md:w-[50px] md:h-[50px]" src="/images/group40.png" alt="">
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<div v-if="!isMobile"
class="absolute bottom-42 px-4 flex flex-col md:flex-row justify-between items-center right-2">
<div class="float-left flex mb-3 md:mb-0">
<img src="/images/group191.png" class="h-full mt-[10px]">
2025-03-13 14:15:31 +08:00
<div style="width: 100px;">
2025-03-19 18:01:04 +08:00
<div class="text-[#337ab7] cursor-pointer hover:text-[#175FCB] text-sm md:text-base">
<NuxtLink to="/index_contact/"> {{ $t('index_contact') }}</NuxtLink>
2025-03-13 14:15:31 +08:00
</div>
<div class="box3zx1"></div>
2025-03-19 18:01:04 +08:00
<div class="text-[#337ab7] cursor-pointer hover:text-[#175FCB] text-sm md:text-base">
<NuxtLink to="/index_news/">{{ $t('index_news') }}</NuxtLink>
</div>
2025-03-13 14:15:31 +08:00
<div class="box3zx1"></div>
2025-03-19 18:01:04 +08:00
<div class="text-[#337ab7] cursor-pointer hover:text-[#175FCB] text-sm md:text-base">
<NuxtLink to="/index_about/">{{ $t('index_about') }}</NuxtLink>
2025-03-13 14:15:31 +08:00
</div>
<div class="box3zx1"></div>
2025-03-19 18:01:04 +08:00
<div class="text-[#337ab7] cursor-pointer hover:text-[#175FCB] text-sm md:text-base">
<NuxtLink to="/index_service/">{{ $t('index_services') }}</NuxtLink>
2025-03-13 14:15:31 +08:00
</div>
<div class="box3zx1"></div>
2025-03-19 18:01:04 +08:00
<div class="text-[#337ab7] cursor-pointer hover:text-[#175FCB] text-sm md:text-base">
<NuxtLink to="/index_clients/">{{ $t('index_clients') }}</NuxtLink>
2025-03-13 14:15:31 +08:00
</div>
</div>
2025-03-14 15:53:35 +08:00
<div class="box19y">
<span></span>
</div>
2025-03-13 14:15:31 +08:00
</div>
<div class="float-right text-center">
<img @click="scrollToTop" src="/images/group97-1.png" class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[2px] bg-[#A8CBFF] mx-auto my-2"></div>
2025-03-19 18:01:04 +08:00
<template v-for="(item, index) in store.serApiData">
<img @click="shareToLink(item)" :src="item.img_two"
class="w-[35px] h-[35px] cursor-pointer">
<div v-if="index !== store.serApiData.length - 1"
class="w-[33px] h-[2px] bg-[#A8CBFF] mx-auto my-2"></div>
</template>
<!-- <img @click="shareToInstagram" src="/images/group11-1.png"
2025-03-13 14:15:31 +08:00
class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[2px] bg-[#A8CBFF] mx-auto my-2"></div>
<img @click="shareToYoutube" src="/images/group14-1.png"
class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[2px] bg-[#A8CBFF] mx-auto my-2"></div>
<img @click="shareToFacebook" src="/images/group13-1.png"
class="w-[35px] h-[35px] cursor-pointer">
<div class="w-[33px] h-[2px] bg-[#A8CBFF] mx-auto my-2"></div>
2025-03-19 18:01:04 +08:00
<img @click="shareToX" src="/images/group12-1.png" class="w-[35px] h-[35px] cursor-pointer"> -->
2025-03-13 14:15:31 +08:00
</div>
</div>
</swiper-slide>
2025-03-14 15:53:35 +08:00
2025-03-13 14:15:31 +08:00
<!-- 第四个滑块 -->
<swiper-slide class="swiper-slide-a" :style="{
2025-03-19 18:01:04 +08:00
backgroundImage: `url(${bgImage4})`,
2025-03-13 14:15:31 +08:00
backgroundPosition: 'center center',
backgroundRepeat: 'no-repeat',
backgroundSize: '100% 100%',
height: '100%',
color: '#000000',
textAlign: 'left'
}">
<div class="flex justify-center">
2025-03-14 15:53:35 +08:00
<div :class="isMobile ? 'w-[100%] px-[30px]' : 'w-[30%]'">
2025-03-13 14:15:31 +08:00
<h2 class="ani t4 text-3xl" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s"
2025-03-19 18:01:04 +08:00
swiper-animate-delay="0.1s">{{ locale == 'zh'
? top_four.home_four_title : top_four.en_home_four_title }}</h2>
2025-03-13 14:15:31 +08:00
<div class="ani" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s"
2025-03-19 18:01:04 +08:00
style="line-height: 25px;margin-top: 30px;color: #606060;font-size: 14px;">
{{ locale == 'zh'
? top_four.home_four_desc : top_four.en_home_four_desc }}</div>
2025-03-13 14:15:31 +08:00
<div class="ani" swiper-animate-effect="fadeInLeft" swiper-animate-duration="0.5s"
swiper-animate-delay="0.1s"
style="width: 100%; height: 1px; background-color: #F1F1F1; margin: 20px auto;"></div>
<div class="ani flex items-center justify-end" swiper-animate-effect="fadeInLeft"
swiper-animate-duration="0.5s" swiper-animate-delay="0.1s">
<div>
2025-03-19 18:01:04 +08:00
<NuxtLink to="/index_about/" class="text-[#0c1923]">{{ $t('index_m3') }}</NuxtLink>
2025-03-13 14:15:31 +08:00
</div>
<div>
<img src="/images/group6.png" class="w-5 ml-[5px]">
</div>
</div>
</div>
2025-03-14 15:53:35 +08:00
<div v-if="!isMobile" class="w-[45%]"></div>
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<div v-if="!isMobile" class="box2yb absolute px-4 bottom-42 right-2">
2025-03-13 14:15:31 +08:00
<div class="box2yb191 float-left pr-[14px] flex">
<img src="/images/group191.png" class="h-full mt-[10px]">
<span class="box2ybs1">{{ $t('index_m7') }}</span>
<span class="box2ybs2 border-r-2 border-[#DEDEDE]"></span>
</div>
<div class="box1ybi float-right">
<img class="back-to-top py-[6px] cursor-pointer" src="/images/group97.png" @click="scrollToTop">
<div class="box1ybz"></div>
2025-03-19 18:01:04 +08:00
<template v-for="(item, index) in store.serApiData">
<img @click="shareToLink(item)" :src="item.img" class="py-[6px] cursor-pointer">
<div class="box1ybz"></div>
</template>
2025-03-13 14:15:31 +08:00
</div>
</div>
<div class="array absolute bottom-[50px]">
<img class="w-[50px] h-[50px]" src="/images/group40.png">
</div>
</swiper-slide>
<!--第五个滑块-->
<swiper-slide class="swiper-slide-a">
2025-03-14 15:53:35 +08:00
<div class="flex flex-col md:flex-row justify-center items-center w-full">
<div class="w-full md:w-[40%] text-center md:text-right mb-5 md:mb-0">
<img id="img1" :src="leftImg"
class="w-[80%] mx-auto md:ml-auto md:mr-0 border-r-[10px] border-[#214ADB] inline-block">
2025-03-13 14:15:31 +08:00
</div>
2025-03-14 15:53:35 +08:00
<div class="w-full md:w-[44%] text-left md:pl-5 px-4">
2025-03-13 14:15:31 +08:00
<h2 class="text-2xl font-bold">{{ $t('index_n1') }}</h2>
<div class="my-[20px]">{{ $t('index_n2') }}</div>
<div class="h-[1px] w-[150px] bg-[#0c1923]"></div>
<div class="flex mt-[10px]">
2025-03-14 15:53:35 +08:00
<div>
2025-03-19 18:01:04 +08:00
<NuxtLink to="/index_clients" class="text-[#0c1923]">{{ $t('index_m3') }}</NuxtLink>
2025-03-14 15:53:35 +08:00
</div>
2025-03-13 14:15:31 +08:00
<div>
<img src="/images/group7-1.png" class="w-5 ml-[5px]">
</div>
</div>
<div class="news_padd flex items-center">
2025-03-14 15:53:35 +08:00
<img id="swipen_next" src="/images/group10.png" class="w-[30px] cursor-pointer">
<swiper class="swiper-container h-full" @swiper="onSwiperNews" v-bind="swiperOptionsNews"
@slideChange="onSlideChangeNews">
<swiper-slide v-for="(item, index) in newsList" :key="index" :virtualIndex="index"
class="swiper-wrapper w-full">
2025-03-13 14:15:31 +08:00
<!-- 这里可以使用v-for循环渲染新闻列表 -->
<div class="swiper-slide">
<div class="text-center">
2025-03-13 17:37:54 +08:00
<h3 class="font-semibold text-2xl line-clamp-1">
2025-03-19 18:01:04 +08:00
<nuxtLink :to="`/info/${item.id}`" target="_blank"
class="text-[#0c1923]">
2025-03-14 15:53:35 +08:00
{{ locale == "en" ? item.en_title : item.title }}
2025-03-19 18:01:04 +08:00
</nuxtLink>
2025-03-13 14:15:31 +08:00
</h3>
2025-03-13 17:37:54 +08:00
<h5 class="text-[#606060] mt-[25px] leading-[25px] line-clamp-2">
2025-03-19 18:01:04 +08:00
<nuxtLink :to="`/info/${item.id}`" target="_blank"
class="text-[#0c1923]">
2025-03-14 15:53:35 +08:00
{{ locale == "en" ? item.en_synopsis : item.synopsis }}
2025-03-19 18:01:04 +08:00
</nuxtLink>
2025-03-13 14:15:31 +08:00
</h5>
</div>
</div>
</swiper-slide>
</swiper>
2025-03-14 15:53:35 +08:00
<img id="swipen_prev" src="/images/group9-1.png" class="w-[30px] cursor-pointer">
2025-03-13 14:15:31 +08:00
</div>
2025-03-13 17:37:54 +08:00
<div class="w-full h-[1px] bg-black mt-3"></div>
2025-03-13 14:15:31 +08:00
</div>
</div>
2025-03-14 15:53:35 +08:00
<div v-if="!isMobile" class="absolute right-[10px]">
2025-03-13 14:15:31 +08:00
<div class="box2yb191 float-left pr-[14px] flex">
<img src="/images/group194.png" class="h-full mt-[10px]">
2025-03-14 15:53:35 +08:00
<span class="box2ybs4 text-[#175FCB]">{{ $t('index_m7') }}</span>
2025-03-13 14:15:31 +08:00
<span class="box2ybs5 border-r-[2px] border-[#A8CBFF]"></span>
</div>
<div class="box1ybi float-right">
2025-03-14 15:53:35 +08:00
<img class="back-to-top py-[6px] cursor-pointer" src="/images/group97-1.png"
@click="scrollToTop">
2025-03-19 18:01:04 +08:00
<div class="box1ybz2"></div>
<template v-for="(item, index) in store.serApiData">
<img @click="shareToLink(item)" :src="item.img_two"
class="h-[35px] w-[35px] cursor-pointer">
<div v-if="index !== store.serApiData.length - 1" class="box1ybz2"></div>
</template>
2025-03-13 14:15:31 +08:00
</div>
</div>
</swiper-slide>
2025-03-12 14:18:25 +08:00
</swiper>
</div>
</template>
<script lang="ts" setup>
import { Swiper, SwiperSlide } from 'swiper/vue'
2025-03-13 14:15:31 +08:00
import { nextTick, ref } from 'vue'
2025-03-12 14:18:25 +08:00
import 'swiper/css'
2025-03-13 14:15:31 +08:00
import { Mousewheel, Navigation } from 'swiper/modules'
import 'swiper/css/mousewheel'
import 'swiper/css/navigation'
import * as swiperAni from '@/assets/animate/animate.js'
2025-03-13 17:37:54 +08:00
import $api from '@/service/webRequest'
2025-03-14 15:53:35 +08:00
import { useI18n } from 'vue-i18n'
2025-03-19 18:01:04 +08:00
import { useStore } from '~/store'
2025-03-14 15:53:35 +08:00
const { locale } = useI18n()
2025-03-13 17:37:54 +08:00
// 新闻数据
const leftImg = ref();
const newsList = ref([])
2025-03-14 15:53:35 +08:00
const isMobile = ref(false)
2025-03-19 18:01:04 +08:00
const store = useStore()
2025-03-13 17:37:54 +08:00
onMounted(() => {
2025-03-14 15:53:35 +08:00
//获取是在pc还是手机端
isMobile.value = window.innerWidth < 768
2025-03-13 17:37:54 +08:00
getNewsList();
2025-03-19 18:01:04 +08:00
topOneList();
topTwoList();
topThreeList();
topFourList();
2025-03-13 17:37:54 +08:00
})
const getNewsList = () => {
$api.get("/api/article/list/1")
2025-03-14 15:53:35 +08:00
.then((res: any) => {
console.log(res)
newsList.value = res.data.data.list
leftImg.value = res.data.data.list[0].image_input[0]
})
.catch((err) => {
console.dir(err)
})
2025-03-13 17:37:54 +08:00
}
2025-04-08 09:08:12 +08:00
const top_one = ref({});
const top_two = ref({});
const top_three = ref({});
const top_four = ref({});
2025-03-19 18:01:04 +08:00
const topOneList = () => {
$api.get("/api/sys_config?name=top_one")
.then((res: any) => {
console.log(res)
top_one.value = res.data.data.config
})
.catch((err) => {
console.dir(err)
})
}
const topTwoList = () => {
$api.get("/api/sys_config?name=top_two")
.then((res: any) => {
console.log(res)
top_two.value = res.data.data.config
})
.catch((err) => {
console.dir(err)
})
}
const topThreeList = () => {
$api.get("/api/sys_config?name=top_three")
.then((res: any) => {
console.log(res)
top_three.value = res.data.data.config
})
.catch((err) => {
console.dir(err)
})
}
const topFourList = () => {
$api.get("/api/sys_config?name=top_four")
.then((res: any) => {
console.log(res)
top_four.value = res.data.data.config
})
.catch((err) => {
console.dir(err)
})
}
2025-03-12 14:18:25 +08:00
// 导入背景图片
const bgImage = 'images/Group157.png'
2025-03-13 14:15:31 +08:00
// 添加第二个背景图片
2025-03-19 18:01:04 +08:00
const bgImage2 = 'images/Group157.png'
// 添加第四个背景图片
const bgImage4 = 'images/group159.png'
2025-03-13 14:15:31 +08:00
2025-03-12 14:18:25 +08:00
// Swiper实例
let swiperInstance: any = null
2025-03-13 14:15:31 +08:00
// 新闻轮播实例
let newsSwiper: any = null
// Swiper配置
const swiperOptions = {
direction: 'vertical',
slidesPerView: 1,
mousewheel: true,
2025-03-14 15:53:35 +08:00
speed: 800,
modules: [Mousewheel, Navigation],
// 添加断点配置,在小屏幕上调整行为
on: {
init: function () {
swiperAnimateCache(this);
swiperAnimate(this);
},
slideChangeTransitionEnd: function () {
swiperAnimate(this);
},
},
2025-03-13 14:15:31 +08:00
}
// Swiper配置
const swiperOptionsNews = {
direction: 'horizontal',
slidesPerView: 1,
speed: 700,
loop: false,
2025-03-14 15:53:35 +08:00
modules: [Navigation],
2025-03-13 14:15:31 +08:00
navigation: {
2025-03-14 15:53:35 +08:00
nextEl: '#swipen_prev',
prevEl: '#swipen_next',
2025-03-13 14:15:31 +08:00
},
}
2025-03-14 15:53:35 +08:00
const onSlideChangeNews = (swiper: any) => {
console.log(newsList.value[swiper.activeIndex]);
leftImg.value = newsList.value[swiper.activeIndex].image_input[0]
}
2025-03-13 14:15:31 +08:00
const onSwiperNews = (swiper: any) => {
newsSwiper = swiper
}
2025-03-12 14:18:25 +08:00
const onSwiper = (swiper: any) => {
swiperInstance = swiper
2025-03-13 14:15:31 +08:00
// 初始化完成开始动画
nextTick(() => {
swiperAni.swiperAnimateCache(swiper); // 隐藏动画元素
swiperAni.swiperAnimate(swiper); // 初始化完成开始动画
})
2025-03-12 14:18:25 +08:00
}
const onSlideChange = () => {
// 处理滑块切换
2025-03-13 14:15:31 +08:00
if (swiperInstance) {
//console.log('slide change')
setTimeout(() => {
swiperAni.swiperAnimate(swiperInstance); // 每个slide开始切换时也运行当前slide动画
}, 300)
}
2025-03-12 14:18:25 +08:00
}
// 社交分享功能
2025-03-19 18:01:04 +08:00
const shareToLink = (item) => {
2025-03-12 14:18:25 +08:00
// 实现Instagram分享
2025-03-19 18:01:04 +08:00
window.open(item.link, '_blank');
2025-03-12 14:18:25 +08:00
}
2025-03-13 14:15:31 +08:00
// 添加回到顶部功能
const scrollToTop = () => {
if (swiperInstance) {
swiperInstance.slideTo(0)
}
}
2025-03-12 14:18:25 +08:00
</script>
<style lang="scss" scoped>
2025-03-13 14:15:31 +08:00
@import "@/assets/animate/animate.min.css";
2025-03-12 14:18:25 +08:00
.swiper-slide-a {
text-align: center;
background: #fff;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
2025-03-14 15:53:35 +08:00
.box2ybs2 {
margin-left: -14px;
border-right: 2px solid #ffffff;
display: inline-block;
height: 224px;
margin-top: 10px;
2025-03-12 14:18:25 +08:00
}
2025-03-14 15:53:35 +08:00
.box2ybs1 {
writing-mode: vertical-rl;
transform: rotate(360deg);
padding-right: 20px;
padding-left: 5px;
color: #DEDEDE;
letter-spacing: 2px;
text-align: center;
2025-03-12 14:18:25 +08:00
}
2025-03-19 18:01:04 +08:00
.t1::after {
content: '';
margin-top: -13px;
width: 205px;
height: 20px;
background: #175FCB;
display: block;
}
.t2::after {
content: '';
width: 100px;
height: 20px;
background: #175FCB;
display: block;
margin: 0 auto;
margin-top: -13px;
}
2025-03-14 15:53:35 +08:00
// 添加媒体查询,针对手机端优化
@media (max-width: 768px) {
.t1::after {
width: 150px;
height: 15px;
2025-03-12 14:18:25 +08:00
}
2025-03-13 14:15:31 +08:00
2025-03-14 15:53:35 +08:00
.t2::after {
width: 80px;
height: 15px;
2025-03-12 14:18:25 +08:00
}
2025-03-13 14:15:31 +08:00
2025-03-14 15:53:35 +08:00
.t3::after {
width: 250px;
height: 15px;
2025-03-12 14:18:25 +08:00
}
2025-03-13 14:15:31 +08:00
2025-03-14 15:53:35 +08:00
.t4::after {
width: 80px;
height: 15px;
2025-03-13 14:15:31 +08:00
}
2025-03-14 15:53:35 +08:00
.t5::after {
width: 80px;
height: 15px;
2025-03-13 14:15:31 +08:00
}
2025-03-14 15:53:35 +08:00
.box2ybs3 {
height: 180px;
}
2025-03-13 14:15:31 +08:00
}
2025-04-08 09:08:12 +08:00
.t4::after {
content: '';
width: 120px;
height: 20px;
background: #A3C8FF;
display: block;
margin-top: -13px;
}
2025-03-19 18:01:04 +08:00
.box19y {
padding-right: 10px;
}
2025-03-14 15:53:35 +08:00
.box19y span {
margin-left: 0.1rem;
2025-03-13 14:15:31 +08:00
border-right: 2px solid #A8CBFF;
display: inline-block;
height: 224px;
margin-top: 10px;
}
2025-03-14 15:53:35 +08:00
2025-03-13 14:15:31 +08:00
.box3zx1 {
width: 33px;
height: 2px;
border-top: solid #A8CBFF;
2025-03-14 15:53:35 +08:00
margin: 15px auto
2025-03-13 14:15:31 +08:00
}
2025-03-14 15:53:35 +08:00
.box2ybs4 {
writing-mode: vertical-rl;
transform: rotate(360deg);
padding-right: 10px;
padding-left: 5px;
color: #175FCB;
letter-spacing: 2px;
text-align: center;
2025-03-13 14:15:31 +08:00
}
2025-03-14 15:53:35 +08:00
.array {
-webkit-animation: start 1.5s infinite ease-in-out;
2025-03-13 14:15:31 +08:00
}
2025-03-14 15:53:35 +08:00
@keyframes start {
0%,
30% {
opacity: 0;
transform: translate(0, -8px);
}
60% {
opacity: 1;
transform: translate(0, 0);
}
100% {
opacity: 0;
transform: translate(0, 10px);
}
2025-03-13 14:15:31 +08:00
}
2025-03-19 18:01:04 +08:00
.box1ybz {
width: 33px;
border-top: 1px solid #DEDEDE;
}
.box1ybz2 {
padding-top: 10px;
width: 33px;
border-top: 1px solid #a8cbff;
}
2025-03-12 14:18:25 +08:00
</style>