333
This commit is contained in:
		
							parent
							
								
									59a68745ca
								
							
						
					
					
						commit
						7d0dc5a374
					
				
							
								
								
									
										3
									
								
								app.vue
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								app.vue
									
									
									
									
									
								
							| @ -4,9 +4,6 @@ | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts" setup> | ||||
| import { APIs } from './service/apiList' | ||||
| import type AxiosRequestError from './service/error' | ||||
| import $api from './service/webRequest' | ||||
| useSeoMeta({ | ||||
|   title: '我的神奇网站', | ||||
|   ogTitle: '我的神奇网站', | ||||
|  | ||||
| @ -25,27 +25,27 @@ | ||||
|               </NuxtLink> | ||||
|             </li> | ||||
|             <li> | ||||
|               <NuxtLink to="index_about" :class="{ 'active': route.path === 'index_about' }"> | ||||
|               <NuxtLink to="index_about" :class="{ 'active': route.path === '/index_about' }"> | ||||
|                 {{ $t('index_about') }} | ||||
|               </NuxtLink> | ||||
|             </li> | ||||
|             <li> | ||||
|               <NuxtLink to="index_services" :class="{ 'active': route.path === 'index_services/' }"> | ||||
|               <NuxtLink to="index_service" :class="{ 'active': route.path === '/index_service' }"> | ||||
|                 {{ $t('index_services') }} | ||||
|               </NuxtLink> | ||||
|             </li> | ||||
|             <li> | ||||
|               <NuxtLink to="index_clients" :class="{ 'active': route.path === 'index_clients' }"> | ||||
|               <NuxtLink to="index_clients" :class="{ 'active': route.path === '/index_clients' }"> | ||||
|                 {{ $t('index_clients') }} | ||||
|               </NuxtLink> | ||||
|             </li> | ||||
|             <li> | ||||
|               <NuxtLink to="index_news" :class="{ 'active': route.path === 'index_news' }"> | ||||
|               <NuxtLink to="index_news" :class="{ 'active': route.path === '/index_news' }"> | ||||
|                 {{ $t('index_news') }} | ||||
|               </NuxtLink> | ||||
|             </li> | ||||
|             <li> | ||||
|               <NuxtLink to="index_contact" :class="{ 'active': route.path === 'index_contact' }"> | ||||
|               <NuxtLink to="index_contact" :class="{ 'active': route.path === '/index_contact' }"> | ||||
|                 {{ $t('index_contact') }} | ||||
|               </NuxtLink> | ||||
|             </li> | ||||
| @ -65,6 +65,7 @@ import { ref } from 'vue' | ||||
| import { useRoute } from 'vue-router' | ||||
| 
 | ||||
| const route = useRoute() | ||||
| console.log(route) | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
|  | ||||
| @ -2,13 +2,13 @@ import { isUndef } from './is' | ||||
| 
 | ||||
| // 正式环境
 | ||||
| export const PROD_ENV = { | ||||
| 	SERVER_URL: 'https://xxx.com/api', // 服务地址
 | ||||
| 	SERVER_URL: '/api/', // 服务地址
 | ||||
| 	IS_DEV: 'false', // 是否是测试环境
 | ||||
| } | ||||
| 
 | ||||
| // 测试环境
 | ||||
| export const DEV_ENV = { | ||||
| 	SERVER_URL: 'https://xxx-test.com/api', | ||||
| 	SERVER_URL: '/api/', | ||||
| 	IS_DEV: 'true', | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -4,10 +4,6 @@ import { defineNuxtConfig } from 'nuxt/config' | ||||
| export default defineNuxtConfig({ | ||||
|   ssr: false, | ||||
| 
 | ||||
|   routeRules: { | ||||
|     '/**': { ssr: false } | ||||
|   }, | ||||
| 
 | ||||
|   css: [ | ||||
|     'swiper/css', | ||||
|     'swiper/css/mousewheel', | ||||
| @ -21,7 +17,17 @@ export default defineNuxtConfig({ | ||||
|       tailwindcss: {}, | ||||
|     }, | ||||
|   }, | ||||
| 
 | ||||
|   modules: ['@pinia/nuxt', 'nuxt-icons'], | ||||
|   compatibilityDate: '2025-03-12', | ||||
|   vite: { | ||||
|     server: { | ||||
|       proxy: { | ||||
|         '/api': { | ||||
|           target: "http://naweigetetest2.hschool.com.cn/", | ||||
|           changeOrigin: true, | ||||
|           rewrite: (path) => path.replace(/^\/api/, ''), | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| }) | ||||
| @ -278,7 +278,7 @@ | ||||
| 			<swiper-slide class="swiper-slide-a"> | ||||
| 				<div class="flex justify-center items-center w-full"> | ||||
| 					<div class="w-[40%] text-right"> | ||||
| 						<img id="img1" src="/images/Group157.png" class="w-[80%] border-r-[10px] border-[#214ADB] inline-block"> | ||||
| 						<img id="img1" :src="leftImg" class="w-[80%] border-r-[10px] border-[#214ADB] inline-block"> | ||||
| 					</div> | ||||
| 					<div class="w-[44%] text-left pl-5"> | ||||
| 						<h2 class="text-2xl font-bold">{{ $t('index_n1') }}</h2> | ||||
| @ -297,14 +297,14 @@ | ||||
| 									<!-- 这里可以使用v-for循环渲染新闻列表 --> | ||||
| 									<div class="swiper-slide"> | ||||
| 										<div class="text-center"> | ||||
| 											<h3 class="font-semibold text-2xl"> | ||||
| 											<h3 class="font-semibold text-2xl line-clamp-1"> | ||||
| 												<a :href="item.url" target="_blank" class="text-[#0c1923]"> | ||||
| 													{{ item.title }} | ||||
| 												</a> | ||||
| 											</h3> | ||||
| 											<h5 class="text-[#606060] mt-[25px] leading-[25px]"> | ||||
| 											<h5 class="text-[#606060] mt-[25px] leading-[25px] line-clamp-2"> | ||||
| 												<a :href="item.url" target="_blank" class="text-[#0c1923]"> | ||||
| 													{{ item.description }} | ||||
| 													{{ item.synopsis }} | ||||
| 												</a> | ||||
| 											</h5> | ||||
| 										</div> | ||||
| @ -313,7 +313,7 @@ | ||||
| 							</swiper> | ||||
| 							<img id="swipen_prev" src="/images/group9-1.png" class="w-[30px] cursor-pointer" @click="prevNews"> | ||||
| 						</div> | ||||
| 						<div class="w-full h-[1px] bg-black mt-10"></div> | ||||
| 						<div class="w-full h-[1px] bg-black mt-3"></div> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 				<div class="absolute right-[10px]"> | ||||
| @ -347,7 +347,25 @@ import { Mousewheel, Navigation } from 'swiper/modules' | ||||
| import 'swiper/css/mousewheel' | ||||
| import 'swiper/css/navigation' | ||||
| import * as swiperAni from '@/assets/animate/animate.js' | ||||
| import $api from '@/service/webRequest' | ||||
| 
 | ||||
| // 新闻数据 | ||||
| const leftImg = ref(); | ||||
| const newsList = ref([]) | ||||
| onMounted(() => { | ||||
| 	getNewsList(); | ||||
| }) | ||||
| const getNewsList = () => { | ||||
|   $api.get("/api/article/new/list") | ||||
|     .then((res: any) => { | ||||
| 		console.log(res) | ||||
|       newsList.value = res.data.data | ||||
| 	  leftImg.value = res.data.data[0].image_input[0] | ||||
|     }) | ||||
|     .catch((err) => { | ||||
|       console.dir(err) | ||||
|     }) | ||||
| } | ||||
| // 导入背景图片 | ||||
| const bgImage = 'images/Group157.png' | ||||
| 
 | ||||
| @ -360,34 +378,6 @@ let swiperInstance: any = null | ||||
| // 新闻轮播实例 | ||||
| let newsSwiper: any = null | ||||
| 
 | ||||
| // 新闻数据 | ||||
| const newsList = ref([ | ||||
|   { | ||||
|     title: '新闻标题1', | ||||
|     description: '新闻描述内容1,这里是新闻的简短描述。', | ||||
|     url: '/news/1' | ||||
|   }, | ||||
|   { | ||||
|     title: '新闻标题2', | ||||
|     description: '新闻描述内容2,这里是新闻的简短描述。', | ||||
|     url: '/news/2' | ||||
|   }, | ||||
|   { | ||||
|     title: '新闻标题3', | ||||
|     description: '新闻描述内容3,这里是新闻的简短描述。', | ||||
|     url: '/news/3' | ||||
|   }, | ||||
|   { | ||||
|     title: '新闻标题4', | ||||
|     description: '新闻描述内容4,这里是新闻的简短描述。', | ||||
|     url: '/news/4' | ||||
|   }, | ||||
|   { | ||||
|     title: '新闻标题5', | ||||
|     description: '新闻描述内容5,这里是新闻的简短描述。', | ||||
|     url: '/news/5' | ||||
|   } | ||||
| ]) | ||||
| 
 | ||||
| // 新闻轮播控制 | ||||
| const nextNews = () => { | ||||
| @ -639,6 +629,6 @@ const scrollToTop = () => { | ||||
| 
 | ||||
| .news_padd { | ||||
|   margin-top: 20px; | ||||
|   height: 80px; | ||||
|   height: 110px; | ||||
| } | ||||
| </style> | ||||
|  | ||||
							
								
								
									
										175
									
								
								pages/index_about.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										175
									
								
								pages/index_about.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,175 @@ | ||||
| <template> | ||||
|     <div class="bg-white"> | ||||
|         <!-- Banner section with background image --> | ||||
|         <div class="aboutimgBg" :style="{ | ||||
|             backgroundColor: '#fff', | ||||
|             backgroundImage: `url(/images/group195.png)`, | ||||
|             backgroundPosition: 'center center', | ||||
|             backgroundRepeat: 'no-repeat', | ||||
|             backgroundSize: 'cover', | ||||
|             height: '600px', | ||||
|             display: 'flex', | ||||
|             alignItems: 'center', | ||||
|             justifyContent: 'center' | ||||
|         }"> | ||||
|             <div class="banDes"> | ||||
|                 <div class="aboutTit text-center"> | ||||
|                     <h2 class="font-semibold animated fadeInLeft" style="font-size: 40px;">{{ $t('index_name') }}</h2> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
| 
 | ||||
|         <!-- Main content section --> | ||||
|         <div class="mainBg py-12 z-10 relative" style="min-height: 110vh;"> | ||||
|             <div class="oneBox1Bg"> | ||||
|                 <div class="container mx-auto px-4"> | ||||
|                     <div class="oneBox1 text-center" style="margin-top: -100px;"> | ||||
|                         <h3 class="text-2xl  text-[#606060] h-[144px] animated fadeInUp">{{ $t('about_a1') }}</h3> | ||||
|                     </div> | ||||
|                     <div class="oneBox1Bg1 "> | ||||
|                         <h2 class="text-3xl font-bold text-center text-[#E2E2E2] mb-6 animated fadeInUp">{{ $t('about_a2') }}</h2> | ||||
|                         <div class="oneBox1Bg1xiah w-24 h-[2px] bg-[#E2E2E2] mx-auto mb-12"></div> | ||||
|                         <!-- Three column section --> | ||||
|                         <div class="oneBox1Bg1img flex justify-center items-center flex-wrap gap-8 mb-16 mt-10"> | ||||
|                             <div class="flex flex-col items-center animated fadeInUp"> | ||||
|                                 <img class="w-[150px] h-[150px] object-cover mb-4" src="/images/group53.png"> | ||||
|                                 <div class="oneBox1Bg1imgt"> | ||||
|                                     <h3 class="text-2xl font-medium text-[#333]">{{ $t('about_a3') }}</h3> | ||||
|                                 </div> | ||||
|                             </div> | ||||
| 
 | ||||
|                             <span class="oneBox1Bg1img1span h-40 w-px bg-[#ddd] hidden md:block"></span> | ||||
| 
 | ||||
|                             <div class="flex flex-col items-center animated fadeInUp"> | ||||
|                                 <img class="w-[150px] h-[150px] object-cover mb-4" src="/images/group52.png"> | ||||
|                                 <div class="oneBox1Bg1imgt"> | ||||
|                                     <h3 class="text-2xl font-medium text-[#333]">{{ $t('about_a4') }}</h3> | ||||
|                                 </div> | ||||
|                             </div> | ||||
| 
 | ||||
|                             <span class="oneBox1Bg1img1span h-40 w-px bg-[#ddd] hidden md:block"></span> | ||||
| 
 | ||||
|                             <div class="flex flex-col items-center animated fadeInUp"> | ||||
|                                 <img class="w-[150px] h-[150px] object-cover mb-4" src="/images/group51.png"> | ||||
|                                 <div class="oneBox1Bg1imgt"> | ||||
|                                     <h3 class="text-2xl font-medium text-[#333]">{{ $t('about_a5') }}</h3> | ||||
|                                 </div> | ||||
|                             </div> | ||||
|                         </div> | ||||
| 
 | ||||
|                         <div class="oneBox1Bg1h text-center mb-6 animated fadeInUp"> | ||||
|                             <h3 class="text-2xl  text-[#606060]">{{ $t('about_a6') }}</h3> | ||||
|                         </div> | ||||
|                         <div class="oneBox1Bg1xiah1"></div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
| 
 | ||||
|         <!-- Second banner section with background image --> | ||||
|         <div class="aboutimgBg1 text-center py-16" :style="{ | ||||
|             backgroundImage: `url(/images/maskgroup1.png)`, | ||||
|             backgroundPosition: 'center center', | ||||
|             backgroundRepeat: 'no-repeat', | ||||
|             backgroundSize: 'cover', | ||||
|             color: 'white', | ||||
|             height: '700px' | ||||
|         }"> | ||||
|             <div class="aboutTit2 container mx-auto px-4"> | ||||
|                 <div class="text-[#000]  text-3xl animated fadeInLeft">{{ $t('about_a7') }}</div> | ||||
|                 <div class="oneBox1Bg1xiah2 w-100 h-[2px] bg-[#606060] mx-auto my-8 animated fadeInLeft"></div> | ||||
|                 <div class="oneBox1Bg2h max-w-1xl  mt-[100px]"> | ||||
|                     <h3 class="text-[#606060] text-[24px]  leading-relaxed animated fadeInLeft">{{ $t('about_a8') }}</h3> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts" setup> | ||||
| import { onMounted } from 'vue' | ||||
| 
 | ||||
| onMounted(() => { | ||||
| }) | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| @import "@/assets/animate/animate.min.css"; | ||||
| 
 | ||||
| .aboutimgBg, | ||||
| .aboutimgBg1 { | ||||
|     position: relative; | ||||
| } | ||||
| 
 | ||||
| .container { | ||||
|     max-width: 1310px; | ||||
| } | ||||
| 
 | ||||
| .aboutTit h2::after { | ||||
|     content: ''; | ||||
|     margin-top: -30px; | ||||
|     width: 598px; | ||||
|     height: 34px; | ||||
|     background: #A8CBFF; | ||||
|     display: block; | ||||
| } | ||||
| 
 | ||||
| .oneBox1Bg1 { | ||||
|     height: 500px; | ||||
|     width: 1240px; | ||||
|     margin-top: 150px; | ||||
| } | ||||
| 
 | ||||
| .oneBox1Bg1 h2 { | ||||
|     font-weight: 500; | ||||
|     text-align: center; | ||||
|     height: 51px; | ||||
|     font-size: 34px; | ||||
|     color: #000000; | ||||
|     line-height: 40px; | ||||
| } | ||||
| 
 | ||||
| .oneBox1Bg1xiah { | ||||
|     margin: 0 auto; | ||||
|     width: 100%; | ||||
| } | ||||
| 
 | ||||
| .oneBox1Bg1img1span { | ||||
|     margin-left: 125px; | ||||
|     margin-right: 125px; | ||||
|     border-right: 2px solid #E2E2E2; | ||||
|     display: inline-block; | ||||
|     height: 240px; | ||||
|     margin-top: -5px; | ||||
| } | ||||
| 
 | ||||
| .oneBox1Bg1imgt { | ||||
|     font-weight: 500; | ||||
|     font-size: 24px; | ||||
|     color: #1C1C1C; | ||||
|     line-height: 28px; | ||||
|     text-align: center; | ||||
|     margin-top: 31px; | ||||
| } | ||||
| 
 | ||||
| .oneBox1Bg1imgt h3::after { | ||||
|     content: ''; | ||||
|     margin-top: -11px; | ||||
|     width: 60px; | ||||
|     height: 16px; | ||||
|     background: #A8CBFF; | ||||
|     display: block; | ||||
| } | ||||
| 
 | ||||
| .oneBox1Bg1h { | ||||
|     padding-top: 53px; | ||||
|     text-align: center; | ||||
| } | ||||
| 
 | ||||
| .oneBox1Bg1xiah1 { | ||||
|     border-top: 2px solid #E2E2E2; | ||||
|     margin-left: -61px; | ||||
|     width: 1240px; | ||||
|     margin-top: 55px; | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										108
									
								
								pages/index_clients.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								pages/index_clients.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,108 @@ | ||||
| <template> | ||||
|     <div class="bg-white"> | ||||
|         <!-- Banner section with background image --> | ||||
|         <div class="aboutimgBg" :style="{ | ||||
|             backgroundImage: `url(/images/maskgroup2.png)`, | ||||
|             backgroundSize: 'cover', | ||||
|             height: '600px', | ||||
|             display: 'flex', | ||||
|             alignItems: 'center', | ||||
|             justifyContent: 'center' | ||||
|         }"> | ||||
|             <div class="banDes"> | ||||
|                 <div class="clientTit text-center"> | ||||
|                     <h2 class="text-[50px] font-bold animated fadeInLeft">{{ $t('clients_b1') }}</h2> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
| 
 | ||||
|         <!-- Clients content section --> | ||||
|         <div class="mainBg pb-[100px]"> | ||||
|             <div class="oneBox1Bg"> | ||||
|                 <div class="container mx-auto px-4"> | ||||
|                     <div class="clientBox1"> | ||||
|                         <h3 style="margin-top: -120px; line-height: 31px;" class="animated fadeInUp text-2xl font-medium text-center text-[#606060]">{{ $t('clients_b2') }}</h3> | ||||
|                     </div> | ||||
|                     <div class="clientBg1 mt-[100px]"> | ||||
|                         <div class="clientBg1img flex flex-row items-center justify-between"> | ||||
|                             <div class="clientBg1imgdx w-[300px]"> | ||||
|                                 <img class="oneBox1Bg1img1 w-full h-auto object-contain" src="/images/image8.png" alt="Client"> | ||||
|                             </div> | ||||
|                             <div class="clientBg1imgt text-left pl-[30px]" style="flex: 1;"> | ||||
|                                 <h3 class="text-[40px] font-bold mb-2">{{ $t('clients_b3') }}</h3> | ||||
|                                 <h4 class="text-xl text-[#606060] mt-[30px]">{{ $t('clients_b4') }}</h4> | ||||
|                             </div> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                     <div class="clientxiah1 w-full h-[1px] bg-gray-200 my-8"></div> | ||||
|                          | ||||
|                         <div class="clientimg flex flex-wrap justify-center gap-6 mt-8"> | ||||
|                             <img src="/images/maskgroup3.png" class="w-[200px] h-auto" alt="Client"> | ||||
|                             <img src="/images/image8.png" class="w-[200px] h-auto" alt="Client"> | ||||
|                             <img src="/images/clients56.png" class="w-[200px] h-auto" alt="Client"> | ||||
|                             <img src="/images/clients11.png" class="w-[200px] h-auto" alt="Client"> | ||||
|                             <img src="/images/clients11.png" class="w-[200px] h-auto" alt="Client"> | ||||
|                         </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts" setup> | ||||
| import { onMounted } from 'vue' | ||||
| 
 | ||||
| onMounted(() => { | ||||
|     // You can add any code that needs to run after component is mounted | ||||
| }) | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| @import "@/assets/animate/animate.min.css"; | ||||
| 
 | ||||
| .aboutimgBg { | ||||
|     position: relative; | ||||
| } | ||||
| 
 | ||||
| .container { | ||||
|     max-width: 1310px; | ||||
| } | ||||
| 
 | ||||
| .clientTit h2::after { | ||||
|     content: ''; | ||||
|     margin: 0 auto; | ||||
|     width: 300px; | ||||
|     height: 28px; | ||||
|     background: #A8CBFF; | ||||
|     display: block; | ||||
|     margin-top: -30px; | ||||
| } | ||||
| 
 | ||||
| .clientBox1 h3 { | ||||
|     font-weight: 500; | ||||
|     text-align: center; | ||||
|     font-size: 24px; | ||||
|     color: #606060; | ||||
|     line-height: 31px; | ||||
| } | ||||
| 
 | ||||
| @media (max-width: 768px) { | ||||
|     .clientimg { | ||||
|         flex-direction: column; | ||||
|         align-items: center; | ||||
|     } | ||||
|      | ||||
|     .clientimg img { | ||||
|         margin-bottom: 20px; | ||||
|     } | ||||
| } | ||||
| .clientBg1imgt h3::after { | ||||
|     content: ''; | ||||
|     margin-top: -20px; | ||||
|     width: 250px; | ||||
|     height: 20px; | ||||
|     background: #A8CBFF; | ||||
|     display: block; | ||||
|     margin-left: -4px; | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										186
									
								
								pages/index_service.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								pages/index_service.vue
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,186 @@ | ||||
| <template> | ||||
|     <div class="bg-white"> | ||||
|         <!-- Banner section with background image --> | ||||
|         <div class="aboutimgBg" :style="{ | ||||
|             backgroundImage: `url(/images/servicegroup.png)`, | ||||
|             backgroundSize: 'cover', | ||||
|             height: '600px', | ||||
|             display: 'flex', | ||||
|             alignItems: 'center', | ||||
|             justifyContent: 'center' | ||||
|         }"> | ||||
|             <div class="banDes"> | ||||
|                 <div class="serveTit text-center"> | ||||
|                     <h2 class="text-[50px] font-bold animated fadeInLeft">{{ $t('servers_b1') }}</h2> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
| 
 | ||||
|         <!-- Service content section --> | ||||
|         <div class="servicesBg py-12 relative"> | ||||
|             <div class="container mx-auto px-4"> | ||||
|                 <div class="serveBox1"> | ||||
|                     <h3 class="animated fadeInUp" style="margin-top: -120px; line-height: 31px;">{{ $t('servers_b2') }}</h3> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
| 
 | ||||
|         <!-- Service boxes section --> | ||||
|         <div class="servicesBg py-12 mt-[100px]"> | ||||
|             <div class="container mx-auto px-4"> | ||||
|                 <!-- Service box 1 --> | ||||
|                 <div class="serveBox2"> | ||||
|                     <img class="serveimg1 w-[150px] h-[150px] object-cover mx-auto mb-4" src="/images/service180.png"> | ||||
|                     <h3 class="animated fadeInUp text-3xl font-bold text-center"> | ||||
|                         {{ $t('servers_b3') }} | ||||
|                     </h3> | ||||
|                     <h4 class="animated fadeInUp text-xl text-[#606060] text-center mt-4"> | ||||
|                         {{ $t('servers_b4') }} | ||||
|                     </h4> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <!-- Service box 2 --> | ||||
|                 <div class="serveBox2"> | ||||
|                     <img class="serveimg1 w-[150px] h-[150px] object-cover mx-auto mb-4" src="/images/service181.png"> | ||||
|                     <h3 class="animated fadeInUp text-3xl font-bold text-center"> | ||||
|                         {{ $t('servers_b5') }} | ||||
|                     </h3> | ||||
|                     <h4 class="animated fadeInUp text-xl text-[#606060] text-center mt-4"> | ||||
|                         {{ $t('servers_b6') }} | ||||
|                     </h4> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <!-- Service box 3 --> | ||||
|                 <div class="serveBox2"> | ||||
|                     <img class="serveimg1 w-[150px] h-[150px] object-cover mx-auto mb-4" src="/images/service182.png"> | ||||
|                     <h3 class="animated fadeInUp text-3xl font-bold text-center"> | ||||
|                         {{ $t('servers_b7') }} | ||||
|                     </h3> | ||||
|                     <h4 class="animated fadeInUp text-xl text-[#606060] text-center mt-4"> | ||||
|                         {{ $t('servers_b8') }} | ||||
|                     </h4> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <!-- Service box 4 --> | ||||
|                 <div class="serveBox2"> | ||||
|                     <img class="serveimg1 w-[150px] h-[150px] object-cover mx-auto mb-4" src="/images/service187.png"> | ||||
|                     <h3 class="animated fadeInUp text-3xl font-bold text-center"> | ||||
|                         {{ $t('servers_b9') }} | ||||
|                     </h3> | ||||
|                     <h4 class="animated fadeInUp text-xl text-[#606060] text-center mt-4"> | ||||
|                         {{ $t('servers_b10') }} | ||||
|                     </h4> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <!-- Service box 5 --> | ||||
|                 <div class="serveBox2"> | ||||
|                     <img class="serveimg1 w-[150px] h-[150px] object-cover mx-auto mb-4" src="/images/service204.png"> | ||||
|                     <h3 class="animated fadeInUp text-3xl font-bold text-center"> | ||||
|                         {{ $t('servers_b11') }} | ||||
|                     </h3> | ||||
|                     <h4 class="animated fadeInUp text-xl text-[#606060] text-center mt-4"> | ||||
|                         {{ $t('servers_b12') }} | ||||
|                     </h4> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <!-- Service box 6 --> | ||||
|                 <div class="serveBox2"> | ||||
|                     <img class="serveimg1 w-[150px] h-[150px] object-cover mx-auto mb-4" src="/images/service188.png"> | ||||
|                     <h3 class="animated fadeInUp text-3xl font-bold text-center"> | ||||
|                         {{ $t('servers_b13') }} | ||||
|                     </h3> | ||||
|                     <h4 class="animated fadeInUp text-xl text-[#606060] text-center mt-4"> | ||||
|                         {{ $t('servers_b14') }} | ||||
|                     </h4> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
| 
 | ||||
|         <!-- Contact section with background image --> | ||||
|         <div class="servicesBg2 py-16 text-center" :style="{ | ||||
|             backgroundImage: `url(/images/serve4.png)`, | ||||
|             backgroundSize: 'cover', | ||||
|             backgroundPosition: 'center center', | ||||
|             height: '600px', | ||||
|             display: 'flex', | ||||
|             alignItems: 'center', | ||||
|             justifyContent: 'center' | ||||
|         }"> | ||||
|             <div class="servicesTit text-center container mx-auto px-4"> | ||||
|                 <h2 class="animated fadeInLeft text-3xl font-bold mb-4">{{ $t('servers_b15') }}</h2> | ||||
|                 <h3 class="animated fadeInLeft text-2xl mb-4">{{ $t('servers_b16') }}</h3> | ||||
|                 <h4 class="animated fadeInLeft"> | ||||
|                     <NuxtLink to="/contact" class="text-[#0c1923]">{{ $t('index_contact') }}</NuxtLink> | ||||
|                 </h4> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts" setup> | ||||
| import { onMounted } from 'vue' | ||||
| 
 | ||||
| onMounted(() => { | ||||
|     // 可以在这里添加任何需要在组件挂载后执行的代码 | ||||
| }) | ||||
| </script> | ||||
| 
 | ||||
| <style lang="scss" scoped> | ||||
| @import "@/assets/animate/animate.min.css"; | ||||
| 
 | ||||
| .aboutimgBg, | ||||
| .servicesBg2 { | ||||
|     position: relative; | ||||
| } | ||||
| 
 | ||||
| .container { | ||||
|     max-width: 1310px; | ||||
| } | ||||
| 
 | ||||
| .serveTit h2::after { | ||||
|     content: ''; | ||||
|     margin: 0 auto; | ||||
|     width: 300px; | ||||
|     height: 28px; | ||||
|     background: #A8CBFF; | ||||
|     display: block; | ||||
|     margin-top: -30px; | ||||
| } | ||||
| 
 | ||||
| .serveBox1 h3 { | ||||
|     font-weight: 500; | ||||
|     text-align: center; | ||||
|     font-size: 24px; | ||||
|     color: #606060; | ||||
|     line-height: 31px; | ||||
| } | ||||
| 
 | ||||
| .serveBox2 { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     align-items: center; | ||||
|     margin-bottom: 100px; | ||||
| } | ||||
| .servicesTit h2::after { | ||||
|     content: ''; | ||||
|     margin: 0 auto; | ||||
|     margin-top: -14px; | ||||
|     width: 236px; | ||||
|     height: 20px; | ||||
|     background: #A8CBFF; | ||||
|     display: block; | ||||
| } | ||||
| .servicesTit h4 { | ||||
|     font-weight: 500; | ||||
|     font-size: 24px; | ||||
|     color: #000000; | ||||
|     width: 209px; | ||||
|     height: 56px; | ||||
|     line-height: 56px; | ||||
|     margin: 0 auto; | ||||
|     display: block; | ||||
|     margin-top: 44px; | ||||
|     border: 1px solid #000000; | ||||
|     border-radius: 28px 28px 28px 28px; | ||||
| } | ||||
| </style> | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user