From e3ab5c403cce86811f9bdf8ae5f0d00f1f776b1f Mon Sep 17 00:00:00 2001
From: tanghaolin <1723298894@qq.com>
Date: 星期五, 18 四月 2025 15:40:55 +0800
Subject: [PATCH] 添加联系我们界面

---
 src/views/Home.vue | 1535 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 1,417 insertions(+), 118 deletions(-)

diff --git a/src/views/Home.vue b/src/views/Home.vue
index a57f75b..3f0d175 100644
--- a/src/views/Home.vue
+++ b/src/views/Home.vue
@@ -1,167 +1,1466 @@
 <template>
-	<div class="h-full ">
+	<div class="w-full h-full relative">
 		<!-- 杞挱鍥鹃儴鍒� -->
-		<div class="banner-carousel">
-			<el-carousel height="400px" :interval="5000" arrow="always">
+		<div class="banner-carousel relative w-screen h-[602px]">
+			<el-carousel height="602px" :interval="3000" indicator-position="none" arrow="never">
 				<el-carousel-item>
-					<div class="banner-slide bg-blue-900 text-white">
-						<div class="container mx-auto px-4 h-full flex items-center">
-							<div class="flex justify-between items-center w-full">
-								<div class="flex-1">
-									<div class="text-4xl font-bold mb-4">鍏ㄥ浗淇℃爣濮旇蒋浠朵笌绯荤粺宸ョ▼</div>
-									<div class="text-5xl font-bold mb-8">鍒嗗浼�(TC28/SC7)鎴愮珛40鍛ㄥ勾</div>
-									<div class="flex space-x-8 text-xl">
-										<div class="text-center">
-											<div class="text-4xl font-bold text-blue-400">136<sup>+</sup></div>
-											<div>鍙戝竷鍥藉鏍囧噯</div>
-										</div>
-										<div class="text-center">
-											<div class="text-4xl font-bold text-blue-400">19<sup>+</sup></div>
-											<div>鍙戝竷琛屼笟鏍囧噯</div>
-										</div>
-										<div class="text-center">
-											<div class="text-4xl font-bold text-blue-400">211<sup>+</sup></div>
-											<div>瀵瑰彛鍥介檯鏍囧噯鍖栫粍缁�</div>
-										</div>
-										<div class="text-center">
-											<div class="text-4xl font-bold text-blue-400">60<sup>+</sup></div>
-											<div>鍙備笌鐨勫浗闄呮爣鍑�</div>
-										</div>
-									</div>
-								</div>
-								<div class="w-1/3">
-									<div class="text-6xl font-bold text-blue-400">40</div>
-								</div>
-							</div>
-						</div>
+					<div class="carousel-item">
+						<img src="@/assets/carousel/home/1.png" class="carousel-image" />
+					</div>
+				</el-carousel-item>
+				<el-carousel-item>
+					<div class="carousel-item">
+						<img src="@/assets/carousel/home/2.png" class="carousel-image" />
+					</div>
+				</el-carousel-item>
+				<el-carousel-item>
+					<div class="carousel-item">
+						<img src="@/assets/carousel/home/3.png" class="carousel-image" />
+					</div>
+				</el-carousel-item>
+				<el-carousel-item>
+					<div class="carousel-item">
+						<img src="@/assets/carousel/home/4.png" class="carousel-image" />
 					</div>
 				</el-carousel-item>
 			</el-carousel>
 		</div>
-		
-		<!-- 鍔熻兘鎸夐挳鍖哄煙 -->
-		<div class="bg-white py-8">
-			<div class="container mx-auto px-4">
-				<div class="grid grid-cols-4 gap-8">
-					<!-- 鍙慉PP -->
-					<div class="function-card">
-						<el-card shadow="hover" class="h-full cursor-pointer">
-							<div class="flex flex-col items-center space-y-2">
-								<div class="w-16 h-16 flex items-center justify-center bg-blue-100 rounded-full">
-									<el-icon class="text-3xl text-blue-500"><Promotion /></el-icon>
+		<div class="relative z-20 2 w-full flex justify-center items-center">
+			<!-- 鍔熻兘鎸夐挳鍖哄煙 -->
+			<div class="bg-white py-8" v-if="false">
+				<div class="mx-auto px-32">
+					<div class="grid grid-cols-4 divide-x-w-default">
+						<a @click="toSubsidy" class="block" style="border-left: 1px solid #e3e3e3; border-right: 1px solid #e3e3e3">
+							<div class="flex items-center gap-1 justify-center">
+								<div class="w-16 h-16">
+									<svg viewBox="0 0 24 24" class="w-full h-full">
+										<path
+											fill="currentColor"
+											d="M14,17H7V15H14V17M17,13H7V11H17V13M17,9H7V7H17V9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,19H5V5H19V19Z"
+										/>
+									</svg>
 								</div>
-								<div class="text-lg font-medium">鍙慉PP</div>
-								<div class="text-gray-500 text-sm">Publish APP</div>
+								<div>
+									<div class="text-lg font-medium">琛ヨ创鐢宠</div>
+									<div class="text-sm text-info-light-3">Subsidy Application</div>
+								</div>
 							</div>
