Files
company-website/src/views/pc/index.vue

456 lines
17 KiB
Vue
Raw Normal View History

2025-09-18 11:19:24 +08:00
<!-- src/views/pc/index.vue -->
<template>
2025-09-18 11:19:24 +08:00
<div class="pc-home">
<!-- 第一屏全屏轮播 -->
<div class="first-screen">
<div class="carousel-wrapper">
2025-09-18 11:19:24 +08:00
<a-carousel autoplay :autoplay-speed="5000" arrows dots-class="slick-dots slick-thumb">
<div class="carousel-item">
<video src="./video/9c4a6c72df9f8a4f6b013003cb2f6bd5.mp4" autoplay loop muted playsinline></video>
<div class="carousel-content">
<h1 class="animate-slide-in slideTitle">我们的愿景</h1>
<p class="animate-slide-in delay-1 slideintro">成为全球企业信赖的能碳管理伙伴定义智慧零碳时代新标准</p>
<p class="animate-slide-in delay-2 englishFont">BECOME A TRUSTED PARTNER IN ENERGY AND CARBON MANAGEMENT
FOR GLOBAL ENTERPRISES; DEFINE THE NEW STANDARDS FOR THE ERA OF SMART ZERO CARBON.</p>
</div>
</div>
2025-09-18 11:19:24 +08:00
<div class="carousel-item">
<video src="https://ec-resource20.oss-cn-shanghai.aliyuncs.com/ec_official_website/3_2.mp4" autoplay loop
2025-09-18 11:19:24 +08:00
muted playsinline></video>
<!-- <div class="carousel-content">
<h1 class="animate-slide-in">可持续发展</h1>
<p class="animate-slide-in delay-1">推动绿色能源转型</p>
<a-button class="animate-slide-in delay-2" type="primary" size="large">
探索方案
</a-button>
</div> -->
</div>
2025-09-18 11:19:24 +08:00
<div class="carousel-item">
<video src="https://ec-resource20.oss-cn-shanghai.aliyuncs.com/ec_official_website/3_3.mp4" autoplay loop
2025-09-18 11:19:24 +08:00
muted playsinline></video>
<!-- <div class="carousel-content">
<h1 class="animate-slide-in">创新科技</h1>
<p class="animate-slide-in delay-1">打造环保解决方案</p>
<a-button class="animate-slide-in delay-2" type="primary" size="large">
查看案例
</a-button>
</div> -->
</div>
</a-carousel>
</div>
2025-09-18 11:19:24 +08:00
<!-- 向下滚动指示器 -->
<div class="scroll-indicator" @click="scrollToNext">
<DownOutlined />
</div>
</div>
<!-- 第二屏核心产品 -->
<div class="second-screen" ref="secondScreenRef">
<div class="container">
<div class="content-section animate-fade-in-up">
<h2>
<img src="./../../assets/images/point.png" />
<span>核心产品</span>
</h2>
<ul class="core-products animate-fade-in-up">
<li>AI智控</li>
<li>高效节能</li>
<li>能碳双控</li>
<li>绿色低碳</li>
</ul>
</div>
<div class="services-section">
<a-row :gutter="[16, 16]" class="serviceList">
<a-col :span="12">
<div class="service-card animate-fade-in-up delay-1">
<h3>全生命周期产品碳足迹平台</h3>
</div>
</a-col>
<a-col :span="12">
<div class="service-card animate-fade-in-up delay-2">
<h3>城市级能碳平台</h3>
</div>
</a-col>
</a-row>
<a-row :gutter="[16, 16]" class="serviceList2">
<a-col :span="6">
<div class="service-card animate-fade-in-up delay-3">
<h3>城市级能碳平台</h3>
</div>
</a-col>
<a-col :span="6">
<div class="service-card animate-fade-in-up delay-4">
<h3>工业锅炉节能器</h3>
</div>
</a-col>
<a-col :span="6">
<div class="service-card animate-fade-in-up delay-5">
<h3>FMCS智能工业平台</h3>
</div>
</a-col>
<a-col :span="6">
<div class="service-card animate-fade-in-up delay-6">
<h3>ESG绿色认证咨询</h3>
</div>
</a-col>
</a-row>
</div>
</div>
</div>
<!-- 第三屏AI+智能节能技术 -->
<div class="three-screen" ref="threeScreenRef">
<div class="container">
2025-09-18 16:13:42 +08:00
<div class="content-section animate-fade-in-up">
<h2>
<img src="./../../assets/images/point.png" />
<span>AI+智能节能技术</span>
</h2>
<p>为客户提供多场景中长期智慧能源战略规划包括AIoT能源管理系统与低碳技术集成</p>
</div>
<!-- 横向循环焦点图展示 轮播图 -->
<div class="carousel-section">
2025-09-18 18:05:42 +08:00
<swiper :modules="[Autoplay, Pagination]" :slides-per-view="3.5" :space-between="20" :loop="true" :autoplay="{
delay: 3000,
disableOnInteraction: false,
pauseOnMouseEnter: true
}" @slideChange="onThirdScreenSlideChange" @autoplayTimeLeft="onThirdScreenAutoplayTimeLeft"
class="ai-tech-carousel">
<swiper-slide v-for="(item, index) in carouselItems" :key="index">
<div class="slide-content" @click="selectItem(index)" :class="{ active: index === currentIndex }">
2025-09-18 16:13:42 +08:00
<img :src="item.image" :alt="item.title" />
2025-09-18 18:05:42 +08:00
<div class="slide-info">
2025-09-18 16:13:42 +08:00
<h3>{{ item.title }}</h3>
<p>{{ item.description }}</p>
</div>
</div>
2025-09-18 18:05:42 +08:00
</swiper-slide>
</swiper>
2025-09-18 16:13:42 +08:00
</div>
</div>
</div>
<!-- 第四屏 -应用场景 -->
<div class="screens-four">
<div class="container">
<div class="content-section animate-fade-in-up">
<h2>
<img src="./../../assets/images/point.png" />
<span>应用场景</span>
</h2>
2025-09-18 18:05:42 +08:00
<p class="desc">融合智能感知与认知计算全面提升运营效率与决策智能化水平</p>
2025-09-18 16:13:42 +08:00
</div>
<!-- 横向滚动屏 -->
<div class="carousel-section">
2025-09-18 18:05:42 +08:00
<swiper :modules="[Autoplay, Pagination]" :slides-per-view="4.5" :space-between="0" :loop="true" :autoplay="{
delay: 3000,
disableOnInteraction: false,
pauseOnMouseEnter: true
}" @slideChange="onSlideChange" @autoplayTimeLeft="onAutoplayTimeLeft" class="tech-carousel">
<swiper-slide v-for="(item, index) in carouselSeneceList" :key="index">
<div class="slide-content" @mouseenter="handleMouseEnter(index)" @mouseleave="handleMouseLeave(index)">
2025-09-18 16:13:42 +08:00
<img :src="item.image" :alt="item.title" />
2025-09-18 18:05:42 +08:00
<div class="image-overlay default-info" v-show="!item.hovered">
<p>{{ item.companyName }}</p>
</div>
<div class="hover-overlay" v-show="item.hovered">
<div class="overlay-content">
<h3>{{ item.title }}</h3>
<p>{{ item.description }}</p>
</div>
2025-09-18 16:13:42 +08:00
</div>
</div>
2025-09-18 18:05:42 +08:00
</swiper-slide>
<!-- 进度条导航 -->
<div class="swiper-pagination-custom">
<div class="progress-bar">
<div class="progress-fill" :style="{ width: progress + '%' }"></div>
</div>
2025-09-18 16:13:42 +08:00
</div>
2025-09-18 18:05:42 +08:00
</swiper>
2025-09-18 16:13:42 +08:00
</div>
</div>
</div>
<!--第五屏 合作伙伴 -->
<div class="partner-screens">
<div class="container">
<div class="content-section animate-fade-in-up">
<h2>
<img src="./../../assets/images/point.png" />
<span>合作伙伴</span>
</h2>
<p>与您携手共赢,共同创造美好未来</p>
<h4>
<line></line>荣誉资质<line></line>
</h4>
<div class="partner-img">
<p><span>ISO9001认证</span></p>
<p><span>ISO45001认证</span></p>
<p><span>ISO14001认证</span></p>
</div>
<h4 class="partner-title">
<line></line>客户及战略伙伴<line></line>
</h4>
2025-09-18 11:19:24 +08:00
2025-09-18 16:13:42 +08:00
</div>
</div>
<div class="partnerImgAll animate-fade-in-up">
<img src="../../assets/images/partercomp.png" alt="">
2025-09-18 11:19:24 +08:00
</div>
</div>
2025-09-18 16:13:42 +08:00
<!--第六屏 新闻资讯 -->
2025-09-18 11:19:24 +08:00
<div class="other-screens">
<div class="container">
2025-09-18 16:13:42 +08:00
<div class="content-section animate-fade-in-up">
<h2>
<img src="./../../assets/images/point.png" />
<span>新闻资讯</span>
</h2>
<p class="desc">了解最新行业资讯 把握市场最新动向</p>
<div class="content">
<div class="lt">
<div class="img"><img src="./../../assets/images/news.png" /></div>
<p class="title">降本增效新引擎AI如何实现能源的精细化管理与数智变革</p>
<p class="nr">在能源革命和数字化转型的双重驱动下能源精细化管理已成为企业节能降碳实现可持续发展的必然选择...</p>
</div>
<div class="rt">
<ul>
<li v-for="item in newsList" :key="item.id">
<div class="newslt">
<h4>{{ item.date.substring(8, 10) }}</h4>
<p>{{ item.date.substring(0, 7) }}</p>
2025-09-18 16:13:42 +08:00
</div>
<div class="newsrt">
<h4>{{ item.title }}</h4>
<p>{{ item.description }}</p>
</div>
</li>
</ul>
</div>
</div>
2025-09-18 11:19:24 +08:00
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
2025-09-18 16:13:42 +08:00
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'
2025-09-18 11:19:24 +08:00
import { DownOutlined } from '@ant-design/icons-vue'
2025-09-18 18:05:42 +08:00
import { Swiper, SwiperSlide } from 'swiper/vue';
import { Autoplay, Navigation, Pagination } from 'swiper/modules';
import 'swiper/css';
import 'swiper/css/pagination';
// 静态导入所有图片(AI智能节能技术)
2025-09-18 16:13:42 +08:00
import carouse1 from './../../assets/images/carouse1.png'
import carouse2 from './../../assets/images/carouse2.png'
import carouse3 from './../../assets/images/carouse3.png'
import carouse4 from './../../assets/images/carouse4.png'
import carouse5 from './../../assets/images/carouse5.png'
2025-09-18 18:05:42 +08:00
//应用场景图片
import appScene1 from './../../assets/images/scene1.png'
import appScene2 from './../../assets/images/scene2.png'
import appScene3 from './../../assets/images/scene3.png'
import appScene4 from './../../assets/images/scene4.png'
import appScene5 from './../../assets/images/scene5.png'
// 添加进度状态
const progress = ref(0);
const swiperRef = ref(null);
2025-09-18 11:19:24 +08:00
// 新闻数据
const newsList = ref([
2025-09-18 16:13:42 +08:00
{
id: 1,
date: '2025-09-01',
title: '降本增效新引擎AI如何实现能源的精细化管理与数智变革',
description: '在能源革命和数字化转型的双重驱动下,能源精细化管理已成为企业节能降碳、实现可持续发展的必然选择...'
},
{
id: 2,
date: '2025-09-04',
title: '降本增效新引擎AI如何实现能源的精细化管理与数智变革',
description: '在能源革命和数字化转型的双重驱动下,能源精细化管理已成为企业节能降碳、实现可持续发展的必然选择...'
},
{
id: 3,
date: '2025-09-15',
title: '降本增效新引擎AI如何实现能源的精细化管理与数智变革',
description: '在能源革命和数字化转型的双重驱动下,能源精细化管理已成为企业节能降碳、实现可持续发展的必然选择...'
}
2025-09-18 11:19:24 +08:00
])
const secondScreenRef = ref<HTMLElement | null>(null)
const observer = ref<IntersectionObserver | null>(null)
2025-09-18 18:05:42 +08:00
/************************AI+智能节能技术——第三屏轮播图片*************************** */
// AI智能节能技术-轮播图数据
2025-09-18 16:13:42 +08:00
const carouselItems = ref([
{
image: carouse1,
title: '智能能源管理',
description: '通过AI技术实现能源使用优化'
},
{
image: carouse2,
title: '碳足迹追踪',
description: '全生命周期碳排放监控与分析'
},
{
image: carouse3,
title: '绿色工厂解决方案',
description: '工业4.0背景下的低碳生产模式'
},
{
image: carouse4,
title: '城市能源互联网',
description: '构建智慧城市的能源生态系统'
},
{
image: carouse5,
title: '可再生能源集成',
description: '风光储一体化解决方案'
}
])
2025-09-18 18:05:42 +08:00
const thirdScreenProgress = ref(0);
const thirdScreenSwiperRef = ref(null);
const onThirdScreenSlideChange = (swiper: any) => {
thirdScreenProgress.value = 0;
}
const onThirdScreenAutoplayTimeLeft = (s: any, time: any, progressValue: any) => {
thirdScreenProgress.value = (1 - progressValue) * 100;
thirdScreenSwiperRef.value = s;
}
/************************AI+智能节能技术——第三屏轮播图片 end*************************** */
//应用场景轮播图
const carouselSeneceList = ref([
{
image: appScene1,
companyName: '绿色酒店',
title: '绿色酒店123',
hovered: false,
description: '创建绿色酒店是社会进步的需要。在建设绿色酒店的过程中,采用科学的方法对酒店进行绿色管理。'
},
{
image: appScene2,
companyName: '零碳园区',
title: '零碳园区2',
hovered: false,
description: '通过应用清洁能源、提升能源利用效率、优化碳排放管理等技术手段,实现园区内碳排放总量抵消的现代化产业园区'
},
{
image: appScene3,
companyName: '商业综合体2',
title: '商业综合体',
hovered: false,
description: '介绍商业综合体场景的内容介绍商业综合介绍商业综合体介绍,商业综合体介绍商业综合体体。介绍介绍商业综合体场景的内容介绍商业综合介绍商业综合体介绍,商业综合体介绍商业综合体体。'
},
{
image: appScene4,
companyName: '绿色工厂2',
title: '绿色工厂',
hovered: false,
description: '绿色工厂是绿色制造的实施主体,属于绿色制造体系的核心支撑单元,侧重于生产过程的绿色化。'
},
{
image: appScene5,
companyName: '智慧医院',
title: '智慧医院',
hovered: false,
description: '智慧医院是通过数字化技术与医疗场景深度融合构建的全流程智能化服务体系。它以数据互联互通为基础结合人工智能、物联网、5G等技术实现患者服务便捷化、诊疗流程精准化、医院管理精细化是医疗行业未来发展的核心方向。'
}
])
2025-09-18 16:13:42 +08:00
const currentIndex = ref(0)
const carouselWrapper = ref(null)
// 选择图片
const selectItem = (index) => {
currentIndex.value = index
centerActiveItem()
}
// 居中显示当前选中项
const centerActiveItem = () => {
nextTick(() => {
if (carouselWrapper.value) {
const activeItem = carouselWrapper.value.querySelector('.carousel-item.active')
if (activeItem) {
const containerWidth = carouselWrapper.value.offsetWidth
const itemWidth = activeItem.offsetWidth
const itemLeft = activeItem.offsetLeft
const scrollLeft = itemLeft - (containerWidth - itemWidth) / 2
carouselWrapper.value.scrollTo({
left: scrollLeft,
behavior: 'smooth'
})
}
}
})
}
2025-09-18 11:19:24 +08:00
// 滚动到下一屏
const scrollToNext = () => {
const nextScreen = document.querySelector('.second-screen')
if (nextScreen) {
window.scrollTo({
top: nextScreen.offsetTop,
behavior: 'smooth'
})
}
}
// 初始化 Intersection Observer
const initIntersectionObserver = () => {
observer.value = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible')
}
})
}, {
threshold: 0.1
})
// 观察所有需要动画的元素
const animateElements = document.querySelectorAll('.animate-fade-in-up, .animate-slide-in')
animateElements.forEach(el => {
observer.value?.observe(el)
})
}
2025-09-18 18:05:42 +08:00
/******************应用场景-逻辑start******************* */
// 修改鼠标事件处理方法
const handleMouseEnter = (index: number) => {
carouselSeneceList.value[index].hovered = true
}
2025-09-18 11:19:24 +08:00
2025-09-18 18:05:42 +08:00
const handleMouseLeave = (index: number) => {
carouselSeneceList.value[index].hovered = false
}
const onSlideChange = (swiper: any) => {
progress.value = 0;
}
// 处理自动播放时间
const onAutoplayTimeLeft = (s: any, time: any, progressValue: any) => {
progress.value = (1 - progressValue) * 10;
swiperRef.value = s;
};
/*****************应用场景-逻辑start******************** */
2025-09-18 11:19:24 +08:00
onMounted(() => {
initIntersectionObserver()
})
2025-09-18 11:19:24 +08:00
onBeforeUnmount(() => {
if (observer.value) {
observer.value.disconnect()
}
})
</script>
2025-09-18 11:19:24 +08:00
<style lang="less" scoped>
@import 'style/index.less';
</style>