<template>
|
<div class="home-container">
|
<div class="carousel-container" style="margin-top:60px;">
|
<!-- 上方主要轮播 -->
|
<el-carousel ref="mainCarousel" indicator-position="none" trigger="click" height="100vh" :pause-on-hover="false"
|
@change="handleMainChange">
|
<el-carousel-item v-for="(item, index) in items" :key="index" style="display: flex; justify-content: center;">
|
<div class="carousel-content-main" :style="{
|
backgroundImage: `url(${item.url})`,
|
backgroundSize: 'cover',
|
backgroundPosition: 'center',
|
width: '100%',
|
height: '100%'
|
}">
|
<!-- {{ item.content }} -->
|
</div>
|
</el-carousel-item>
|
</el-carousel>
|
|
<!-- 下方卡片模式轮播 -->
|
<el-carousel ref="cardCarousel" :interval="5000" arrow="always" indicator-position="none" trigger="click"
|
type="card" height="100px" class="overlay-carousel" @change="handleCardChange">
|
<el-carousel-item v-for="(item, index) in items" :key="index">
|
<div class="carousel-content">
|
<div class="title">{{ item.title }}</div>
|
<div class="content">{{ item.content }}</div>
|
</div>
|
</el-carousel-item>
|
</el-carousel>
|
</div>
|
|
<div class="our-products">
|
<div class="our-products-title">
|
<h1>我们的产品</h1>
|
</div>
|
<div class="our-products-carousel">
|
<el-carousel :interval="3000" arrow="always" height="400px" >
|
<el-carousel-item v-for="(group, groupIndex) in productGroups" :key="groupIndex">
|
<el-row>
|
<el-col :span="6" v-for="(product, productIndex) in group.products" :key="productIndex">
|
<div class="our-products-carousel-product">
|
<el-card>
|
<div class="card-content-div"><span class="card-content-div-title">{{ product.title }}</span></div>
|
<div class="card-content-div">
|
<span class="card-content-div-content">{{ product.desc }}</span>
|
</div>
|
<img :src="product.imgUrl" style="width: 100%; height: 100px; object-fit: cover;" />
|
</el-card>
|
</div>
|
</el-col>
|
</el-row>
|
</el-carousel-item>
|
</el-carousel>
|
</div>
|
</div>
|
|
<div class="third-other">
|
<el-row>
|
<el-col :span="8">
|
<div class="third-other-title">产品中心</div>
|
<ul class="footer-list footer-list-menus">
|
<li v-for="(item, index) in ProductCenters"><el-link :underline="false" :href="item.url" target="_blank"><span class="f12">{{item.name}}</span></el-link></li>
|
</ul>
|
</el-col>
|
<el-col :span="8">
|
<div class="third-other-title">合作过的客户</div>
|
<div>
|
<img v-for="(item, index) in cooperativeClients" :src="item.url" class="cooperation-img" />
|
</div>
|
</el-col>
|
<el-col :span="8">
|
<div class="third-other-title">公司信息</div>
|
<div class="contact-us">
|
<div class="j-a-c">
|
<div class="j-a-c">
|
<img :src="companyInfo.logo" alt="云游四方" class="logo-l" />
|
<span class="logo-l-text">{{ companyInfo.name }}</span>
|
</div>
|
<div class="f12 m-10"> {{ companyInfo.desc }}</div>
|
</div>
|
<!-- <div class="j-a-c">
|
<p><span class="f12 m-10">全国热线电话:</span>
|
<el-link v-for="(item, index) in companyInfo.phoneHotList" :underline="false" href="tel:400-102-8686"><span class="f12 m-10">{{ item }}</span></el-link>
|
</p>
|
</div>
|
<div class="j-a-c">
|
<p><span class="f12 m-10">全国售后电话:</span>
|
<el-link v-for="(item, index) in companyInfo.phoneSaleAfterList" :underline="false" href="tel:400-102-8686"><span class="f12 m-10">{{ item }}</span></el-link>
|
</p>
|
</div> -->
|
<div class="j-a-c">
|
<p><span class="f12 m-10">地址:{{ companyInfo.address }}</span></p>
|
</div>
|
<div class="footer-QR-code">
|
<div class="j-a-c-column" v-for="(item, index) in companyInfo.qrCodeList"><img :src="item.url" alt="云游四方" class="qr-code-img" /><span>{{ item.name }}</span></div>
|
</div>
|
</div>
|
</el-col>
|
</el-row>
|
</div>
|
<el-backtop :right="20" :bottom="50" style="width: 30px; height: 30px;" />
|
|
<!-- 右侧悬浮按钮 -->
|
|
<div class="float-buttons">
|
<el-popover placement="left" trigger="hover">
|
|
<div class="j-a-c">
|
<img :src="companyInfo.wechat" alt="微信二维码" class="popover-img" style="width: 100px; height: 100px;" />
|
</div>
|
<template #reference>
|
<div class="j-a-c">
|
<img src="http://192.168.1.201:9000/portal/wechat.png" alt="微信" class="xuanfu" />
|
</div>
|
|
</template>
|
</el-popover>
|
|
<el-popover placement="left" trigger="hover">
|
<p>18913206309</p>
|
<template #reference>
|
<img src="http://192.168.1.201:9000/portal/phone.png" alt="电话" class="xuanfu" />
|
</template>
|
</el-popover>
|
</div>
|
|
</div>
|
</template>
|
|
<script lang="ts" setup>
|
import { ref } from 'vue'
|
import type { ElCarousel } from "element-plus";
|
import { CarouselItem, CooperativeClient, ProductCenter, CompanyInfo, Products, ProductGroup } from '@/models/portalModels';
|
|
const mainCarousel = ref<InstanceType<typeof ElCarousel> | null>(null);
|
const cardCarousel = ref<InstanceType<typeof ElCarousel> | null>(null);
|
|
// 创建数据列表
|
const items = ref<CarouselItem[]>([
|
{url:'http://192.168.1.201:9000/portal/bg.png', title:'', content:''},
|
// {url:'http://192.168.1.201:9000/portal/bg.png', title:'统一认证', content:'统一身份认证平台'},
|
// {url:'http://192.168.1.201:9000/portal/bg.png', title:'数据管理', content:'数据管理中心平台'}
|
]);
|
|
const handleMainChange = (index: number) => {
|
if (cardCarousel.value) {
|
cardCarousel.value.setActiveItem(index); // 同步下方轮播
|
}
|
};
|
const handleCardChange = (index: number) => {
|
if (mainCarousel.value) {
|
mainCarousel.value.setActiveItem(index); // 同步上方轮播
|
}
|
};
|
|
const cooperativeClients = ref<CooperativeClient[]>([
|
{url:'http://192.168.1.201:9000/portal/customers/c29.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c34.png', name:'图片2', desc:'图片2'},
|
|
{url:'http://192.168.1.201:9000/portal/customers/c1.png', name:'图片1', desc:'图片1'},
|
{url:'http://192.168.1.201:9000/portal/customers/c22.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c23.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c24.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c25.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c26.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c27.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c28.png', name:'图片2', desc:'图片2'},
|
// {url:'http://192.168.1.201:9000/portal/customers/c29.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c30.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c31.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c32.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c33.png', name:'图片2', desc:'图片2'},
|
// {url:'http://192.168.1.201:9000/portal/customers/c34.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c35.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c36.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c37.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c38.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c39.png', name:'图片2', desc:'图片2'},
|
{url:'http://192.168.1.201:9000/portal/customers/c40.png', name:'图片2', desc:'图片2'},
|
])
|
|
// 新增产品组数据
|
const productGroups = ref<ProductGroup[]>([
|
{
|
products: [
|
{ imgUrl: 'http://192.168.1.201:9000/portal/product-our/S2B2B.png', title: 'S2B2B', desc: '通过数字化整合上下游资源,重构传统供应链“多级分销、信息割裂”的痛点,实现供应商增收......' },
|
{ imgUrl: 'http://192.168.1.201:9000/portal/product-our/实验室管理系统.png', title: '实验室管理系统', desc: '主要应用于汽车零部件质检行业。它能解决委托单流转、设备管理、数据管理、权限管理等方面的痛点,具备委托单管理.....' },
|
{ imgUrl: 'http://192.168.1.201:9000/portal/product-our/TQS系统.png', title: 'TQS系统', desc: '解决制造业、汽车业培训痛点。它涵盖多个模块,具备人员信息管理、培训管理、岗位技能培训管理等功能,能实现培训数字...' },
|
{ imgUrl: 'http://192.168.1.201:9000/portal/product-our/外部供应商管理系统.png', title: '外部供应商管理系统', desc: '破信息壁垒,实现数据共享,自动化处理订单,增强沟通与生产跟踪。系统具备多模块功能,涵盖用户、订单、工单等管理,支持移动端扫码记录工时...' }
|
]
|
},
|
{ products: [
|
{ imgUrl: 'http://192.168.1.201:9000/portal/product-our/JIT.png', title: 'JIT', desc: '面向工业领域的生产管理系统,旨在减少库存和浪费、提升生产效率。它针对数据出错、库存积压等行业痛点,提供数字化管理、自动化检测等解决方案。系统具备物料管理、工艺路线管理等多种功能,实现生产全过程管控与高效运营' },
|
{ imgUrl: 'http://192.168.1.201:9000/portal/product-our/CPTM.png', title: 'CPTM', desc: '优化人力开发流程,助力企业发展。它解决了企业培训管理缺乏系统化、报考流程效率低等问题,具备集成平台管理、自动化流程、技能评估等功能,涵盖培训管理、人员信息管理等模块,推动员工和团队能力提升。' },
|
|
] }
|
]);
|
|
const ProductCenters = ref<ProductCenter[]>([
|
{ url:'http://192.168.1.201:9000/portal/product-center/LIMS系统介绍方案.pdf', name:'LIMS实验室管理系统', desc:'LIMS实验室管理系统'},
|
{ url:'http://192.168.1.201:9000/portal/product-center/外部供应商管理系统介绍.pdf', name:'供应商管理系统', desc:'供应商管理系统'},
|
{ url:'http://192.168.1.201:9000/portal/product-center/TQS系统介绍与解决方案.pdf', name:'TQS企业培训系统', desc:'TQS企业培训系统'},
|
{ url:'http://192.168.1.201:9000/portal/product-center/花满芫小程序产品介绍.pdf', name:'S2B2B小程序平台', desc:'S2B2B小程序平台'},
|
{ url:'http://192.168.1.201:9000/portal/product-center/JIT系统介绍.pdf', name:'JIT系统', desc:'JIT系统'},
|
{ url:'http://192.168.1.201:9000/portal/product-center/CPTM软件产品介绍.pdf', name:'CPTM企业能力管理系统', desc:'CPTM企业能力管理系统'},
|
])
|
|
|
const companyInfo = ref<CompanyInfo>({
|
logo: "http://192.168.1.201:9000/portal/logo.png",
|
name: "云游四方",
|
desc: "专注于智能化解决方案",
|
address: "江苏省苏州市虎丘区华云路1号桑田岛科创园",
|
wechat:"http://192.168.1.201:9000/portal/company-info/联系微信.png",
|
phoneHotList: ["400-123-4567", "010-88889999"],
|
phoneSaleAfterList: ["400-987-6543", "010-66667777"],
|
qrCodeList: [
|
{ url:"http://192.168.1.201:9000/portal/company-info/服务号.jpg", name:"服务号"},
|
{ url:"http://192.168.1.201:9000/portal/company-info/联系微信.png",name: "联系微信"},
|
]
|
});
|
|
|
</script>
|
|
<style scoped>
|
.home-container {
|
position: relative;
|
width: 100%;
|
min-height: 100vh;
|
margin: 0;
|
padding: 0;
|
}
|
|
|
|
.el-menu--horizontal {
|
--el-menu-horizontal-height: 40px;
|
}
|
|
.logo-container {
|
display: flex;
|
align-items: center;
|
}
|
|
.logo {
|
height: 40px;
|
margin-right: 10px;
|
}
|
|
.logo-text {
|
font-size: 18px;
|
font-weight: bold;
|
color: #333;
|
}
|
|
|
|
.main-content {
|
width: 100%;
|
margin-top: 60px;
|
/* 为固定的header留出空间 */
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
padding: 0px;
|
/* height: 600px; */
|
width: 100%;
|
}
|
|
.banner {
|
position: relative;
|
width: 100%;
|
min-height: calc(100vh - 60px);
|
/* 减去header高度 */
|
background: linear-gradient(to bottom, #1a237e, #3949ab);
|
color: white;
|
/* padding: 40px 0; */
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
box-sizing: border-box;
|
}
|
|
.logos-container {
|
display: flex;
|
justify-content: center;
|
gap: 40px;
|
margin: 30px 0;
|
}
|
|
.cert-logo,
|
.company-logo {
|
height: 80px;
|
}
|
|
.main-title {
|
font-size: 36px;
|
text-align: center;
|
margin: 40px 0;
|
}
|
|
.organizers {
|
display: flex;
|
justify-content: center;
|
gap: 20px;
|
margin: 20px 0;
|
}
|
|
.org-item {
|
display: flex;
|
align-items: center;
|
}
|
|
.org-label {
|
color: #ccc;
|
margin-right: 5px;
|
}
|
|
.org-name {
|
color: white;
|
}
|
|
.location {
|
margin: 40px 0;
|
}
|
|
.location h2 {
|
font-size: 32px;
|
text-align: center;
|
}
|
|
.info-cards {
|
display: flex;
|
justify-content: center;
|
gap: 20px;
|
width: 80%;
|
margin-top: 40px;
|
margin-bottom: 40px;
|
/* 添加底部间距 */
|
flex-wrap: wrap;
|
/* 在小屏幕上允许换行 */
|
}
|
|
.info-card {
|
background-color: rgba(255, 255, 255, 0.1);
|
padding: 20px;
|
border-radius: 5px;
|
flex: 1;
|
min-width: 250px;
|
/* 确保在小屏幕上有最小宽度 */
|
}
|
|
.card-title {
|
font-size: 18px;
|
margin-bottom: 10px;
|
color: white;
|
}
|
|
.card-desc {
|
color: #ddd;
|
font-size: 14px;
|
}
|
|
.float-buttons {
|
position: fixed;
|
right: 20px;
|
bottom: 100px;
|
display: flex;
|
flex-direction: column;
|
gap: 10px;
|
}
|
|
.float-btn {
|
width: 60px;
|
height: 60px;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
}
|
|
.btn-content {
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
font-size: 12px;
|
}
|
|
.product-btn {
|
background-color: #fff;
|
color: #333;
|
}
|
|
.service-btn {
|
background-color: #fff;
|
color: #333;
|
}
|
|
.top-btn {
|
background-color: #fff;
|
color: #333;
|
}
|
|
/* 添加响应式设计 */
|
@media (max-width: 768px) {
|
.organizers {
|
flex-direction: column;
|
align-items: center;
|
}
|
|
.info-cards {
|
width: 90%;
|
}
|
|
.main-title {
|
font-size: 28px;
|
padding: 0 15px;
|
}
|
}
|
</style>
|
|
|
<style scoped>
|
.demonstration {
|
color: var(--el-text-color-secondary);
|
}
|
|
.el-carousel__item h3 {
|
color: #475669;
|
opacity: 0.75;
|
line-height: 150px;
|
margin: 0;
|
text-align: center;
|
}
|
|
.el-carousel__item:nth-child(2n) {
|
/* background-color: #FFFFFF; */
|
}
|
|
.el-carousel__item:nth-child(2n + 1) {
|
/* background-color: #FFFFFF; */
|
}
|
</style>
|
|
<style scoped>
|
.carousel-container {
|
position: relative;
|
margin-top: 30px;
|
min-height: calc(100vh - 60px);
|
}
|
.carousel-content-main{
|
height: 100%;
|
}
|
|
.overlay-carousel {
|
position: absolute;
|
top: calc(100vh - 200px);
|
/* 调整此值控制重叠程度 */
|
left: 50%;
|
transform: translateX(-50%);
|
width: 80%;
|
/* 适当调整宽度 */
|
}
|
|
.our-products {
|
margin-top: 50px;
|
width: 100%;
|
display: flex;
|
flex-direction: column;
|
/* 设置子元素垂直排列 */
|
align-items: center;
|
/* 可选:将子元素水平居中 */
|
padding: 0 50px;
|
|
}
|
|
.our-products-title {
|
width: 100%;
|
height: 50px;
|
text-align: center;
|
}
|
|
.our-products-carousel {
|
margin-top: 30px;
|
width: 80%;
|
/* height: 300px; */
|
}
|
|
.our-products-carousel-product {
|
width: 100%;
|
display: flex;
|
flex-direction: column;
|
/* 设置子元素垂直排列 */
|
align-items: center;
|
/* 可选:将子元素水平居中 */
|
padding: 0 5px;
|
}
|
|
.card-content-div {
|
text-align: center;
|
margin: 10px;
|
}
|
|
.card-content-div-title {
|
font-weight: 500;
|
}
|
|
.card-content-div-content {
|
color: gray;
|
font-size: 14px;
|
}
|
|
.third-other {
|
width: 100%;
|
text-align: center;
|
margin-top: 30px;
|
background-color: #F2F5FA;
|
padding: 20px;
|
}
|
|
|
.third-other-title {
|
margin: 0 20px;
|
}
|
|
|
.footer-list {
|
display: flex;
|
flex-wrap: wrap;
|
/* Allow wrapping to new lines */
|
}
|
|
.footer-list li {
|
width: 48%;
|
/* Adjust this value to control the width of each item */
|
margin-bottom: 5px;
|
/* Optional: Adds space between rows */
|
text-align: left;
|
}
|
|
.f12 {
|
font-size: 12px;
|
color: #2B2B2B;
|
}
|
|
ul,
|
ol,
|
li {
|
list-style: none;
|
}
|
|
ul {
|
margin: 0;
|
}
|
|
ol,
|
ul {
|
margin-top: 0;
|
margin-bottom: 10px;
|
}
|
|
.cooperation-img {
|
width: 50px;
|
height: 50px;
|
object-fit: cover;
|
margin: 5px;
|
}
|
|
.contact-us {
|
margin: 10px;
|
}
|
|
.j-a-c {
|
display: flex;
|
/* justify-content: center; */
|
align-items: center;
|
}
|
|
.j-a-c-column{
|
display: flex;
|
align-items: center;
|
flex-direction: column;
|
}
|
|
.logo-l {
|
height: 20px;
|
}
|
|
.logo-l-text {
|
font-size: 12px;
|
font-weight: bold;
|
color: #333;
|
}
|
|
.m-10 {
|
margin-left: 10px;
|
}
|
|
.footer-QR-code {
|
display: flex;
|
justify-content: flex-start;
|
margin-top: 10px;
|
}
|
|
.qr-code-img {
|
width: 60px;
|
height: 60px;
|
}
|
|
.xuanfu {
|
width: 30px;
|
height: 30px;
|
}
|
|
/*
|
::v-deep .el-carousel__mask {
|
|
height: 100%;
|
left: 0;
|
opacity: .24;
|
position: absolute;
|
top: 0;
|
transition: var(--el-transition-duration-fast);
|
width: 100%;
|
} */
|
|
.carousel-content {
|
/* width: 50%;
|
background-color: #FFFFFF; */
|
text-align: center;
|
}
|
</style>
|