|
|
|
<template>
|
|
|
|
<div class="wrap">
|
|
|
|
<el-carousel :interval="6000"
|
|
|
|
:arrow="(modules[0] && modules[0].list.filter(e => e.isEnable).length > 1) ? 'hover' : 'never'"
|
|
|
|
:indicator-position="modules[0].list.filter(e => e.isEnable).length > 1 ? '' : 'none'">
|
|
|
|
<template v-for="(item, i) in modules[0].list">
|
|
|
|
<el-carousel-item v-if="item.pic && item.isEnable"
|
|
|
|
:key="i">
|
|
|
|
<div :class="['banner-item', {'cursor-pointer': isLink(item.link.linkName)}]"
|
|
|
|
@click="openLink(item)">
|
|
|
|
<img :src="item.pic"
|
|
|
|
alt="">
|
|
|
|
<p class="banner-name">{{ item.title }}</p>
|
|
|
|
</div>
|
|
|
|
</el-carousel-item>
|
|
|
|
</template>
|
|
|
|
</el-carousel>
|
|
|
|
|
|
|
|
<div class="newsTab">
|
|
|
|
<ul class="scollBox wow fadeInLeft"
|
|
|
|
ref="newsTab">
|
|
|
|
<template v-for="(item, i) in modules[1].list">
|
|
|
|
<li v-if="item.columnName"
|
|
|
|
:class="{active: i == curColumn}"
|
|
|
|
:key="i"
|
|
|
|
@click="tabChange($event,i)">{{ item.columnName }}</li>
|
|
|
|
</template>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="block">
|
|
|
|
<div class="inner"
|
|
|
|
v-if="modules[1].list[curColumn].articles && modules[1].list[curColumn].articles.length">
|
|
|
|
<div class="news-banner wow fadeInDown"
|
|
|
|
data-wow-delay="0.5s"
|
|
|
|
@click="toArtice(curArticle, modules[1].list[curColumn])">
|
|
|
|
<img width="50%"
|
|
|
|
height="410"
|
|
|
|
class="titileImg"
|
|
|
|
:src="curArticle.titleImg"
|
|
|
|
alt=""
|
|
|
|
onerror="javascript:this.src='./images/3.png';">
|
|
|
|
<div class="right">
|
|
|
|
<h6>{{ curArticle.title }}</h6>
|
|
|
|
<div class="des"
|
|
|
|
v-html="curArticle.mainBody"></div>
|
|
|
|
<p class="meta">{{ curArticle.releaseTime }} {{ curArticle.author && ' | ' + curArticle.author }}</p>
|
|
|
|
<ul class="inds">
|
|
|
|
<li v-for="i in modules[1].list[curColumn].articles.length > 2 ? 3 : modules[1].list[curColumn].articles.length"
|
|
|
|
:key="i"
|
|
|
|
:class="{active: curInd == i - 1}"
|
|
|
|
@click.stop="switchCarousel(i - 1)"></li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<ul class="card">
|
|
|
|
<template v-for="(item, i) in modules[1].list[curColumn].articles">
|
|
|
|
<li v-if="i > 2"
|
|
|
|
:key="i"
|
|
|
|
class="wow fadeInDown"
|
|
|
|
:data-wow-delay="(0.1 * i).toFixed(1) + 's'">
|
|
|
|
<img class="pic"
|
|
|
|
:src="item.titleImg"
|
|
|
|
alt="">
|
|
|
|
<div class="texts">
|
|
|
|
<p class="meta">{{ item.releaseTime }} {{ item.author && ' | ' + item.author }}</p>
|
|
|
|
<div class="des">{{ item.title }}</div>
|
|
|
|
<img class="arrow"
|
|
|
|
src="@/assets/images/arrow.png"
|
|
|
|
alt=""
|
|
|
|
@click="toArtice(item, modules[1].list[curColumn])">
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
</template>
|
|
|
|
</ul>
|
|
|
|
<div class="more wow fadeInDown"
|
|
|
|
data-wow-delay="0.5s"
|
|
|
|
@click="toMore">more ></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="block gray">
|
|
|
|
<div class="inner lg">
|
|
|
|
<h2 class="b-title wow fadeInUp">{{ modules[2].form.title }}</h2>
|
|
|
|
<p class="intro wow fadeInUp"
|
|
|
|
data-wow-delay="0.5s">{{ modules[2].form.des }}</p>
|
|
|
|
<div class="shop-shows"
|
|
|
|
v-if="articles.length">
|
|
|
|
<div class="left wow fadeInLeft"
|
|
|
|
data-wow-delay="0.5s"
|
|
|
|
@click="toArtice(articles[0], modules[3].form)">
|
|
|
|
<img class="pic"
|
|
|
|
width="100%"
|
|
|
|
height="400"
|
|
|
|
:src="articles[0].titleImg"
|
|
|
|
alt=""
|
|
|
|
onerror="javascript:this.src='./images/2.png';">
|
|
|
|
<div class="texts">
|
|
|
|
<h6>{{ articles[0].title }}</h6>
|
|
|
|
<div class="des"
|
|
|
|
v-html="articles[0].mainBody"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div v-if="articles.length > 1"
|
|
|
|
class="right wow fadeInRight"
|
|
|
|
data-wow-delay="0.5s">
|
|
|
|
<ul class="show-card">
|
|
|
|
<li v-if="articles[1]"
|
|
|
|
@click="toArtice(articles[1], modules[3].form)">
|
|
|
|
<img class="pic"
|
|
|
|
:src="articles[1].titleImg"
|
|
|
|
alt="">
|
|
|
|
<div class="text">{{ articles[1].title }}</div>
|
|
|
|
</li>
|
|
|
|
<li v-if="articles[2]"
|
|
|
|
@click="toArtice(articles[2], modules[3].form)">
|
|
|
|
<img class="pic"
|
|
|
|
:src="articles[2].titleImg"
|
|
|
|
alt="">
|
|
|
|
<div class="text">{{ articles[2].title }}</div>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
<ul class="card-list">
|
|
|
|
<template v-for="(item, i) in articles">
|
|
|
|
<li v-if="i > 2"
|
|
|
|
:key="i">
|
|
|
|
<img class="pic"
|
|
|
|
:src="item.titleImg"
|
|
|
|
alt="">
|
|
|
|
<div class="texts">
|
|
|
|
<h6>{{ item.title }}</h6>
|
|
|
|
<div class="des"
|
|
|
|
v-html="item.mainBody"></div>
|
|
|
|
</div>
|
|
|
|
<img class="arrow"
|
|
|
|
src="@/assets/images/arrow.png"
|
|
|
|
alt=""
|
|
|
|
@click="toArtice(item, modules[3].form)">
|
|
|
|
</li>
|
|
|
|
</template>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="all-link m-t-10"
|
|
|
|
@click="toAll(modules[3].form)">
|
|
|
|
<span>{{$t('column.all')}} <img class="icon"
|
|
|
|
src="@/assets/images/arrow.png"
|
|
|
|
alt=""></span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="block conference">
|
|
|
|
<div class="inner lg">
|
|
|
|
<h2 class="b-title wow fadeInUp">{{ modules[4].form.title }}</h2>
|
|
|
|
<p class="intro wow fadeInUp"
|
|
|
|
data-wow-delay="0.5s">{{ modules[4].form.des }}</p>
|
|
|
|
<div class="shows"
|
|
|
|
v-if="articles1.length">
|
|
|
|
<div class="left wow fadeInLeft"
|
|
|
|
data-wow-delay="0.5s"
|
|
|
|
@click="toArtice(articles1[0], modules[5].form)">
|
|
|
|
<img class="pic"
|
|
|
|
width="100%"
|
|
|
|
height="558"
|
|
|
|
:src="articles1[0].titleImg"
|
|
|
|
alt=""
|
|
|
|
onerror="javascript:this.src='./images/1.png';">
|
|
|
|
<div class="texts">
|
|
|
|
<div class="meta">
|
|
|
|
<p class="date">{{ articles1[0].date }}</p>
|
|
|
|
<p class="year">{{ articles1[0].month }}</p>
|
|
|
|
</div>
|
|
|
|
<div>
|
|
|
|
<h6>{{ articles1[0].title }}</h6>
|
|
|
|
<div class="des"
|
|
|
|
v-html="articles1[0].mainBody"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<ul class="card-list wow fadeInRight"
|
|
|
|
data-wow-delay="0.5s">
|
|
|
|
<template v-for="(item, i) in articles1">
|
|
|
|
<li v-if="i"
|
|
|
|
:key="i"
|
|
|
|
@click="toArtice(item, modules[5].form)">
|
|
|
|
<img class="pic"
|
|
|
|
:src="item.titleImg"
|
|
|
|
alt="">
|
|
|
|
<div class="texts">
|
|
|
|
<h6>{{ item.title }}</h6>
|
|
|
|
<p v-if="item.keynoteSpeaker"
|
|
|
|
class="text">
|
|
|
|
<img class="icon"
|
|
|
|
src="@/assets/images/mine.png"
|
|
|
|
alt="">
|
|
|
|
<span>{{ item.keynoteSpeaker }}</span>
|
|
|
|
</p>
|
|
|
|
<p v-if="item.activityStartTime"
|
|
|
|
class="text">
|
|
|
|
<img class="icon"
|
|
|
|
src="@/assets/images/time.png"
|
|
|
|
alt="">
|
|
|
|
<span>Time: {{ item.activityStartTime + ' ~ ' + item.activityEndTime }}</span>
|
|
|
|
</p>
|
|
|
|
<p v-if="item.onlineLocation"
|
|
|
|
class="text">
|
|
|
|
<img class="icon"
|
|
|
|
src="@/assets/images/online.png"
|
|
|
|
alt="">
|
|
|
|
<span>Onlone: {{ item.onlineLocation }}</span>
|
|
|
|
</p>
|
|
|
|
<p v-if="item.offlineLocation"
|
|
|
|
class="text">
|
|
|
|
<img class="icon"
|
|
|
|
src="@/assets/images/location.png"
|
|
|
|
alt="">
|
|
|
|
<span>Address: {{ item.offlineLocation }}</span>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
</template>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
<div class="all-link m-t-10"
|
|
|
|
@click="toAll(modules[5].form)">
|
|
|
|
<span style="color: #fff">{{$t('column.all')}} <img class="icon"
|
|
|
|
src="@/assets/images/arrow.png"
|
|
|
|
alt=""></span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import mixins from '@/mixins/page'
|
|
|
|
import Setting from '@/setting'
|
|
|
|
import Util from '@/libs/util'
|
|
|
|
import WOW from 'wow.js'
|
|
|
|
export default {
|
|
|
|
mixins: [mixins],
|
|
|
|
data () {
|
|
|
|
return {
|
|
|
|
curColumn: 0,
|
|
|
|
articles: [],
|
|
|
|
articles1: [],
|
|
|
|
curInd: 0,
|
|
|
|
curArticle: {},
|
|
|
|
timer: null
|
|
|
|
}
|
|
|
|
},
|
|
|
|
mounted () {
|
|
|
|
new WOW().init()
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
// 获取文章详情
|
|
|
|
getInfo () {
|
|
|
|
// 预览/详情
|
|
|
|
this.$post(`${this.api[this.preview ? 'getRedisCache' : 'findPage']}?columnId=${this.id}`).then(({ data }) => {
|
|
|
|
if (data.length) {
|
|
|
|
// state:已发布(1)则取theEditedJson,草稿(0)则取jsonBeforeEditing
|
|
|
|
const json = JSON.parse(this.preview ?
|
|
|
|
data :
|
|
|
|
data[data.length - 1][data[data.length - 1].state ? 'theEditedJson' : 'jsonBeforeEditing'])
|
|
|
|
console.log("🚀 ~ file: index.vue ~ line 138 ~ this.$post ~ this.modules", json)
|
|
|
|
|
|
|
|
// 获取文章列表
|
|
|
|
const { list } = json[1]
|
|
|
|
if (list.length) {
|
|
|
|
list.map((e, i) => {
|
|
|
|
if (e.site && e.column.length) {
|
|
|
|
const id = e.column[e.column.length - 1]
|
|
|
|
e.id = id
|
|
|
|
if (e.columnTitle === 2) e.columnName = e.columnTitleCustom
|
|
|
|
this.$post(`${this.api.queryArticlesByColumnType}?columnId=${id}`).then(({ data }) => {
|
|
|
|
const list = Util.removeTag(data.slice(0, e.articleNum || 6))
|
|
|
|
this.$set(e, 'articles', list)
|
|
|
|
if (list.length && !i) this.curArticle = list[0]
|
|
|
|
}).catch(err => { })
|
|
|
|
} else {
|
|
|
|
this.$set(e, 'articles', [])
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
if (json[3].form.column.length) {
|
|
|
|
const { column, site, articleNum } = json[3].form
|
|
|
|
this.$post(`${this.api.queryArticlesByColumnType}?columnId=${column[column.length - 1]}`).then(({ data }) => {
|
|
|
|
this.articles = Util.removeTag(data.slice(0, articleNum || 6))
|
|
|
|
}).catch(err => { })
|
|
|
|
}
|
|
|
|
if (json[5].form.column.length) {
|
|
|
|
const { column, site, articleNum } = json[5].form
|
|
|
|
this.$post(`${this.api.queryArticlesByColumnType}?columnId=${column[column.length - 1]}`).then(({ data }) => {
|
|
|
|
if (data.length) {
|
|
|
|
// 把发布日期分割成年月和日,页面上要展示
|
|
|
|
if (data[0].releaseTime) {
|
|
|
|
const date = data[0].releaseTime.split('-')
|
|
|
|
data[0].date = date[2]
|
|
|
|
data[0].month = date[0] + '-' + date[1]
|
|
|
|
}
|
|
|
|
this.articles1 = Util.removeTag(data.slice(0, articleNum || 5))
|
|
|
|
}
|
|
|
|
}).catch(err => { })
|
|
|
|
}
|
|
|
|
|
|
|
|
this.modules = json
|
|
|
|
console.log(this.modules)
|
|
|
|
this.carouselInterval()
|
|
|
|
}
|
|
|
|
}).catch(err => { })
|
|
|
|
},
|
|
|
|
// 自动轮播
|
|
|
|
carouselInterval () {
|
|
|
|
clearInterval(this.timer)
|
|
|
|
this.timer = setInterval(() => {
|
|
|
|
this.curInd++
|
|
|
|
if (this.curInd > 2) this.curInd = 0
|
|
|
|
this.curArticle = this.modules[1].list[this.curColumn].articles[this.curInd] || {}
|
|
|
|
}, 5000)
|
|
|
|
},
|
|
|
|
// 手动轮播切换
|
|
|
|
switchCarousel (i) {
|
|
|
|
if (this.curInd !== i) {
|
|
|
|
this.curInd = i
|
|
|
|
this.curArticle = this.modules[1].list[this.curColumn].articles[i] || {}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// tab回调
|
|
|
|
tabChange (e, i) {
|
|
|
|
const newsTab = this.$refs.newsTab
|
|
|
|
newsTab.scrollLeft = e.target.offsetLeft
|
|
|
|
// e.target.offsetLeft
|
|
|
|
const { column } = this.modules[1].list[i]
|
|
|
|
if (column && column.length) {
|
|
|
|
const id = column[column.length - 1]
|
|
|
|
// 查询栏目详情
|
|
|
|
this.$post(`${this.api.findColumn}?id=${id}`).then(({ data }) => {
|
|
|
|
const { typeId } = data
|
|
|
|
// 跳转链接
|
|
|
|
if (typeId === 2) {
|
|
|
|
let href = data.linkAddress
|
|
|
|
const cType = data.connectionType
|
|
|
|
if (cType !== 2) { // 非站外链接
|
|
|
|
const ids = href.split('-') // 栏目文章是用-分割的,栏目是必选,文章不是必选。选择了文章则跳转到文章页,否则跳转到栏目页
|
|
|
|
// 站点id:站内链接取当前站点,其他站点链接取siteSelection
|
|
|
|
const site = cType === 1 ?
|
|
|
|
(this.site) :
|
|
|
|
data.siteSelection
|
|
|
|
if (ids[1]) { // 文章
|
|
|
|
href = '/article?id=' + ids[1]
|
|
|
|
} else { // 栏目
|
|
|
|
const columnIds = ids[0].split(',')
|
|
|
|
href = '/column?id=' + columnIds[columnIds.length - 1]
|
|
|
|
}
|
|
|
|
href = this.$router.resolve(href + '&siteId=' + site).href
|
|
|
|
}
|
|
|
|
// 是否新窗口打开
|
|
|
|
if (data.isOpen) {
|
|
|
|
var userAgent = navigator.userAgent;
|
|
|
|
var isSafari = /Safari/.test(userAgent) && !/Chrome/.test(userAgent);
|
|
|
|
if (isSafari) {
|
|
|
|
window.location.href = href
|
|
|
|
} else {
|
|
|
|
window.open(href)
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
location.href = href
|
|
|
|
}
|
|
|
|
} else if (typeId === 3) {
|
|
|
|
// 长页栏目直接获取path
|
|
|
|
this.$router.push(`/${data.path}?id=${id}`).catch(err => { })
|
|
|
|
} else {
|
|
|
|
this.curInd = 0
|
|
|
|
this.curColumn = i
|
|
|
|
this.curArticle = this.modules[1].list[i].articles[0] || {}
|
|
|
|
this.carouselInterval()
|
|
|
|
}
|
|
|
|
}).catch(err => { })
|
|
|
|
} else {
|
|
|
|
this.curColumn = i
|
|
|
|
}
|
|
|
|
},
|
|
|
|
// 跳转more
|
|
|
|
toMore () {
|
|
|
|
const { column } = this.modules[1].list[this.curColumn]
|
|
|
|
column.length && this.$router.push(`/column?id=${column[column.length - 1]}`)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
@import url(../../plugins/wow/animate.css);
|
|
|
|
@import '../../styles/page/page.scss';
|
|
|
|
.wrap {
|
|
|
|
/deep/ .el-carousel {
|
|
|
|
height: 24rem;
|
|
|
|
.el-carousel__container {
|
|
|
|
height: 24rem;
|
|
|
|
}
|
|
|
|
img {
|
|
|
|
height: 24rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.banner-item {
|
|
|
|
.banner-name {
|
|
|
|
font-size: 2.16rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.block {
|
|
|
|
padding: 3.85rem 0;
|
|
|
|
}
|
|
|
|
.newsTab {
|
|
|
|
box-shadow: 0px 2px 14px 0px rgba(167, 167, 167, 0.26);
|
|
|
|
.scollBox {
|
|
|
|
width: 85.714rem;
|
|
|
|
margin: auto;
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
li {
|
|
|
|
flex: 1;
|
|
|
|
text-align: center;
|
|
|
|
padding: 1.25rem 0.95rem;
|
|
|
|
margin: 0 10px;
|
|
|
|
font-size: 1.1rem;
|
|
|
|
color: #333;
|
|
|
|
border-bottom: 4px solid transparent;
|
|
|
|
text-shadow: 0px 2px 14px rgba(167, 167, 167, 0.26);
|
|
|
|
cursor: pointer;
|
|
|
|
&.active {
|
|
|
|
color: #1583ff;
|
|
|
|
border-bottom-color: #1583ff;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/deep/.articles {
|
|
|
|
width: 50%;
|
|
|
|
.el-carousel__indicators--horizontal {
|
|
|
|
bottom: 1.25rem;
|
|
|
|
left: 50.25rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.lg {
|
|
|
|
.intro {
|
|
|
|
margin-bottom: 4rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.news-banner {
|
|
|
|
display: flex;
|
|
|
|
cursor: pointer;
|
|
|
|
.titileImg {
|
|
|
|
height: auto;
|
|
|
|
}
|
|
|
|
.pic {
|
|
|
|
width: 43.75rem;
|
|
|
|
height: 23.75rem;
|
|
|
|
}
|
|
|
|
.right {
|
|
|
|
position: relative;
|
|
|
|
width: 50%;
|
|
|
|
padding: 2.5rem 2.5rem 1.5rem;
|
|
|
|
background: #1583ff;
|
|
|
|
color: #fff;
|
|
|
|
&:hover {
|
|
|
|
background: #465f85;
|
|
|
|
h6,
|
|
|
|
.des,
|
|
|
|
.meta {
|
|
|
|
color: #fff;
|
|
|
|
transform: translateY(15px);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.inds {
|
|
|
|
position: absolute;
|
|
|
|
bottom: 2.5rem;
|
|
|
|
left: 3.75rem;
|
|
|
|
display: flex;
|
|
|
|
li {
|
|
|
|
width: 0.625rem;
|
|
|
|
height: 0.625rem;
|
|
|
|
margin-right: 0.75rem;
|
|
|
|
background: #ffffff;
|
|
|
|
border-radius: 50%;
|
|
|
|
transition: 0.2s;
|
|
|
|
&.active {
|
|
|
|
width: 1.875rem;
|
|
|
|
background: rgba(255, 255, 255, 0.3);
|
|
|
|
border-radius: 5px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
h6 {
|
|
|
|
font-size: 1.2rem;
|
|
|
|
transition: 0.3s;
|
|
|
|
}
|
|
|
|
.des {
|
|
|
|
margin: 1.5rem 0;
|
|
|
|
font-size: 0.88rem;
|
|
|
|
line-height: 1.3714rem;
|
|
|
|
transition: 0.3s;
|
|
|
|
}
|
|
|
|
.meta {
|
|
|
|
font-size: 0.88rem;
|
|
|
|
transition: 0.3s;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.card {
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
margin-top: 2rem;
|
|
|
|
width: 100%;
|
|
|
|
|
|
|
|
li {
|
|
|
|
width: 32.5%;
|
|
|
|
margin-right: 1%;
|
|
|
|
box-shadow: 0px 0px 20px 0px rgba(176, 176, 176, 0.21);
|
|
|
|
border-radius: 6px;
|
|
|
|
transition: 0.3s;
|
|
|
|
&:hover {
|
|
|
|
transform: scale(1.05);
|
|
|
|
}
|
|
|
|
&:last-child {
|
|
|
|
margin-right: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.pic {
|
|
|
|
width: 100%;
|
|
|
|
height: auto;
|
|
|
|
object-fit: cover;
|
|
|
|
}
|
|
|
|
.texts {
|
|
|
|
padding: 2rem 1.5rem;
|
|
|
|
}
|
|
|
|
.meta {
|
|
|
|
font-size: 0.88rem;
|
|
|
|
color: #666;
|
|
|
|
}
|
|
|
|
.des {
|
|
|
|
height: 3.7rem;
|
|
|
|
margin: 10px 0;
|
|
|
|
font-size: 1.25rem;
|
|
|
|
font-family: SFProDisplay;
|
|
|
|
font-weight: 500;
|
|
|
|
color: #333;
|
|
|
|
line-height: 1.7rem;
|
|
|
|
-webkit-line-clamp: 2;
|
|
|
|
}
|
|
|
|
.arrow {
|
|
|
|
width: 2.25rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.more {
|
|
|
|
width: 23.375rem;
|
|
|
|
margin: 3.625rem auto 0;
|
|
|
|
line-height: 64px;
|
|
|
|
font-size: 1.875rem;
|
|
|
|
text-align: center;
|
|
|
|
color: #1583ff;
|
|
|
|
border-radius: 35px;
|
|
|
|
border: 2px solid #2b6cef;
|
|
|
|
cursor: pointer;
|
|
|
|
}
|
|
|
|
.shop-shows {
|
|
|
|
display: flex;
|
|
|
|
.left {
|
|
|
|
width: 41.25rem;
|
|
|
|
margin-right: 1.25rem;
|
|
|
|
background-color: #fff;
|
|
|
|
cursor: pointer;
|
|
|
|
overflow: hidden;
|
|
|
|
.pic {
|
|
|
|
transition: 0.3s;
|
|
|
|
height: auto;
|
|
|
|
object-fit: cover;
|
|
|
|
&:hover {
|
|
|
|
transform: scale(1.05);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.texts {
|
|
|
|
padding: 2rem 1.5rem;
|
|
|
|
}
|
|
|
|
h6 {
|
|
|
|
font-size: 1.2rem;
|
|
|
|
color: #272727;
|
|
|
|
}
|
|
|
|
.des {
|
|
|
|
margin-top: 10px;
|
|
|
|
font-size: 0.88rem;
|
|
|
|
color: #666;
|
|
|
|
line-height: 1.714rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.right {
|
|
|
|
width: 60%;
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
.show-card {
|
|
|
|
display: flex;
|
|
|
|
margin-bottom: 1.25rem;
|
|
|
|
li {
|
|
|
|
position: relative;
|
|
|
|
height: auto;
|
|
|
|
overflow: hidden;
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
|
|
&:first-child {
|
|
|
|
margin-right: 1.375rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.pic {
|
|
|
|
width: 25rem;
|
|
|
|
height: 12.3125rem;
|
|
|
|
transition: 0.3s;
|
|
|
|
object-fit: cover;
|
|
|
|
&:hover {
|
|
|
|
transform: scale(1.05);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.text {
|
|
|
|
position: absolute;
|
|
|
|
bottom: 0;
|
|
|
|
left: 0;
|
|
|
|
width: 100%;
|
|
|
|
font-size: 0.88rem;
|
|
|
|
color: #fff;
|
|
|
|
padding: 0 1rem;
|
|
|
|
line-height: 48px;
|
|
|
|
text-align: center;
|
|
|
|
@include ellipsis;
|
|
|
|
background: rgba(0, 0, 0, 0.49);
|
|
|
|
box-shadow: 0px 0px 30px 0px rgba(48, 48, 48, 0.08);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.card-list {
|
|
|
|
padding: 1.5rem 1.3rem;
|
|
|
|
background-color: #fff;
|
|
|
|
li {
|
|
|
|
display: inline-flex;
|
|
|
|
align-items: center;
|
|
|
|
margin-bottom: 0.9rem;
|
|
|
|
transition: 0.3s;
|
|
|
|
&:hover {
|
|
|
|
transform: scale(1.05);
|
|
|
|
}
|
|
|
|
&:last-child {
|
|
|
|
margin-bottom: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.pic {
|
|
|
|
width: 8rem;
|
|
|
|
height: auto;
|
|
|
|
margin-right: 1.5rem;
|
|
|
|
object-fit: cover;
|
|
|
|
}
|
|
|
|
.texts {
|
|
|
|
width: calc(100% - 15rem);
|
|
|
|
margin-right: 3.5rem;
|
|
|
|
}
|
|
|
|
h6 {
|
|
|
|
margin-bottom: 10px;
|
|
|
|
font-size: 1rem;
|
|
|
|
color: #272727;
|
|
|
|
display: -webkit-box;
|
|
|
|
-webkit-box-orient: vertical;
|
|
|
|
-webkit-line-clamp: 1;
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
overflow: hidden;
|
|
|
|
}
|
|
|
|
.des {
|
|
|
|
font-size: 0.7rem;
|
|
|
|
color: #666;
|
|
|
|
line-height: 1.4rem;
|
|
|
|
text-shadow: 0px 0px 30px rgba(48, 48, 48, 0.08);
|
|
|
|
-webkit-line-clamp: 2;
|
|
|
|
}
|
|
|
|
.arrow {
|
|
|
|
width: 2rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.conference {
|
|
|
|
background: #072947;
|
|
|
|
.b-title,
|
|
|
|
.intro {
|
|
|
|
color: #fff;
|
|
|
|
}
|
|
|
|
.shows {
|
|
|
|
display: flex;
|
|
|
|
}
|
|
|
|
.left {
|
|
|
|
width: 44.875rem;
|
|
|
|
margin-right: 20px;
|
|
|
|
overflow: hidden;
|
|
|
|
cursor: pointer;
|
|
|
|
.pic {
|
|
|
|
transition: 0.3s;
|
|
|
|
height: auto;
|
|
|
|
object-fit: cover;
|
|
|
|
&:hover {
|
|
|
|
transform: scale(1.05);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.texts {
|
|
|
|
display: flex;
|
|
|
|
padding: 3.78rem 1.5rem;
|
|
|
|
background-color: #fff;
|
|
|
|
}
|
|
|
|
.meta {
|
|
|
|
padding: 0.5714rem 1.314rem 0.5714rem 0;
|
|
|
|
margin-right: 1.828rem;
|
|
|
|
text-align: center;
|
|
|
|
border-right: 1px solid #ddd;
|
|
|
|
}
|
|
|
|
.date {
|
|
|
|
font-size: 2.5714rem;
|
|
|
|
font-family: DINAlternate-Bold, DINAlternate;
|
|
|
|
font-weight: bold;
|
|
|
|
color: #1f1f1f;
|
|
|
|
line-height: 2.9714rem;
|
|
|
|
}
|
|
|
|
.year {
|
|
|
|
font-size: 0.9142rem;
|
|
|
|
white-space: nowrap;
|
|
|
|
color: #666;
|
|
|
|
}
|
|
|
|
h6 {
|
|
|
|
font-size: 1.1428rem;
|
|
|
|
color: #272727;
|
|
|
|
}
|
|
|
|
.des {
|
|
|
|
margin-top: 10px;
|
|
|
|
font-size: 0.8rem;
|
|
|
|
color: #666;
|
|
|
|
line-height: 1.3714rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.card-list {
|
|
|
|
width: 50%;
|
|
|
|
li {
|
|
|
|
display: flex;
|
|
|
|
padding: 0.8rem;
|
|
|
|
margin-bottom: 0.7rem;
|
|
|
|
background-color: #fff;
|
|
|
|
cursor: pointer;
|
|
|
|
align-items: center;
|
|
|
|
transition: 0.3s;
|
|
|
|
height: 9rem;
|
|
|
|
&:last-child {
|
|
|
|
margin-bottom: 0;
|
|
|
|
}
|
|
|
|
&:hover {
|
|
|
|
transform: translateX(20px);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.pic {
|
|
|
|
width: 10rem;
|
|
|
|
height: auto;
|
|
|
|
margin-right: 1.5rem;
|
|
|
|
object-fit: cover;
|
|
|
|
}
|
|
|
|
.texts {
|
|
|
|
width: calc(100% - 11.5rem);
|
|
|
|
}
|
|
|
|
h6 {
|
|
|
|
margin-bottom: 5px;
|
|
|
|
font-size: 1rem;
|
|
|
|
color: #333;
|
|
|
|
@include ellipsis();
|
|
|
|
}
|
|
|
|
.text {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
&:last-child {
|
|
|
|
margin-bottom: 0;
|
|
|
|
}
|
|
|
|
span {
|
|
|
|
@include ellipsis();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.icon {
|
|
|
|
margin-right: 5px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@media (max-width: 1200px) {
|
|
|
|
.newsTab {
|
|
|
|
overflow-x: scroll;
|
|
|
|
display: -webkit-box;
|
|
|
|
}
|
|
|
|
.shop-shows {
|
|
|
|
.left {
|
|
|
|
width: 50%;
|
|
|
|
}
|
|
|
|
.right {
|
|
|
|
width: 48%;
|
|
|
|
}
|
|
|
|
.card-list {
|
|
|
|
.pic {
|
|
|
|
margin-right: 1rem;
|
|
|
|
}
|
|
|
|
.texts {
|
|
|
|
width: calc(100% - 11rem);
|
|
|
|
margin-right: 1rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
|
|
.block {
|
|
|
|
padding: 50px 0;
|
|
|
|
.inner {
|
|
|
|
.more {
|
|
|
|
width: 100%;
|
|
|
|
margin: 20px auto 0;
|
|
|
|
}
|
|
|
|
.news-banner {
|
|
|
|
flex-direction: column;
|
|
|
|
img {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
.right {
|
|
|
|
margin-top: 10px;
|
|
|
|
width: 100%;
|
|
|
|
.inds {
|
|
|
|
left: 50%;
|
|
|
|
margin-left: -43px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.card {
|
|
|
|
flex-direction: column;
|
|
|
|
.wow {
|
|
|
|
width: 95%;
|
|
|
|
margin: 20px auto;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.b-title {
|
|
|
|
font-size: 20px;
|
|
|
|
}
|
|
|
|
.intro {
|
|
|
|
font-size: 15px;
|
|
|
|
margin-bottom: 50px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.shop-shows {
|
|
|
|
flex-direction: column;
|
|
|
|
.left {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
.right {
|
|
|
|
width: 100%;
|
|
|
|
margin: 20px auto;
|
|
|
|
.show-card {
|
|
|
|
flex-direction: column;
|
|
|
|
li {
|
|
|
|
width: 100%;
|
|
|
|
.pic {
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.conference {
|
|
|
|
.shows {
|
|
|
|
flex-direction: column;
|
|
|
|
}
|
|
|
|
.left {
|
|
|
|
width: 100%;
|
|
|
|
margin-right: 0;
|
|
|
|
}
|
|
|
|
.card-list {
|
|
|
|
width: 100%;
|
|
|
|
margin-top: 20px;
|
|
|
|
.text {
|
|
|
|
margin-bottom: 4px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|