-						</el-card>
+						</a>
+						<router-link to="/certified-products" class="block" style="border-right: 1px solid #e3e3e3">
+							<div class="flex items-center gap-1 justify-center">
+								<div class="w-16 h-16">
+									<svg viewBox="0 0 24 24" class="w-full h-full">
+										<path
+											fill="currentColor"
+											d="M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M11,16.5L18,9.5L16.59,8.09L11,13.67L7.91,10.59L6.5,12L11,16.5Z"
+										/>
+									</svg>
+								</div>
+								<div>
+									<div class="text-lg font-medium">鑳芥晥浜у搧</div>
+									<div class="text-sm text-info-light-3">Certified Products</div>
+								</div>
+							</div>
+						</router-link>
+						<router-link to="/eec-label-search" class="block" style="border-right: 1px solid #e3e3e3">
+							<div class="flex items-center gap-1 justify-center">
+								<div class="w-16 h-16">
+									<svg viewBox="0 0 24 24" class="w-full h-full">
+										<path
+											fill="currentColor"
+											d="M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"
+										/>
+									</svg>
+								</div>
+								<div>
+									<div class="text-lg font-medium">璇佷功鏌ヨ</div>
+									<div class="text-sm text-info-light-3">Certificate Search</div>
+								</div>
+							</div>
+						</router-link>
+						<a class="block" style="border-right: 1px solid #e3e3e3" @click="linkClick">
+							<div class="flex items-center gap-1 justify-center">
+								<div class="w-16 h-16">
+									<img :src="YWLogo" class="h-full" />
+								</div>
+								<div>
+									<div class="text-lg font-medium">鏌ユ车缃�</div>
+									<div class="text-sm text-info-light-3">Pump Search</div>
+								</div>
+							</div>
+						</a>
+					</div>
+				</div>
+			</div>
+			<!-- 涓诲唴瀹瑰尯鍩� -->
+			<div class="bg-white flex flex-col gap-8 relative" style="width: calc(100% - 434px)">
+				<!-- 浜у搧鍖哄煙 -->
+				<div class="bg-[#F0F3EF] w-full">
+					<div class="catalog-list bg-[#fff] grid grid-cols-5 gap-4 justify-center items-center">
+						<div
+							:class="state.curSelectCatalog === item.tag ? 'catalog-tag-active' : ''"
+							class="catalog-item"
+							v-for="item in state.catalog"
+							:key="item.tag"
+							@click="changeCatalog(item.tag)"
+						>
+							{{ item.name }}
+						</div>
+					</div>
+					<!-- 鎴戦渶瑕佽缃畇wiper鐨勯粯璁ゆ樉绀虹殑slide -->
+					<swiper
+						:direction="'vertical'"
+						@swiper="onSwiper"
+						@slideChange="onSlideChange"
+						:slidesPerView="state.catalogSwiperIndex"
+						:centeredSlides="true"
+						:autoplay="{
+							delay: 1000000,
+							disableOnInteraction: false,
+							pauseOnMouseEnter: true,
+						}"
+						:effect="'fade'"
+						:modules="SwiperModule"
+						class="catalog-swiper w-full h-[1175px]"
+					>
+						<swiper-slide class="w-full h-full" v-for="(item, index) in state.catalogItemList" :key="index">
+							<div class="catalog-continer overflow-hidden">
+								<div class="catalog-continer-item p-4 relative" v-for="child in item" :key="child.Id" @click="handleCatalogClick(child)">
+									<div class="w-full h-[250px]">
+										<img class="w-full h-full object-contain" :src="child.PhysicalPicturePath" alt="" />
+									</div>
+									<div class="mt-4 text-center font-medium" style="font-size: 18px">
+										{{ child.Model }}
+									</div>
+
+									<div class="text-center font-medium text-[14px] bg-[#fff] text-[#003a8f] absolute top-[10px] right-[-13px]" style="font-weight: bold">
+										<!-- {{ getCompanyNameByType(child.Type) }} -->
+										<div class="etiquet-price">
+											<p>{{ getCompanyNameByType(child.Type) }}</p>
+											<div></div>
+										</div>
+									</div>
+								</div>
+							</div>
+						</swiper-slide>
+					</swiper>
+				</div>
+				<!-- 鏂伴椈鍏憡鍖哄煙 -->
+				<div class="w-full mb-4">
+					<!-- <div class="flex justify-between items-center mb-4" style="border-bottom: 1.5px solid var(--alloy-color-primary)">
+						<div class="flex items-center space-x-2 ml-2 font-bold">
+							<el-icon class="text-blue-500"><Document /></el-icon>
+							<span class="text-medium font-bold"> <span class="text-primary">鏂伴椈</span>鏀跨瓥</span>
+						</div>
+						<el-button text>鏇村</el-button>
+					</div> -->
+					<div class="flex gap-6">
+						<!-- 宸︿晶鏂伴椈妯℃澘 -->
+						<div class="w-[373px] flex flex-col gap-4">
+							<div class="w-full relative left-news-temp-div">
+								<img
+									class="w-full flex-0 cursor-pointer"
+									src="@/assets/home/notice1.png"
+									@click="routeClick('/news-detail/8')"
+									alt="鏂伴椈鏀跨瓥"
+								/>
+							</div>
+							<span class="news-title">
+								銆婁笂娴峰競缁忔祹淇℃伅鍖栧鍏充簬寮�灞�2025骞村害涓婃捣甯傚伐涓氶�氫俊涓氱敤鑳借澶囨洿鏂颁笓椤规壎鎸佽祫閲戦」鐩敵鎶ュ伐浣滅殑閫氱煡銆�
+							</span>
+						</div>
+						<div class="flex-auto right-news-temp-div">
+							<div class="w-full h-[45px] flex justify-between items-center">
+								<div class="w-[20%] font-bold text-[20px]">鏂伴椈鏀跨瓥</div>
+								<div class="w-[80%] text-right pr-[10%] text-[18px] text-[#5c5c5c]">鏇村>></div>
+							</div>
+							<div class="w-full flex justify-between gap-8" style="height: calc(100% - 45px)">
+								<div class="w-[422px] flex-shrink-0">
+									<img src="@/assets/home/news_1.jpg" alt="鏂伴椈鏀跨瓥" class="w-full h-[187px]" />
+									<div
+										class="line-clamp-3 font-bold text-large mb-2 hover:text-primary cursor-pointer text-[20px] text-[#000]"
+										@click="routeClick('/news-detail/8')"
+									>
+										涓婃捣甯傜粡娴庝俊鎭寲濮斿叧浜庡紑灞�2025骞村害涓婃捣甯傚伐涓氶�氫俊涓氱敤鑳借澶囨洿鏂颁笓椤规壎鎸佽祫閲戦」鐩敵鎶ュ伐浣滅殑閫氱煡
+									</div>
+									<div
+										class="text-regular text-[16px] text-[#656565] line-height-[29px] line-clamp-4 new-desc-text overflow-hidden"
+										style="text-indent: 2rem"
+									>
+										鏈夊叧鍗曚綅锛�
+										涓鸿疮褰昏惤瀹炪�婁笂娴峰競鑺傝兘鍑忔帓锛堝簲瀵规皵鍊欏彉鍖栵級涓撻」璧勯噾绠$悊鍔炴硶锛堟勃鍙戞敼瑙勮寖銆�2021銆�5鍙凤級銆嬪拰銆婁笂娴峰競宸ヤ笟閫氫俊涓氱敤鑳借澶囨洿鏂颁笓椤规壎鎸佸疄鏂界粏鍒欍�嬶紙娌粡淇¤鑼冦��2025銆�1鍙凤級锛岃繘涓�姝ユ帹杩涙湰甯傚伐涓氶�氫俊涓氱敤鑳借澶囨洿鏂板伐浣滐紝鐜扮粍缁囧紑灞�2025骞村害涓婃捣甯傚伐涓氶�氫俊涓氱敤鑳借澶囨洿鏂颁笓椤规壎鎸佽祫閲戦」鐩敵鎶ュ伐浣溿��
+									</div>
+								</div>
+								<div class="mt-4">
+									<div v-for="(item, index) in newsList" :key="index" class="flex text-regular justify-between items-center news-item">
+										<div class="flex items-center hover:text-primary w-full" @click="handleNewsClick(item)">
+											<div class="w-[6px] h-[6px] mr-2 news-list-dot"></div>
+											<div
+												class="w-full text-gray-700 hover:text-blue-500 cursor-pointer text-ellipsis overflow-hidden whitespace-nowrap"
+											>
+												{{ item.title }}
+											</div>
+										</div>
+										<!-- <div class="text-gray-400 text-sm">{{ item.date }}</div> -->
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				<!-- 鑳芥晥浜у搧鍒嗙被 -->
+				<div class="eec-product-classify-div mb-[170px]">
+					<div class="w-full mt-4">
+						<div class="flex justify-between items-center">
+							<div class="flex items-center space-x-2 ml-2 font-bold">
+								<span class="text-medium font-bold"> 鑳芥晥浜у搧鍒嗙被</span>
+							</div>
+						</div>
+						<div class="flex h-[360px] bg-[#f9f9f9] eec-product-div" v-if="false">
+							<div class="flex-auto h-full">
+								<!-- <img src="@/assets/images/china-map.png" alt="鑳芥晥浜у搧" class="w-full h-full" /> -->
+								<div id="eec-product-map" ref="EecProductMapChartRef"></div>
+							</div>
+							<div class="h-fit my-auto px-4 py-4 mx-10 eec-product-num-div">
+								<div class="h-full bg-[#393939] px-4 py-4 flex-1" style="box-sizing: border-box; background-color: rgb(0 0 0 / 67%)">
+									<div class="flex flex-col justify-between items-center mb-4 gap-2">
+										<div class="text-lg font-bold text-[#26c4f6]">鍏ㄥ浗鑳芥晥浜у搧鎬婚噺</div>
+										<div class="px-10 bg-[#d7ecf1] py-1.5 rounded-lg text-large font-bold text-warning">
+											{{ m_allEecProductNumber }}<span class="text-base text-info-light-3 ml-1">涓�</span>
+										</div>
+									</div>
+									<div class="grid grid-cols-1 gap-4 h-[140px]">
+										<swiper
+											:direction="'vertical'"
+											:slidesPerView="5"
+											:spaceBetween="10"
+											:autoplay="{
+												delay: 1500,
+												disableOnInteraction: false,
+											}"
+											:modules="SwiperModule"
+											class="mySwiper"
+										>
+											<swiper-slide v-for="(item, index) in cooperationData" :key="index" style="width: 100%; height: 20px">
+												<div style="height: 100%; width: 100%; display: flex; gap: 4px; justify-content: center">
+													<span class="text-[#26c4f6]">{{ item.region }}</span>
+													<div>
+														<span class="text-white font-bold">{{ item.count }}</span>
+														<span class="text-sm ml-1" style="color: #aaa">涓�</span>
+													</div>
+												</div>
+											</swiper-slide>
+										</swiper>
+									</div>
+								</div>
+							</div>
+						</div>
 					</div>
 
