创巨圆官网前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
cjy_web/src/views/pages/index.vue

1411 lines
36 KiB

<template>
<div class="page-container">
<!-- 页面 头部 -->
<VHeader class="page-header" :theme="theme"></VHeader>
<div class="banner-container">
<div class="swiper">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(banner, index) in formattedBanners" :key="index">
<div class="banner" :style="{ backgroundImage: `url(${banner.logo})` }">
<div class=" v-container">
<div class="text-box">
<h1 class="banner-title" v-html="banner.title ? banner.title : ''"></h1>
<p class="banner-description">{{ banner.subtitle || '' }}</p>
<router-link :to="banner.url ? banner.url : ''" class="learn-more">了解更多</router-link>
</div>
</div>
</div>
</div>
</div>
<div class="swiper-pagination"></div>
</div>
</div>
<div class="content-box-xl company-profile">
<div class="content-box-l">
<div class="content-title company-profile-title">
<span>公司介绍</span>
</div>
<div class="ciontent-text ql-editor company-profile-text"
v-html="companyProfile.content ? companyProfile.content : ''">
</div>
</div>
</div>
<div class="content-box-xl solve-plan">
<div class="content-box-l">
<div class="content-title solve-plan-title">
<span>全域旅游解决方案</span>
<div class="saw-more-box">
<div class="saw-more" @click="gotoDetail(solvePlan[0].id,1)">全部产品</div>
</div>
</div>
<div class="ciontent-text solve-plan-text">
<el-tabs class="pc-el-tabs" v-model="activeName">
<el-tab-pane v-for="(product, index) in solvePlan" :key="index" :label="product.title"
:name="'第' + index + '个'">
<div class="solve-plan-tabs-content">
<div class="solve-plan-tabs-content-left">
<div class="ql-editor solve-plan-tabs-content-left-html"
v-html="product.introduction ? product.introduction : ''">
</div>
<div class="saw-detail" @click="gotoDetail(product.id,1)">查看详情&rarr;</div>
</div>
<div class="solve-plan-tabs-content-right">
<img :src="product.logo ? product.logo : ''" alt="">
</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
</div>
</div>
<div class="content-box-xl solve-plan scence-plan">
<div class="content-box-l">
<div class="content-title scence-plan-title">
<span>智慧景区解决方案</span>
<div class="saw-more-box">
<div class="saw-more" @click="gotoDetail(scensePlan[0].id,1)">全部产品</div>
</div>
</div>
<div class="ciontent-text solve-plan-text scence-plan-text">
<el-tabs class="pc-el-tabs-dark" v-model="activeName1">
<el-tab-pane v-for="(product, index) in scensePlan" :key="index" :label="product.title"
:name="'第' + index + '个'">
<div class="solve-plan-tabs-content">
<div class="solve-plan-tabs-content-right">
<img :src="product.logo ? product.logo : ''" alt="">
</div>
<div class="solve-plan-tabs-content-left">
<div class="ql-editor solve-plan-tabs-content-left-html"
v-html="product.introduction ? product.introduction : ''">
</div>
<div class="saw-detail" @click="gotoDetail(product.id,1)">查看详情&rarr;</div>
</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
</div>
</div>
<div class="content-box-xl solve-plan scence-plan classic-case">
<div class="content-box-l">
<div class="content-title scence-plan-title classic-case-title">
<span>经典案例</span>
<div class="saw-more-box">
<div class="saw-more" @click="gotoClassicCaseList">全部案例</div>
</div>
</div>
<div class="ciontent-text classic-case-text">
<div class="classic-case-text-left">
<div class="classic-case-left-item" :class="ativeindex == index?'active':''"
v-for="(item, index) in formattedClassicAse" :key="index"
@click="ativeindex = index">
<span>{{ item.title }}</span><i class="el-icon-arrow-right"></i>
</div>
</div>
<div class="classic-case-text-right">
<div class="classic-case-text-right-top" v-if="formattedClassicAse[ativeindex]">
<div class="ql-editor classic-case-text-right-content"
v-html="formattedClassicAse[ativeindex].introduction"></div>
<div class="classic-case-text-right-top-images-box"
v-if="formattedClassicAse[ativeindex].images.length > 0">
<el-image class="classic-case-text-right-middle-images"
v-for="(image, index) in formattedClassicAse[ativeindex].images" :src="image"
:key="index"></el-image>
</div>
</div>
<div class="classic-case-text-right-bottom">
<div class="saw-detail" @click="gotoDetail(formattedClassicAse[ativeindex].id,2)">
查看详情<i class="el-icon-arrow-right"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="content-box-xl partner-box">
<div class="content-box-l partner-box-l">
<div class="content-title partner-title ">
<span class="partner-title-zhu">期待更多伙伴 携手共创未来</span>
<span class="partner-title-fu">欢迎咨询合作</span>
</div>
<div class="partner-text">
<div class="partne-text-left">
<div class="partne-text-left-title">
<span>创巨圆</span>一直秉承
</div>
<div class="partne-text-left-content">
<p>客户为中心,市场为导向</p>
<p>科技为先锋,人才为基础</p>
<p>管理求效益,信誉求发展 </p>
</div>
<div class="partne-text-left-bottom">
的经营之道,持续改进 永续发展!
</div>
</div>
<template v-if="partners && partners.images && partners.images.length > 0">
<div v-for="(item, index) in partners.images" :key="index" class="partner-img-box"
:style="{ right: `${item.x}px`, top: `${item.y}px` }">
<el-image class="partner-img" :src="item.url"/>
</div>
</template>
</div>
</div>
</div>
<div class="content-box-xl solve-plan scence-plan classic-case news">
<div class="content-box-l">
<div class="content-title scence-plan-title classic-case-title news-title">
<span>动态与资讯</span>
<div class="saw-more-box">
<div class="saw-more" @click="gotoNewsList">查看更多</div>
</div>
</div>
<div class="ciontent-text news-text">
<el-tabs class="cjy-tabs short-tabs" v-model="activeName2" @tab-click="handleClick">
<el-tab-pane label="公司动态" name="first">
<el-row class="news-row" :gutter="40">
<el-col v-for="(item, index) in newsList" class="news-col row" :span="12"
@click.native="gotoNews(item.id)">
<div class="news-img-box">
<el-image class="news-img" :src="item.logo"/>
</div>
<div class="news-col-text col overflow-hidden">
<div class="news-text-title">
{{ item.title || '--' }}
</div>
<div class="news-text-title-fu" v-html="item.introduction ? item.introduction : ''"></div>
<div class="news-text-feet">
<div class="news-time">
{{ parseTime(item.createTime) }}
</div>
<div class="more-jian"></div>
</div>
</div>
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane label="行业资讯" name="second">
<el-row class="news-row" :gutter="40">
<el-col v-for="(item, index) in newsList" class="news-col" :span="12" @click.native="gotoNews(item.id)">
<div class="news-img-box">
<el-image class="news-img" :src="item.logo"/>
</div>
<div class="news-col-text">
<div class="news-text-title">
{{ item.title || '--' }}
</div>
<div class="news-text-title-fu" v-html="item.introduction ? item.introduction : ''"></div>
<div class="news-text-feet">
<div class="news-time">
{{ parseTime(item.createTime) }}
</div>
<div class="more-jian"></div>
</div>
</div>
</el-col>
</el-row>
</el-tab-pane>
</el-tabs>
</div>
</div>
</div>
<VBottom></VBottom>
</div>
</template>
<script>
import Swiper from 'swiper/swiper-bundle.js'; // 引入 Swiper
import 'swiper/swiper-bundle.css';
import 'animate.css';
import * as Api from "@/api/cjy/columninfo"
import {parse} from '@babel/parser';
export default {
name: "index",
data() {
return {
theme: 'header-default',
swiper: null,
right: 20,
top: 20,
scrollPosition: 0, // 添加滚动位置
activeName: '第0个',
activeName1: '第0个',
activeName2: 'first',
banners: [],
companyProfile: '',//公司介绍
solvePlan: [],
scensePlan: [],
classicCase: [],
ativeindex: 0,
partners: null,
newsList: []
};
},
watch: {
ativeindex: {
handler(oval, nval) {
if (oval != nval) {
document.querySelector('.classic-case-text-right').classList.add('animate__animated', 'animate__fadeInRight')
setTimeout(() => {
document.querySelector('.classic-case-text-right').classList.remove('animate__animated', 'animate__fadeInRight')
}, 1000)
}
}
}
},
computed: {
formattedBanners() {
return this.banners.map(banner => {
// 在第4到第9个字符之间插入换行符
let description = banner.title.replace(/\s+/g, '<br>');
// if (description.length > 9) {
// description = description.slice(0, 4) + '<br>' + description.slice(4, 9) + '<br>' + description.slice(9, 16) + '<br>' + description.slice(16);
// }
return {
...banner,
title: description
};
});
},
formattedClassicAse() {
return this.classicCase.map(caseItem => {
let images = [];
if (caseItem.image) {
if (caseItem.image.includes(',')) { // 修正了'inCludes'为'includes'
images = caseItem.image.split(',');
} else {
images = [caseItem.image];
}
return {
...caseItem,
images: images
};
} else {
return {
...caseItem,
images: []
};
}
});
},
},
mounted() {
// 添加滚动事件监听
window.addEventListener('scroll', this.handleScroll);
this.getBanner()
this.getCompany()
this.getCompanyAllArea()
this.getCompanySolvePlan()
this.getClassicCase()
this.getPartners()
this.getNews()
},
beforeDestroy() {
// 移除滚动事件监听
window.removeEventListener('scroll', this.handleScroll);
},
methods: {
//获取轮播图
async getBanner() {
const params = {
type: 1,
}
let res = await Api.getColumnInfoList(params)
this.banners = res.data.list
this.$nextTick(() => {
this.swiper = new Swiper('.swiper', {
speed: 1000,
spaceBetween: 0, // 设置为0以消除间距
loop: true,
pagination: {
el: '.swiper-pagination',
clickable: true,
},
autoplay: {
delay: 5500,
disableOnInteraction: false,
},
on: {
init: () => {
this.reAddAnimateClasses();
const titleElement = document.querySelector('.banner-title');
const descriptionElement = document.querySelector('.banner-description');
const learnMoreElement = document.querySelector('.learn-more');
titleElement.classList.add('animate__animated', 'animate__bounceInLeft');
descriptionElement.classList.add('animate__animated', 'animate__bounceInRight');
learnMoreElement.classList.add('animate__animated', 'animate__fadeInDown');
},
slideChangeTransitionStart: () => {
this.removeAnimateClasses();
},
slideChangeTransitionEnd: () => {
this.reAddAnimateClasses();
}
}
});
})
},
//公司介绍
async getCompany() {
const params = {
type: 2,
}
let res = await Api.getColumnInfoList(params)
this.companyProfile = res.data.list[0]
},
//全域旅游解决方案
async getCompanyAllArea() {
const params = {
type: 3,
infoType: 1
}
let res = await Api.getColumnInfoList(params)
this.solvePlan = res.data.list.slice(0, 6);
},
//智慧景区解决方案
async getCompanySolvePlan() {
const params = {
type: 3,
infoType: 2
}
let res = await Api.getColumnInfoList(params)
this.scensePlan = res.data.list.slice(0, 6);
},
//经典案例
async getClassicCase() {
const params = {
type: 5,
}
let res = await Api.getColumnInfoList(params)
this.classicCase = res.data.list.slice(0, 7);
},
//合作伙伴
async getPartners() {
const params = {
type: 6,
}
let res = await Api.getColumnInfoList(params)
this.partners = res.data.list[0];
if (this.partners.image) {
this.partners.images = this.extractImageCoordinates(this.partners.image);
} else {
this.partners.images = []
}
},
//过滤图片坐标信息
extractImageCoordinates(imageString) {
// 将图片字符串按逗号分割成数组
const imageUrls = imageString.includes(',') ? imageString.split(',') : [imageString];
// 使用map函数处理每个URL
const imagesWithCoords = imageUrls.map(url => {
// 创建URL对象以便解析查询参数
const urlObj = new URL(url);
// 使用URLSearchParams获取查询参数
const params = new URLSearchParams(urlObj.search);
// 提取x和y参数,并转换为数字
const x = parseInt(params.get('x'), 10);
const y = parseInt(params.get('y'), 10);
// 返回包含URL和坐标的新对象
return {
url: urlObj.href, // 只获取路径部分,去除查询参数
x,
y
};
});
return imagesWithCoords;
},
async getNews(val) {
const params = {
type: 7,
infoType: val ? val : 1
}
let res = await Api.getColumnInfoList(params)
this.newsList = res.data.list.slice(0, 6);
},
handleClick(tab, event) {
this.getNews(Number(tab.index) + 1)
},
handleScroll() {
this.scrollPosition = window.scrollY; // 获取当前滚动位置
if (this.scrollPosition > 100) {
this.theme = 'header-light'
}
if (this.scrollPosition <= 100) {
this.theme = 'header-default'
}
if (this.scrollPosition > 110) {
document.querySelector('.company-profile-title').classList.add('animate__animated', 'animate__fadeInUp');
document.querySelector('.company-profile-text').classList.add('animate__animated', 'animate__fadeInUp');
}
if (this.scrollPosition > 950) {
document.querySelector('.solve-plan-title').classList.add('animate__animated', 'animate__fadeInUp');
document.querySelector('.solve-plan-text').classList.add('animate__animated', 'animate__fadeInUp');
}
if (this.scrollPosition > 1875) {
document.querySelector('.scence-plan-title').classList.add('animate__animated', 'animate__fadeInUp')
document.querySelector('.scence-plan-text').classList.add('animate__animated', 'animate__fadeInUp')
}
if (this.scrollPosition > 2640) {
document.querySelector('.classic-case-title').classList.add('animate__animated', 'animate__fadeInUp')
document.querySelector('.classic-case-text').classList.add('animate__animated', 'animate__fadeInUp')
}
if (this.scrollPosition > 3650) {
document.querySelector('.partner-title').classList.add('animate__animated', 'animate__fadeInUp')
document.querySelector('.partner-text').classList.add('animate__animated', 'animate__fadeInUp')
}
if (this.scrollPosition > 4500) {
document.querySelector('.news-title').classList.add('animate__animated', 'animate__fadeInUp')
document.querySelector('.news-text').classList.add('animate__animated', 'animate__fadeInUp')
}
},
reAddAnimateClasses() {
// 获取当前激活的slide
if (this.swiper) {
const activeSlide = this.swiper.slides[this.swiper.activeIndex];
// 在当前激活的slide中查找对应的子元素
const titleElement = activeSlide.querySelector('.banner-title');
const descriptionElement = activeSlide.querySelector('.banner-description');
const learnMoreElement = activeSlide.querySelector('.learn-more');
// 添加新的动画类
titleElement.classList.add('animate__animated', 'animate__bounceInLeft');
descriptionElement.classList.add('animate__animated', 'animate__bounceInRight');
learnMoreElement.classList.add('animate__animated', 'animate__fadeInDown');
}
},
removeAnimateClasses() {
if (this.swiper) {
const activeSlide = this.swiper.slides[this.swiper.activeIndex];
// 在当前激活的slide中查找对应的子元素
const titleElement = activeSlide.querySelector('.banner-title');
const descriptionElement = activeSlide.querySelector('.banner-description');
const learnMoreElement = activeSlide.querySelector('.learn-more');
// 移除之前的动画类(如果有的话)
titleElement.classList.remove('animate__animated', 'animate__bounceInLeft');
descriptionElement.classList.remove('animate__animated', 'animate__bounceInRight');
learnMoreElement.classList.remove('animate__animated', 'animate__fadeInDown');
}
},
gotoNewsList() {
this.$router.push("/news-list")
},
//资讯详情
gotoNews(val) {
this.$router.push("/news-detail?id=" + val)
},
gotoClassicCaseList() {
this.$router.push("/case-list")
},
//方案案例详情
gotoDetail(val, type) {
this.$router.push("/case-detail?id=" + val + "&type=" + type)
}
}
}
</script>
<style lang="scss">
.page-header {
position: fixed;
top: 0;
z-index: 999;
width: 100%;
background-color: transparent !important;
.nav-item {
color: #fff !important;
}
.nav-item::before {
background-color: #fff !important;
}
.info-box {
color: #fff !important;
}
}
</style>
<style scoped lang="scss">
.page-container {
background-color: #fafafa;
}
.swiper {
width: 100%;
height: 90vh;
/* 设置为视口高度 */
}
.swiper-wrapper {
display: flex;
/* 确保子元素横向排列 */
}
.swiper-slide {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
/* 使每个 slide 高度填满 */
}
.banner {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
height: 100%;
/* 使 banner 高度填满 */
color: white;
text-align: center;
background-size: cover;
/* 背景图覆盖 */
background-position: center;
/* 背景图居中 */
.text-box {
width: 1000px;
height: 500px;
padding: 10px;
}
}
.banner-title {
font-size: 68px;
line-height: 90px;
/* 调整标题字体大小 */
font-weight: bold;
opacity: 0;
text-align: left;
/* 加粗标题 */
}
.banner-description {
opacity: 0;
text-align: left;
font-size: 22px;
/* 调整描述字体大小 */
margin: 30px 0 20px 0;
/* 添加上下间距 */
}
::v-deep .swiper-pagination {
.swiper-pagination-bullet {
background-color: #fff;
width: 28px;
height: 3px;
border-radius: 0;
opacity: 0.3;
}
.swiper-pagination-bullet-active {
background-color: #fff;
opacity: 1;
}
}
.learn-more {
opacity: 0;
margin-top: 20px;
padding: 10px 20px;
border: solid 1px rgba(255, 255, 255, 0.8);
color: #fff;
text-decoration: none;
border-radius: 5px;
transition: all 0.3s ease-in-out;
float: left;
font-size: 16px;
&:hover {
background-color: rgba(255, 255, 255, 0.8);
color: #333;
}
}
.animate__animated {
opacity: 1;
}
.content-box-xl {
width: 100%;
height: fit-content;
background-color: #fafafa;
.content-box-l {
max-width: 1220px;
margin: 0 auto;
overflow: hidden;
.content-title {
position: relative;
margin-top: 95px;
margin-bottom: 45px;
opacity: 0;
span {
display: block;
font-family: PingFang SC;
font-weight: 800;
font-size: 50px;
color: #1B1B1B;
position: relative;
z-index: 50;
width: fit-content;
margin: 0 auto;
}
&::after {
letter-spacing: 10px;
content: '';
position: absolute;
width: 100% !important;
text-align: center;
height: 50%;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
z-index: 45;
font-family: PingFang SC;
font-weight: bold;
font-size: 30px;
color: rgba(0, 0, 0, .05);
}
.saw-more-box {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
opacity: 1;
z-index: 999;
}
.saw-more {
width: 100px;
font-size: 14px;
height: 40px;
line-height: 40px;
color: #fff;
position: relative;
cursor: pointer;
opacity: 0.8;
transition: all 0.3s ease-in-out;
&:hover {
opacity: 1;
&::after {
right: 0;
}
}
&:before {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 2px;
background-color: #fff;
transform-origin: bottom right;
transform: scaleX(0);
transition: transform 0.5s ease;
}
&:hover::before {
transform-origin: bottom left;
transform: scaleX(1);
}
&::after {
content: '';
width: 24px;
height: 10px;
position: absolute;
right: 10%;
top: 50%;
transform: translateY(-50%);
background-image: url('~@/assets/images/more-right.png');
background-repeat: no-repeat;
background-position: center;
background-size: contain;
transition: all 0.3s ease-in-out;
}
}
}
.ciontent-text {
opacity: 0;
}
}
}
.company-profile {
height: 800px;
scrollbar-width: none;
overflow: hidden;
.company-profile-title {
text-align: center;
}
.company-profile-title::after {
content: 'COMPANY PROFILE' !important;
}
.company-profile-text {
height: 700px;
scrollbar-width: none;
overflow: hidden;
overflow-y: hidden;
}
}
.solve-plan {
margin-top: 120px;
min-height: 888px;
background-image: url('~@/assets/images/solve-plan-bg.png');
background-repeat: no-repeat;
background-position: center;
background-size: cover;
.solve-plan-title {
opacity: 0;
span {
color: #fff !important;
}
&::after {
content: 'GLOBAL TOURISM SOLUTION' !important;
color: rgba(255, 255, 255, .05) !important;
}
}
.solve-plan-tabs-content {
margin-top: 90px;
display: flex;
align-items: center;
justify-content: space-between;
.solve-plan-tabs-content-left {
width: 450px;
height: 445px;
.solve-plan-tabs-content-left-html {
width: 100%;
height: 370px;
line-height: 24px;
padding-top: 20px;
overflow: scroll;
overflow-x: hidden;
text-overflow: ellipsis;
scrollbar-width: none;
scrollbar-color: #418CFF rgba(65, 140, 255, 0.2);
margin-bottom: 30px;
}
.saw-detail {
background: linear-gradient(180deg, rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0) 100%);
border-radius: 8px;
border: none;
width: 120px;
height: 40px;
line-height: 40px;
color: #fefefe;
text-align: center;
transition: all ease 0.3s;
cursor: pointer;
font-size: 14px;
&:hover {
background: linear-gradient(180deg, rgba(255, 255, 255, 0.8) 0%, rgba(255, 255, 255, 0.6) 100%);
color: #333;
}
}
}
.solve-plan-tabs-content-right {
width: 745px;
height: 445px;
img {
width: 100%;
height: 100%;
}
}
}
}
.scence-plan {
height: 895px;
background-image: none;
margin-top: 0;
.scence-plan-title {
opacity: 0;
&::after {
content: 'SMART TOURISM SOLUTIONS' !important;
color: #E6E6E6 !important;
}
.saw-more {
color: #0B59B3 !important;
&::before {
background-color: #0B59B3 !important;
}
&::after {
background-image: url('~@/assets/images/more-right-blue.png') !important;
}
}
}
.scence-plan-text {
.saw-detail {
background: #0B59B3 !important;
border: solid 1px transparent !important;
&:hover {
background-color: transparent !important;
border: solid 1px #0B59B3 !important;
color: #0B59B3 !important;
}
}
}
}
.classic-case {
background-image: url('~@/assets/images/classic-case-bg.png');
.classic-case-title {
&::after {
content: 'CLASSIC CASES' !important;
}
}
.classic-case-text {
display: flex;
justify-content: space-between;
margin-top: 60px;
.classic-case-text-left {
width: 315px;
height: fit-content;
border-radius: 12px;
border: none;
background-color: #fff;
max-height: 560px;
scrollbar-width: none;
overflow: scroll;
display: flex;
flex-direction: column;
.classic-case-left-item {
height: 79px;
line-height: 79px;
text-align: center;
font-family: PingFang SC;
font-weight: 500;
font-size: 18px;
color: #2A333D;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 20px 0 60px;
transition: all ease 0.3s;
cursor: pointer;
position: relative;
&::before {
content: '';
width: 24px;
height: 24px;
position: absolute;
left: 20px;
top: 50%;
transform: translateY(-50%);
background-image: url('~@/assets/images/icon_project-events.svg');
background-repeat: no-repeat;
background-position: center;
background-size: contain;
}
&:hover {
box-shadow: inset 0 0 8px 2px #efefef;
span {
color: #0B59B3
}
}
span {
display: inline-block;
max-width: 80%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
&:not(:last-child) {
border-bottom: solid 1px #2a333d26;;
}
&.active {
background-color: #0B59B3;
span {
color: #fff
}
.el-icon-arrow-right:before {
color: #fff
}
&::before {
content: '';
width: 24px;
height: 24px;
position: absolute;
left: 20px;
top: 50%;
transform: translateY(-50%);
background-image: url('~@/assets/images/icon_project-events_active.svg');
background-repeat: no-repeat;
background-position: center;
background-size: contain;
}
}
&.active:hover {
box-shadow: none
}
}
}
.classic-case-text-right {
position: relative;
width: 895px;
padding: 40px 35px;
background-color: #fff;
border-radius: 12px;
.classic-case-text-right-top {
height: 350px;
transition: all ease 0.3s;
.classic-case-text-right-content {
max-height: 180px;
overflow-y: scroll;
scrollbar-width: none;
margin-bottom: 25px;
line-height: 24px;
}
.classic-case-text-right-top-images-box {
width: 100%;
height: 200px;
overflow-x: scroll;
scrollbar-width: none;
display: flex;
.classic-case-text-right-middle-images {
width: 360px;
height: 200px;
.el-image__inner {
height: auto !important;
}
&:not(:first-child) {
margin-left: 10px;
}
}
}
}
.classic-case-text-right-bottom {
position: absolute;
bottom: 20px;
left: 50%;
transform: translate(-50%, 0);
width: 92%;
border-top: 1px solid rgba(0, 0, 0, .05);
text-align: right;
.saw-detail {
display: inline-block;
font-size: 14px;
cursor: pointer;
width: 70px;
height: 50px;
line-height: 50px;
color: #2A333D;
text-align: center;
transition: all ease 0.3s;
&:hover {
color: #0B59B3;
}
}
}
}
}
}
.partner-box {
height: 850px;
background-image: url('~@/assets/images/partner-bg.png');
.partner-box-l {
// overflow: unset!important;
}
.partner-title-fu {
font-weight: 400 !important;
font-size: 20px !important;
color: #2A333D !important;
}
.partner-text {
position: relative;
.partne-text-left {
width: 40%;
text-align: left;
margin-top: 150px;
margin-left: 100px;
.partne-text-left-title {
font-weight: 500;
font-size: 24px;
color: #000;
line-height: 36px;
span {
color: #F13537;
}
}
.partne-text-left-content {
font-weight: 800;
font-size: 28px;
color: #1B1B1B;
line-height: 46px;
margin: 48px 0;
}
.partne-text-left-bottom {
font-weight: 400;
font-size: 24px;
color: #1B1B1B;
line-height: 36px;
}
}
.partner-img-box {
width: 140px;
height: 160px;
line-height: 160px;
background-image: url('~@/assets/images/parnter-img-bg.png');
background-position: center;
background-repeat: no-repeat;
background-size: contain;
position: absolute;
transition: all ease 0.3s;
text-align: center;
opacity: 0.7;
&:hover {
scale: 1.03;
opacity: 1;
}
.partner-img {
width: 70%;
margin: 0 auto;
}
}
}
}
.news {
background-image: none;
.news-title {
&::after {
content: 'NEWS AND UPDATES' !important;
}
}
.news-text {
.news-row {
.news-col {
margin-bottom: 28px;
display: flex;
cursor: pointer;
&:hover {
.news-img-box {
box-shadow: 0 0 20px 5px rgba(0, 0, 0, .1);
}
.news-col-text {
box-shadow: 0 0 20px 2px rgba(0, 0, 0, .1);
}
.news-text-title {
color: #0B59B3 !important;
}
.news-time {
color: #0B59B3 !important;
}
.news-text-title-fu {
color: #0B59B3 !important;
}
.more-jian {
background-image: url('~@/assets/images/shang-you-lan-jian.png') !important;
}
}
.news-img-box {
width: 250px;
height: 150px;
transition: all ease 0.3s;
flex: none;
.news-img {
width: 100%;
height: 100%;
}
}
.news-col-text {
transition: all ease 0.3s;
flex: 1;
padding: 10px 15px;
background-color: #fff;
.news-text-title {
transition: all ease 0.3s;
font-weight: bold;
font-size: 18px;
color: #1B1B1B;
line-height: 40px;
width: 100%;
max-width: 380px;
height: 40px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.news-text-title-fu {
width: 100%;
font-weight: 400;
font-size: 16px;
color: #2A333D;
line-height: 24px;
display: -webkit-box;
/* 使用-webkit-box布局模型 */
-webkit-box-orient: vertical;
/* 设置子元素的排列方向为垂直 */
-webkit-line-clamp: 2;
/* 限制在一个块元素显示的文本的行数为2行 */
overflow: hidden;
/* 超出部分隐藏 */
text-overflow: ellipsis;
}
.news-text-feet {
margin-top: 20px;
display: flex;
justify-content: space-between;
align-items: center;
.news-time {
transition: all ease 0.3s;
font-size: 14px;
color: #999;
}
.more-jian {
transition: all ease 0.3s;
width: 20px;
height: 20px;
background-image: url('~@/assets/images/moore-hui.png');
background-repeat: no-repeat;
background-size: contain;
}
}
}
}
}
}
}
</style>
<style lang="scss">
.pc-el-tabs {
.el-tabs__nav {
display: inline-block;
transform: translateX(-50%) !important;
float: none;
left: 50%;
}
.el-tabs__nav-wrap::after {
background-color: transparent;
border-bottom: 1px dotted rgba(255, 255, 255, 0.5);
}
.el-tabs__item {
font-size: 16px;
padding: 0 80px;
}
.el-tabs__item:hover {
color: #fff;
cursor: pointer;
}
.el-tabs__item.is-active {
color: #fff;
}
.el-tabs__active-bar {
background-color: #fff;
}
.el-tabs__nav-next {
display: none
}
.el-tabs__nav-prev {
display: none
}
.el-tabs__item.is-active {
color: #fff;
}
.el-tabs__item {
color: #fff;
}
.el-tabs__item:hover {
color: #fff;
}
}
.pc-el-tabs-dark {
.el-tabs__nav {
display: inline-block;
transform: translateX(-50%) !important;
float: none;
left: 50%;
}
.el-tabs__nav-wrap::after {
background-color: transparent;
border-bottom: 1px dotted rgba(#0B59B3, .5);
}
.el-tabs__item {
font-size: 16px;
padding: 0 80px;
}
.el-tabs__item:hover {
color: #0B59B3;
cursor: pointer;
}
.el-tabs__item.is-active {
color: #0B59B3;
}
.el-tabs__active-bar {
background-color: #0B59B3;
}
.el-tabs__nav-next {
display: none
}
.el-tabs__nav-prev {
display: none
}
}
.short-tabs {
.el-tabs__header {
width: 30%;
margin: 0 auto;
margin-bottom: 45px;
}
.el-tabs__nav-wrap::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 0 !important;
background: none !important;
border-bottom: 2px dotted #dfe4ed;
z-index: 1;
}
}
</style>