-					<!-- 鍙戦渶姹� -->
-					<div class="function-card">
-						<el-card shadow="hover" class="h-full cursor-pointer">
-							<div class="flex flex-col items-center space-y-2">
-								<div class="w-16 h-16 flex items-center justify-center bg-green-100 rounded-full">
-									<el-icon class="text-3xl text-green-500"><Document /></el-icon>
-								</div>
-								<div class="text-lg font-medium">鍙戦渶姹�</div>
-								<div class="text-gray-500 text-sm">Publish Demand</div>
+					<!-- 宸ヤ笟杞欢鍒嗙被缁熻 -->
+					<div class="w-full bg-[#f6f7f9]">
+						<!-- <div class="flex justify-between items-center mb-4" style="border-bottom: 1.5px solid var(--alloy-color-primary)">
+							<div class="flex items-center space-x-2 ml-2 font-bold">
+								<el-icon class="text-blue-500"><DataLine /></el-icon>
+								<span class="text-medium font-medium">宸ヤ笟杞欢锝滃伐涓欰PP<span class="text-primary">浜у搧鍒嗙被</span></span>
 							</div>
-						</el-card>
+						</div> -->
+						<div class="text-large flex items-center w-fit mx-auto mt-4 font-bold">鑳芥晥浜у搧鍒嗙被</div>
+						<div class="flex">
+							<div class="w-[45%] h-[400px]" ref="pieChartRef"></div>
+							<div class="w-[55%] h-[400px]" ref="barChartRef"></div>
+						</div>
 					</div>
-
-					<!-- 鎵続PP -->
-					<div class="function-card">
-						<el-card shadow="hover" class="h-full cursor-pointer">
-							<div class="flex flex-col items-center space-y-2">
-								<div class="w-16 h-16 flex items-center justify-center bg-purple-100 rounded-full">
-									<el-icon class="text-3xl text-purple-500"><Search /></el-icon>
-								</div>
-								<div class="text-lg font-medium">鎵続PP</div>
-								<div class="text-gray-500 text-sm">Find APP</div>
-							</div>
-						</el-card>
-					</div>
-
-					<!-- 鎵鹃渶姹� -->
-					<div class="function-card">
-						<el-card shadow="hover" class="h-full cursor-pointer">
-							<div class="flex flex-col items-center space-y-2">
-								<div class="w-16 h-16 flex items-center justify-center bg-orange-100 rounded-full">
-									<el-icon class="text-3xl text-orange-500"><List /></el-icon>
-								</div>
-								<div class="text-lg font-medium">鎵鹃渶姹�</div>
-								<div class="text-gray-500 text-sm">Find Demand</div>
-							</div>
-						</el-card>
-					</div>
+				</div>
+			</div>
+			<!-- 杩斿洖椤堕儴 -->
+			<div
+				id="scroll-to-top"
+				class="group absolute bottom-[100px] z-[30] right-[100px] transition-all duration-300 cursor-pointer"
+				:class="{
+					'opacity-0 translate-y-4 fade-leave-active': scrollPercent < 35,
+					'opacity-100 translate-y-0 fade-enter-active': scrollPercent >= 35,
+				}"
+				v-show="scrollPercent >= 35"
+				@click="scrollToTop"
+			>
+				<div
+					class="w-14 h-14 flex items-center justify-center flex-col cursor-pointer border border-gray-200 hover:bg-blue-50 transition-colors duration-200"
+				>
+					<img src="@/assets/home/Totop.jpg" alt="杩斿洖椤堕儴" class="" />
 				</div>
 			</div>
 		</div>
 
-		<!-- 鏂伴椈鍏憡鍖哄煙 -->
-		<div class="container mx-auto px-4 py-8">
-			<div class="flex justify-between items-center mb-4">
-				<div class="flex items-center space-x-2">
-					<el-icon class="text-blue-500"><Document /></el-icon>
-					<span class="text-lg font-medium">鏂伴椈鏀跨瓥</span>
-				</div>
-				<el-button text>鏇村</el-button>
-			</div>
-			<el-card>
-				<el-table :data="newsList" style="width: 100%" :show-header="false">
-					<el-table-column>
-						<template #default="scope">
-							<div class="flex justify-between items-center py-2">
-								<div class="text-gray-700 hover:text-blue-500 cursor-pointer">{{ scope.row.title }}</div>
-								<div class="text-gray-400 text-sm">{{ scope.row.date }}</div>
-							</div>
-						</template>
-					</el-table-column>
-				</el-table>
-			</el-card>
-		</div>
+		<!-- 瀹㈡湇瀵硅瘽妗� -->
+		<customer-service
+			class="fixed right-[150px] bottom-[17px] z-50 w-[440px] h-[calc(80vh-30px)] shadow-lg rounded-lg"
+			v-show="showCustomerService"
+			@close="showCustomerService = false"
+		/>
 	</div>
 </template>
 
 <script setup lang="ts">
-import { ref } from 'vue';
-import { Promotion, Document, Search, List } from '@element-plus/icons-vue';
+import * as echarts from 'echarts';
+import { onMounted, ref, nextTick, reactive } from 'vue';
+import { useRouter } from 'vue-router';
+import YWLogo from '@/assets/logo/yw_logo.png';
+import axios from 'axios';
+import CustomerService from '@/components/CustomerService.vue';
+
+import { Swiper, SwiperSlide } from 'swiper/vue';
+import { Autoplay, EffectFade, Virtual } from 'swiper/modules';
+import 'swiper/css';
+import 'swiper/css/effect-fade';
+import 'swiper/css/pagination';
+
+const SwiperModule = [Autoplay, EffectFade, Virtual];
+const router = useRouter();
+
+const catalogSwiperRef = ref<HTMLElement | null>(null);
+
+const scrollPercent = ref(0);
+
+const showCustomerService = ref(false);
 
 const newsList = ref([
 	{
-		title: '姝︽眽甯備汉姘戞斂搴滃叧浜庡嵃鍙戞姹夊競鍏充簬杩涗竴姝ヤ績杩涜蒋浠跺拰淇℃伅鎶�鏈湇鍔′笟楂樿川閲忓彂灞曡嫢骞叉斂绛栨帾鏂界殑閫氱煡',
-		date: '2024-02-12',
+		id: '7',
+		title: '涓婃捣甯備汉姘戞斂搴滃叧浜庡嵃鍙戙�婁笂娴峰競鎺ㄥ姩澶ц妯¤澶囨洿鏂板拰娑堣垂鍝佷互鏃ф崲鏂拌鍔ㄨ鍒掞紙2024-2027骞达級銆嬬殑閫氱煡',
+		date: '2024-04-23',
+		link: 'test',
 	},
 	{
-		title: '鍏充簬鍗板彂銆婂畞娉㈠競淇冭繘杞欢浜т笟楂樿川閲忓彂灞曚笓椤规斂绛栨剰瑙併�嬬殑閫氱煡',
-		date: '2024-02-11',
+		id: '1',
+		title: '涓婃捣甯傜粡娴庝俊鎭寲濮斿叧浜庡緛闆嗙敤鑳借澶囨洿鏂颁緵搴旈摼骞冲彴鐨勯�氱煡',
+		date: '2025-02-07',
+		link: 'https://sheitc.sh.gov.cn/jjyx/20250207/7e424cc336b84066890ba2366c4543a1.html',
 	},
 	{
-		title: '骞夸笢鐪佸伐涓氬拰淇℃伅鍖栧巺鍏充簬寮�灞�2024骞寸壒澶т汉鎵嶄笓椤归」鐩獙鏀舵帹鑽愬伐浣滅殑閫氱煡',
-		date: '2024-02-10',
+		id: '2',
+		title: '娴欐睙澶ц妯′互鏃ф崲鏂版柟妗堝叕甯�',
+		date: '2025-02-08',
+		link: 'https://news.qq.com/rain/a/20250208A05YH100',
+	},
+	{
+		id: '3',
+		title: '2024骞磋澶囨洿鏂颁笌娑堣垂鍝佷互鏃ф崲鏂版垚鏁堟樉钁�',
+		date: '2025-02-10',
+		link: 'https://www.sohu.com/a/857615850_122006510',
+	},
+	{
+		id: '4',
+		title: '鍗板彂鎺ㄥ姩宸ヤ笟棰嗗煙璁惧鏇存柊宸ヤ綔瀹炴柦鏂规鐨勯�氱煡',
+		date: '2024-10-22',
+		link: 'https://gxj.quanzhou.gov.cn/zwgk/zfxxgk/fdzdgknr/gzdt/202410/t20241022_3093021.htm',
+	},
+	{
+		id: '5',
+		title: '鍏充簬銆婁笂娴峰競宸ヤ笟閫氫俊涓氱敤鑳借澶囨洿鏂颁笓椤规斂绛栧疄鏂界粏鍒欙紙寰佹眰鎰忚绋匡級銆嬪叕寮�寰佹眰鎰忚鐨勫叕鍛�',
+		date: '2024-12-18',
+		link: 'https://sheitc.sh.gov.cn/gg/20241218/517c960cef5d40f0bb04b1099c64d9eb.html',
+	},
+	// {
+	// 	id: '6',
+	// 	title: '瑙h浜т笟鑳芥晥鎸囧崡锛屾帹鍔ㄨ澶囧鏍囧強鏇存柊',
+	// 	date: '2024-08-05',
+	// 	link: 'https://sheitc.sh.gov.cn/djjcdt/20240805/e8b8b4db2fb445f88b22b72f45132d68.html',
+	// },
+	// {
+	// 	title: '鍗板彂鎺ㄥ姩宸ヤ笟棰嗗煙璁惧鏇存柊宸ヤ綔瀹炴柦鏂规鐨勯�氱煡',
+	// 	date: '2024-10-22',
+	// },
+	// {
+	// 	title: '鍏充簬銆婁笂娴峰競宸ヤ笟閫氫俊涓氱敤鑳借澶囨洿鏂颁笓椤规斂绛栧疄鏂界粏鍒欙紙寰佹眰鎰忚绋匡級銆嬪叕寮�寰佹眰鎰忚鐨勫叕鍛�',
+	// 	date: '2024-12-18',
+	// },
+	// {
+	// 	title: '瑙h浜т笟鑳芥晥鎸囧崡锛屾帹鍔ㄨ澶囧鏍囧強鏇存柊',
+	// 	date: '2024-08-05',
+	// },
+	// {
+	// 	title: '涓冮儴闂ㄨ仈鍚堝嵃鍙戞柟妗堥儴缃插伐涓氶鍩熻澶囨洿鏂板拰鎶�鏈敼閫� 鎺ㄥ姩鍏堣繘浜ц兘姣旈噸鎸佺画鎻愬崌',
+	// 	date: '2024-04-29',
+	// },
+	// {
+	// 	title: '鍥藉姟闄㈠叧浜庡嵃鍙戙�婃帹鍔ㄥぇ瑙勬ā璁惧鏇存柊鍜屾秷璐瑰搧浠ユ棫鎹㈡柊琛屽姩鏂规銆嬬殑閫氱煡',
+	// 	date: '2024-03-07',
+	// },
+]);
+const m_RequestDataObj = {
+	1: { requestPath: 'static/EecProductData/Pump.json?v=' + new Date().getTime() },
+	2: { requestPath: 'static/EecProductData/AirCompressor.json?v=' + new Date().getTime() },
+	3: { requestPath: 'static/EecProductData/Fan.json?v=' + new Date().getTime() },
+	4: { requestPath: 'static/EecProductData/WaterChiller.json?v=' + new Date().getTime() },
+	7: { requestPath: 'static/EecProductData/ElectricMachinery.json?v=' + new Date().getTime() },
+};
+const state = reactive({
+	catalog: [
+		{ name: '娉�', tag: 1 },
+		{ name: '瀹圭Н寮忕┖鍘嬫満', tag: 2 },
+		{ name: '閫氶鏈�', tag: 3 },
+		{ name: '鍐锋按鏈虹粍', tag: 4 },
+		{ name: '鐢垫満', tag: 7 },
+	],
+	curSelectCatalog: 1,
+	catalogSwiperIndex: 0,
+	catalogItemList: [],
+	m_CompanyList:[],
+	m_PageLoading: false,
+});
+
+const pieChartRef = ref<HTMLElement | null>(null);
+const barChartRef = ref<HTMLElement | null>(null);
+
+const cooperationData = ref([
+	{
+		region: '鍖椾含',
+		count: 408,
+	},
+	{
+		region: '澶╂触',
+		count: 339,
+	},
+	{
+		region: '涓婃捣',
+		count: 489,
+	},
+	{
+		region: '閲嶅簡',
+		count: 23,
+	},
+	{
+		region: '娌冲寳',
+		count: 440,
+	},
+	{
+		region: '娌冲崡',
+		count: 432,
+	},
+	{
+		region: '浜戝崡',
+		count: 442,
+	},
+	{
+		region: '杈藉畞',
+		count: 8,
+	},
+	{
+		region: '榛戦緳姹�',
+		count: 363,
+	},
+	{
+		region: '婀栧崡',
+		count: 134,
+	},
+	{
+		region: '瀹夊窘',
+		count: 474,
+	},
+	{
+		region: '灞变笢',
+		count: 438,
+	},
+	{
+		region: '鏂扮枂',
+		count: 334,
+	},
+	{
+		region: '姹熻嫃',
+		count: 129,
+	},
+	{
+		region: '娴欐睙',
+		count: 433,
+	},
+	{
+		region: '姹熻タ',
+		count: 197,
+	},
+	{
+		region: '婀栧寳',
+		count: 315,
+	},
+	{
+		region: '骞胯タ',
+		count: 69,
+	},
+	{
+		region: '鐢樿們',
+		count: 630,
+	},
+	{
+		region: '灞辫タ',
+		count: 495,
+	},
+	{
+		region: '鍐呰挋鍙�',
+		count: 283,
+	},
+	{
+		region: '闄曡タ',
+		count: 156,
+	},
+	{
+		region: '鍚夋灄',
+		count: 485,
+	},
+	{
+		region: '绂忓缓',
+		count: 411,
+	},
+	{
+		region: '璐靛窞',
+		count: 496,
+	},
+	{
+		region: '骞夸笢',
+		count: 451,
+	},
+	{
+		region: '闈掓捣',
+		count: 387,
+	},
+	{
+		region: '瑗胯棌',
+		count: 356,
+	},
+	{
+		region: '鍥涘窛',
+		count: 414,
+	},
+	{
+		region: '瀹佸',
+		count: 470,
+	},
+	{
+		region: '娴峰崡',
+		count: 437,
+	},
+	{
+		region: '鍙版咕',
+		count: 165,
+	},
+	{
+		region: '棣欐腐',
+		count: 94,
+	},
+	{
+		region: '婢抽棬',
+		count: 437,
+	},
+	{
+		region: '鍗楁捣璇稿矝',
+		count: 0,
 	},
 ]);
+
+// 鍥捐〃鏁版嵁
+const chartData = [
+	{ name: '娉�', value: 7185, percentage: '18.89%' },
+	{ name: '绌哄帇鏈�', value: 4875, percentage: '12.82%' },
+	{ name: '閫氶鏈�', value: 895, percentage: '2.35%' },
+	{ name: '鍐锋按鏈虹粍', value: 2184, percentage: '5.74%' },
+	{ name: '鐢靛姏鍙樺帇鍣�', value: 1896, percentage: '4.99%' },
+	{ name: '宸ヤ笟閿呯倝', value: 2897, percentage: '7.62%' },
+	{ name: '鐢垫満', value: 18865, percentage: '47.59%' },
+];
+
+// 琛屽熀閫氫笓鏁版嵁
+const chartData2 = [
+	{ name: '鍩虹鍏辨�х被', value: 1764, percentage: '43.20%' },
+	{ name: '琛屼笟閫氱敤绫�', value: 1670, percentage: '40.90%' },
+	{ name: '浼佷笟涓撶敤绫�', value: 596, percentage: '14.60%' },
+	{ name: '鍏朵粬绫�', value: 53, percentage: '1.30%' },
+];
+
+const pieChart2Ref = ref<null>(null);
+const barChart2Ref = ref<HTMLElement | null>(null);
+
+const EecProductMapChartRef = ref<HTMLElement | null>(null);
+const m_allEecProductNumber = ref(0);
+
+// 璁$畻鎬婚噺
+const totalCount = computed(() => {
+	return chartData.reduce((sum, item) => sum + item.value, 0);
+});
+
+onMounted(() => {
+	nextTick(() => {
+		// initMapChart();
+		initPipeOneChart();
+		initPipeTwoChart();
+		initComanyData();
+		initCatalogList();
+
+		document.getElementById('app-page')?.addEventListener('scroll', handleScroll);
+	});
+});
+const handleScroll = () => {
+	const scrollTop = document.getElementById('app-page')?.scrollTop;
+	const scrollHeight = document.getElementById('app-page')?.scrollHeight - document.getElementById('app-page')?.clientHeight;
+	scrollPercent.value = (scrollTop / scrollHeight) * 100;
+
+	let scrollToTop = document.getElementById('scroll-to-top');
+	let footer = document.getElementById('app-footer');
+
+	// if (footer) {
+	// 	const footerRect = footer.getBoundingClientRect();
+	// 	const viewportHeight = window.innerHeight;
+
+	// 	if (footerRect.top > viewportHeight) {
+	// 		// Footer is not in viewport
+	// 		if (scrollToTop) {
+	// 			scrollToTop.style.bottom = '100px';
+	// 		}
+	// 	} else {
+	// 		// Footer is in viewport
+	// 		if (scrollToTop) {
+	// 			const distanceFromFooter = 100; // 100px gap from footer
+	// 			const newBottom = viewportHeight - footerRect.top + distanceFromFooter;
+	// 			scrollToTop.style.bottom = `${newBottom}px`;
+	// 		}
+	// 	}
+	// }
+};
+const linkClick = () => {
+	router.push('/select-selpara');
+};
+
+const routeClick = (url: string) => {
+	router.push(url);
+};
+const handleNewsClick = (item: any) => {
+	// if (item.link) {
+	// 	window.open(item.link, '_blank');
+	// } else {
+	// 	router.push(`/news-detail/${item.id}`);
+	// }
+	router.push(`/news-detail/${item.id}`);
+};
+// 鍒濆鍖栧巶鍟嗗垪琛ㄦ暟鎹�
+const initComanyData = () => {
+	axios({
+		method: 'get',
+		url: 'static/EecProductData/CompanyData.json',
+	})
+		.then((res) => {
+			let result = res.data;
+			state.m_CompanyList = result.map((item: any) => {
+				return {
+					CompanyId: item.CompanyId,
+					CompanyAllName: item.CompanyAllName,
+					CompanyAbbName: item.CompanyAbbName,
+					Type: item.Type,
+				};
+			});
+		})
+		.catch((err) => {});
+};
+// 鍒濆鍖栫被鍨嬪垪琛ㄦ暟鎹�
+const initCatalogList = (cb: any = null) => {
+	state.m_PageLoading = true;
+	const catalogTag = state.curSelectCatalog;
+	axios({
+		method: 'get',
+		url: m_RequestDataObj[catalogTag].requestPath,
+	})
+		.then((res) => {
+			state.m_PageLoading = false;
+			let result = res.data;
+
+			let arr = [];
+			// arr涓轰簩浣嶆暟缁勶紝姣忎釜瀛愭暟缁勫寘鍚�15鏉℃暟鎹�
+
+			result = result.map((item: any, index: number) => {
+				if (catalogTag === 2) {
+					item.Price = item.Price * 10;
+				}
+				if (catalogTag === 4) {
+					item.Price = item.Price * 5;
+				}
+				let incrementFactor = 0.1 * (index + 1); // 鏍规嵁绱㈠紩璁$畻閫掑绯绘暟
+				let newPrice = parseFloat(item.Price) + parseFloat((item.Price * incrementFactor).toFixed(1)); // 璁$畻鏂扮殑Price鍊�
+
+				return {
+					Id: item.Id,
+					Type: item.Type,
+					ModelType: item.ModelType,
+					Model: item.Model,
+					CompanyName: item.CompanyName,
+					RecordNumber: item.RecordNumber,
+					EnergyEfficiencyClass: item.EnergyEfficiencyClass,
+					RecordTime: item.RecordTime,
+					Price: newPrice,
+					PhysicalPicturePath: 'static/EecProductData/' + item.PhysicalPicturePath,
+					CertificatePath: `static/EecProductData/${item.CertificatePath}`,
+					Tip: `澶囨鏃堕棿锛�${item.RecordTime} \n 澶囨鍙凤細${item.RecordNumber}`,
+				};
+			});
+
+			for (let i = 0; i < result.length; i += 15) {
+				arr.push(result.slice(i, i + 15));
+			}
+			state.catalogItemList = arr;
+
+			if (cb) {
+				cb();
+			}
+		})
+		.catch((err) => {
+			state.m_PageLoading = false;
+		});
+};
+
+const initMapChart = () => {
+	let allEecProductNumber = 0;
+	let mapData = cooperationData.value.map((item) => {
+		allEecProductNumber += item.count;
+		return {
+			name: item.region,
+			value: item.count,
+		};
+	});
+	m_allEecProductNumber.value = allEecProductNumber;
+	axios({
+		url: 'static/Data/ChinaGeoJsonData.json',
+		method: 'get',
+	})
+		.then((res) => {
+			const GeoData = res.data;
+			if (EecProductMapChartRef.value) {
+				echarts.registerMap('china', GeoData);
+				const EecProductMapChart = echarts.init(EecProductMapChartRef.value);
+				EecProductMapChart.setOption({
+					tooltip: {
+						show: true,
+						formatter: function (params) {
+							if (params.data) return params.name + '锛�' + params.data['value'];
+						},
+					},
+					visualMap: {
+						min: 0,
+						max: 100000,
+						right: 26,
+						bottom: 40,
+						showLabel: true,
+						text: ['', ''],
+						pieces: [
+							{
+								gt: 5001,
+								label: '> 5000',
+								color: '#FF4500',
+							},
+							{
+								gte: 1001,
+								lte: 5000,
+								label: '1001 - 5000',
+								color: '#FF8300',
+							},
+							{
+								gte: 601,
+								lte: 1000,
+								label: '601 - 1000',
+								color: '#FFC100',
+							},
+							{
+								gte: 401,
+								lt: 600,
+								label: '401 - 600',
+								color: '#FFFF00',
+							},
+							{
+								gte: 201,
+								lt: 400,
+								label: '201 - 400',
+								color: '#D7EF53',
+							},
+							{
+								gte: 1,
+								lt: 200,
+								label: '1 - 200',
+								color: '#AFDEA7',
+							},
+							{
+								lt: 0,
+								label: '0',
+								color: '#87CEFA',
+							},
+						],
+						show: true,
+					},
+					geo: {
+						map: 'china',
+						roam: true,
+						scaleLimit: {
+							min: 1,
+							max: 2,
+						},
+						zoom: 1.13,
+						top: 50,
+						label: {
+							show: true,
+							fontSize: '14',
+							color: 'rgba(0,0,0,0.7)',
+							formatter: (params) => {
+								return params.name + '鐪�';
+							},
+						},
+						itemStyle: {
+							borderColor: 'rgba(0, 0, 0, 0.2)',
+						},
+						emphasis: {
+							areaColor: '#f2d5ad',
+							shadowOffsetX: 0,
+							shadowOffsetY: 0,
+							borderWidth: 0,
+							itemStyle: {
+								color: '#f4f4f4', // 榧犳爣鎮仠鏃剁殑棰滆壊
+							},
+						},
+					},
+					series: [
+						{
+							name: '鑳芥晥浜у搧',
+							type: 'map',
+							map: 'china',
+							geoIndex: 0,
+							data: mapData,
+							emphasis: {
+								itemStyle: {
+									color: 'rgba(0,0,0,0.7)', // 榧犳爣鎮仠鏃剁殑棰滆壊
+								},
+							},
+						},
+						// {
+						// 	name: '鑳芥晥浜у搧',
+						// 	type: 'map',
+						// 	mapType: 'china',
+						// 	selectedMode: 'false',
+						// 	label: {
+						// 		normal: {
+						// 			show: true,
+						// 		},
+						// 		emphasis: {
+						// 			show: false,
+						// 		},
+						// 	},
+						// 	data: mapData,
+						// },
+					],
+				});
+				// 鐩戝惉绐楀彛澶у皬鍙樺寲
+				window.addEventListener('resize', () => {
+					EecProductMapChart.resize();
+				});
+			}
+		})
+		.catch((err) => {
+			console.log(err);
+		});
+};
+const initPipeOneChart = () => {
+	if (pieChartRef.value && barChartRef.value) {
+		// 鍒濆鍖栭ゼ鍥�
+		const pieChart = echarts.init(pieChartRef.value);
+		pieChart.setOption({
+			title: {
+				text: `鎬婚噺\n${totalCount.value}`,
+				left: '30%',
+				top: '50%',
+				textStyle: {
+					fontSize: 14,
+					lineHeight: 24,
+					align: 'center',
+					fontWeight: 'normal',
+					rich: {
+						value: {
+							fontSize: 24,
+							fontWeight: 'bold',
+							padding: [10, 0],
+						},
+					},
+				},
+				textAlign: 'center',
+				textVerticalAlign: 'middle',
+			},
+			tooltip: {
+				trigger: 'item',
+				formatter: '{b}: {c} ({d}%)',
+			},
+			legend: {
+				orient: 'vertical',
+				right: '-1%',
+				top: 'middle',
+				formatter: (name: string) => {
+					const item = chartData.find((d) => d.name === name);
+					return `${name}: ${item?.value} (${item?.percentage})`;
+				},
+			},
+			series: [
+				{
+					type: 'pie',
+					radius: ['40%', '70%'],
+					center: ['30%', '50%'],
+					avoidLabelOverlap: false,
+					itemStyle: {
+						borderRadius: 10,
+						borderColor: '#fff',
+						borderWidth: 2,
+					},
+					label: {
+						show: false,
+					},
+					emphasis: {
+						label: {
+							show: false,
+						},
+					},
+					data: chartData.map((item) => ({
+						value: item.value,
+						name: item.name,
+					})),
+					color: ['#5B8FF9', '#5AD8A6', '#5D7092', '#F6BD16', '#E8684A'],
+				},
+			],
+		});
+
+		// 鍒濆鍖栨煴鐘跺浘
+		const barChart = echarts.init(barChartRef.value);
+		barChart.setOption({
+			title: {
+				text: '鑳芥晥浜у搧鍒嗙被鏁伴噺缁熻',
+				left: 'center',
+				top: 10,
+			},
+			tooltip: {
+				trigger: 'axis',
+				axisPointer: {
+					type: 'shadow',
+				},
+			},
+			grid: {
+				left: '3%',
+				right: '4%',
+				bottom: '3%',
+				containLabel: true,
+			},
+			xAxis: {
+				type: 'category',
+				data: chartData.map((item) => item.name),
+				axisLabel: {
+					interval: 0,
+					rotate: 30,
+				},
+			},
+			yAxis: {
+				type: 'value',
+				name: '鏁伴噺',
+			},
+			series: [
+				{
+					data: chartData.map((item) => item.value),
+					type: 'bar',
+					barWidth: '40%',
+					itemStyle: {
+						color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+							{ offset: 0, color: '#83bff6' },
+							{ offset: 0.5, color: '#188df0' },
+							{ offset: 1, color: '#188df0' },
+						]),
+					},
+					emphasis: {
+						itemStyle: {
+							color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+								{ offset: 0, color: '#2378f7' },
+								{ offset: 0.7, color: '#2378f7' },
+								{ offset: 1, color: '#83bff6' },
+							]),
+						},
+					},
+				},
+			],
+		});
+
+		// 鐩戝惉绐楀彛澶у皬鍙樺寲
+		window.addEventListener('resize', () => {
+			pieChart.resize();
+			barChart.resize();
+		});
+	}
+};
+const initPipeTwoChart = () => {
+	if (pieChart2Ref.value && barChart2Ref.value) {
+		const pieChart2 = echarts.init(pieChart2Ref.value);
+		pieChart2.setOption({
+			title: {
+				text: '鎬婚噺\n4083',
+				left: '30%',
+				top: '50%',
+				textStyle: {
+					fontSize: 14,
+					lineHeight: 24,
+					align: 'center',
+					fontWeight: 'normal',
+					rich: {
+						value: {
+							fontSize: 24,
+							fontWeight: 'bold',
+							padding: [10, 0],
+						},
+					},
+				},
+				textAlign: 'center',
+				textVerticalAlign: 'middle',
+			},
+			tooltip: {
+				trigger: 'item',
+				formatter: '{b}: {c} ({d}%)',
+			},
+			legend: {
+				orient: 'vertical',
+				right: '-1%',
+				top: 'middle',
+				formatter: (name: string) => {
+					const item = chartData2.find((d) => d.name === name);
+					return `${name}: ${item?.value} (${item?.percentage})`;
+				},
+			},
+			series: [
+				{
+					type: 'pie',
+					radius: ['40%', '70%'],
+					center: ['30%', '50%'],
+					avoidLabelOverlap: false,
+					itemStyle: {
+						borderRadius: 10,
+						borderColor: '#fff',
+						borderWidth: 2,
+					},
+					label: {
+						show: false,
+					},
+					emphasis: {
+						label: {
+							show: false,
+						},
+					},
+					data: chartData2.map((item) => ({
+						value: item.value,
+						name: item.name,
+					})),
+					color: ['#5B8FF9', '#5AD8A6', '#5D7092', '#F6BD16'],
+				},
+			],
+		});
+
+		// 鍒濆鍖栫浜屼釜鏌辩姸鍥�
+		const barChart2 = echarts.init(barChart2Ref.value);
+		barChart2.setOption({
+			title: {
+				text: '鍩虹鍏辨�х被浜у搧鏁伴噺缁熻',
+				left: 'center',
+				top: 10,
+			},
+			tooltip: {
+				trigger: 'axis',
+				axisPointer: {
+					type: 'shadow',
+				},
+			},
+			grid: {
+				left: '3%',
+				right: '4%',
+				bottom: '3%',
+				containLabel: true,
+			},
+			xAxis: {
+				type: 'category',
+				data: ['姹熻嫃鐪�', '鍖椾含甯�', '娴欐睙鐪�', '涓婃捣甯�', '灞变笢鐪�', '骞夸笢鐪�'],
+				axisLabel: {
+					interval: 0,
+					rotate: 30,
+				},
+			},
+			yAxis: {
+				type: 'value',
+				name: '鏁伴噺',
+				max: 600,
+			},
+			series: [
+				{
+					data: [500, 450, 220, 150, 150, 120],
+					type: 'bar',
+					barWidth: '40%',
+					itemStyle: {
+						color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+							{ offset: 0, color: '#26c4f6' },
+							{ offset: 0.5, color: '#26c4f6' },
+							{ offset: 1, color: '#26c4f6' },
+						]),
+					},
+				},
+			],
+		});
+
+		// 鐩戝惉绐楀彛澶у皬鍙樺寲
+		window.addEventListener('resize', () => {
+			pieChart2.resize();
+			barChart2.resize();
+		});
+	}
+};
+
+// 鐩戝惉浜у搧绫诲瀷閫夋嫨
+const changeCatalog = (type: number) => {
+	state.curSelectCatalog = type;
+	state.catalogSwiperIndex = 0;
+	const cb = () => {
+		catalogSwiperRef.value?.slideTo(state.catalogSwiperIndex, 0);
+		// catalogSwiperRef.value?.autoplay = {
+		// 	delay: 3000,
+		// 	disableOnInteraction: false,
+		// 	pauseOnMouseEnter:true,
+		// };
+		catalogSwiperRef.value?.update();
+	};
+	initCatalogList(cb);
+};
+// 浜у搧绫诲瀷鐐瑰嚮
+const handleCatalogClick = (item: any) => {
+	const type = item.Type;
+	const companyID = getCompanyItemByType(type)[0].CompanyId;
+	router.push({
+		path: '/certified-products',
+		query: {
+			company: companyID,
+			type: type,
+		},
+	});
+};
+
+const onSwiper = (swiper: any) => {
+	catalogSwiperRef.value = swiper;
+};
+const onSlideChange = () => {};
+const toFeedBack = () => {
+	router.push('/feedback');
+};
+const toSubsidy = () => {
+	// 璺宠浆鍒拌缃戦〉
+	window.open('https://www.sheitc.sh.gov.cn/', '_blank');
+};
+const scrollToTop = () => {
+	nextTick(() => {
+		document.getElementById('app-page').scrollTo({
+			top: 0,
+			behavior: 'smooth',
+		});
+	});
+};
+const getCompanyNameByType = (type: number) => {
+	return state.m_CompanyList.find((item: any) => item.Type.includes(type))?.CompanyAbbName;
+};
+const getCompanyItemByType = (type: number) => {
+	return state.m_CompanyList.filter((item: any) => item.Type.includes(type));
+};
+onUnmounted(() => {
+	document.getElementById('app-page')?.removeEventListener('scroll', handleScroll);
+});
 </script>
 
 <style scoped>
-.banner-slide {
+.carousel-item {
+	width: 100%;
 	height: 100%;
+	overflow: hidden;
+	position: relative;
+	cursor: pointer;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+
+.carousel-image {
+	width: 100%;
+	height: 100%;
+	object-fit: fill; /* 淇敼涓篺ill浠ュ畬鍏ㄥ~鍏呭鍣� */
 }
 
 .function-card {
-	transition: transform 0.2s;
+	transition: all 0.3s ease;
 }
 
 .function-card:hover {
 	transform: translateY(-4px);
+	box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
 }
-
+.eec-product-div {
+	background-image: url('@/assets/home/eec_product_bg.jpg');
+}
+.eec-product-num-div {
+	min-width: 230px;
+	border: 1px solid rgb(28, 151, 183);
+	height: 100%;
+	display: flex;
+	overflow: hidden;
+	height: 255px;
+}
+#eec-product-map {
+	width: 100%;
+	height: 100%;
+}
+.mySwiper {
+	width: 100%;
+	height: 100%;
+}
+.card-hover-style {
+	/* display: flex;
+	justify-content: center;
+	align-items: center; */
+	/* transform: translateY(50%); */
+	background-color: #fff;
+	color: #000;
+	margin-right: unset;
+}
 :deep(.el-carousel__arrow) {
-	background-color: rgba(255, 255, 255, 0.3);
+	background-color: rgba(0, 0, 0, 0.5);
 	border: none;
+	width: 44px;
+	height: 44px;
+	font-size: 20px;
 
 	&:hover {
-		background-color: rgba(255, 255, 255, 0.5);
+		background-color: rgba(0, 0, 0, 0.7);
 	}
+
+	i {
+		color: #fff;
+	}
+}
+
+.news-item {
+	cursor: pointer;
+	padding: 8px 0px;
+	font-size: 18px;
+	color: #5c5c5c;
+	font-family: 寰蒋闆呴粦;
+	font-weight: 500;
+}
+
+:deep(.customer-service-dialog .el-dialog__body) {
+	padding: 0;
+}
+
+:deep(.customer-service-dialog .el-dialog__header) {
+	display: block;
+}
+
+.catalog-list {
+	padding: 20px;
+	box-sizing: border-box;
+	.catalog-item {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		cursor: pointer;
+		color: #003a8f;
+		font-size: 20px;
+		font-weight: 700;
+		&:hover {
+			color: #71b02b;
+		}
+	}
+}
+.catalog-continer {
+	/* 鎬婚珮搴� - 涓婁笅padding - 琛岄棿璺� */
+	height: 100%; /* 70px鏄笂涓媝adding鎬诲拰锛�60px鏄袱琛岄棿璺濇�诲拰 */
+	padding: 35px; /* 鍋囪padding涓�20px锛屼綘鍙互鏍规嵁闇�瑕佽皟鏁� */
+	display: grid;
+	grid-template-columns: repeat(5, 1fr);
+	grid-template-rows: repeat(3, 1fr);
+	gap: 30px;
+	overflow: hidden;
+	box-sizing: border-box;
+}
+
+.catalog-continer-item {
+	background-color: #fff;
+	height: 100%; /* 鏀逛负100%浠ラ�傚簲grid甯冨眬 */
+	border-radius: 20px;
+	box-sizing: border-box;
+	cursor: pointer;
+	&:hover {
+		img {
+			transform: scale(1.05);
+			transition: all 1s ease;
+		}
+		box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.1);
+	}
+}
+
+.catalog-tag-active {
+	color: #71b02b !important;
+}
+
+.news-title {
+	font-size: 20px;
+	color: #000000;
+	font-weight: 700;
+	font-family: 寰蒋闆呴粦;
+}
+
+.left-news-temp-div {
+	border: 1px solid #ccc;
+	&::before {
+		content: '';
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 4px;
+		background-color: #003a8f;
+	}
+}
+
+.right-news-temp-div {
+	/* border-top: 4px solid #003a8f; */
+	position: relative;
+	&::before {
+		content: '';
+		position: absolute;
+		top: 0px;
+		left: 0;
+		width: 20%;
+		height: 4px;
+		z-index: 1;
+		background-color: #71b02b;
+	}
+	&::after {
+		content: '';
+		position: absolute;
+		top: 0px;
+		left: 20%;
+		width: 80%;
+		height: 4px;
+		z-index: 1;
+		background-color: #003a8f;
+	}
+
+	.new-desc-text {
+		font-size: 16px;
+		color: #656565;
+		line-height: 29px;
+		font-family: 寰蒋闆呴粦;
+		font-weight: 300;
+	}
+}
+.news-list-dot {
+	width: 6px;
+	height: 6px;
+	background-image: linear-gradient(45deg, #93a5cf 0%, #e4efe9 100%);
+}
+
+.eec-product-classify-div {
+	position: relative;
+	&::before {
+		content: '';
+		position: absolute;
+		top: 0px;
+		left: 0;
+		width: 20%;
+		height: 4px;
+		z-index: 1;
+		background-color: #71b02b;
+	}
+	&::after {
+		content: '';
+		position: absolute;
+		top: 0px;
+		left: 20%;
+		width: 80%;
+		height: 4px;
+		z-index: 1;
+		background-color: #003a8f;
+	}
+}
+
+:deep(.catalog-swiper .swiper-slide) {
+	height: 100% !important;
+}
+
+:deep(.catalog-swiper .swiper-pagination-bullet) {
+	width: 20px;
+	height: 20px;
+	text-align: center;
+	line-height: 20px;
+	font-size: 12px;
+	color: #000;
+	opacity: 1;
+	background: rgba(0, 0, 0, 0.2);
+}
+
+:deep(.catalog-swiper .swiper-pagination-bullet-active) {
+	color: #fff;
+	background: #007aff;
+}
+
+@keyframes fadeIn {
+	from {
+		opacity: 0;
+		transform: translateY(16px);
+	}
+	to {
+		opacity: 1;
+		transform: translateY(0);
+	}
+}
+
+@keyframes fadeOut {
+	from {
+		opacity: 1;
+		transform: translateY(0);
+	}
+	to {
+		opacity: 0;
+		transform: translateY(16px);
+	}
+}
+
+.fade-enter-active {
+	animation: fadeIn 0.3s ease-out;
+}
+
+.fade-leave-active {
+	animation: fadeOut 0.3s ease-out;
+}
+.etiquet-price {
+    background: #003a8f;
+    margin-left: -0.65rem;
+    padding: .2rem 1.2rem;
+    border-radius: 5px 0 0 5px;
+}
+
+.etiquet-price p {
+  height: 20px;
+  margin: 0;
+  display: flex;
+  font-size: 14px;
+  font-weight: 600;
+  line-height: 20px;
+  color: #fff;
+}
+
+.etiquet-price div {
+  position: absolute;
+  bottom: -23px;
+  right: 0px;
+  width: 0;
+  height: 0;
+  border-top: 13px solid #003a8f;
+  border-bottom: 10px solid transparent;
+  border-right: 13px solid transparent;
+  z-index: -6;
 }
 </style>

--
Gitblit v1.9.3