|
|
|
<template>
|
|
|
|
<div class="wrap">
|
|
|
|
<el-carousel height="480px" :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': item.link.linkName !== '无'}]" @click="openLink(item)">
|
|
|
|
<img :src="item.pic" alt="">
|
|
|
|
<p class="banner-name">RESEARCH</p>
|
|
|
|
</div>
|
|
|
|
</el-carousel-item>
|
|
|
|
</template>
|
|
|
|
</el-carousel>
|
|
|
|
|
|
|
|
<div class="block">
|
|
|
|
<h2 class="b-title">{{ modules[1].form.title }}</h2>
|
|
|
|
<p class="intro">{{ modules[1].form.des }}</p>
|
|
|
|
<ul class="area">
|
|
|
|
<li v-for="(item, i) in modules[2].list" :key="i" :class="{'cursor-pointer': item.link.linkName !== '无'}" @click="openLink(item)">
|
|
|
|
<img :src="item.pic" alt="" class="pic">
|
|
|
|
<div class="texts">
|
|
|
|
<img :src="require('@/assets/images/research/res' + (i + 1) + '-1.png')" alt="" class="icon">
|
|
|
|
<h6>{{ item.title }}</h6>
|
|
|
|
<p class="des">{{ item.des }}</p>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="block gray">
|
|
|
|
<div class="inner">
|
|
|
|
<h2 class="b-title">{{ modules[3].form.title }}</h2>
|
|
|
|
<p class="intro">{{ modules[3].form.des }}</p>
|
|
|
|
<ul class="group">
|
|
|
|
<li v-for="(item, i) in modules[4].list" :key="i" :class="{'cursor-pointer': item.link.linkName !== '无'}" @click="openLink(item)">
|
|
|
|
<img :src="item.pic" alt="">
|
|
|
|
<p class="text">{{ item.title }}</p>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="block">
|
|
|
|
<div class="inner" style="width: 1558px">
|
|
|
|
<h2 class="b-title">{{ modules[5].form.title }}</h2>
|
|
|
|
<p class="intro">{{ modules[5].form.des }}</p>
|
|
|
|
<ul class="news">
|
|
|
|
<li v-for="(item, i) in modules[6].list" :key="i" :class="{'cursor-pointer': item.link.linkName !== '无'}" @click="openLink(item)">
|
|
|
|
<img :src="item.pic" alt="">
|
|
|
|
<div class="texts">
|
|
|
|
<h6>{{ item.title }}</h6>
|
|
|
|
<div class="des">{{ item.des }}</div>
|
|
|
|
</div>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import mixins from '@/mixins/page'
|
|
|
|
import Setting from '@/setting'
|
|
|
|
import Util from '@/libs/util'
|
|
|
|
export default {
|
|
|
|
mixins: [mixins],
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
|
|
|
|
}
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
|
|
|
|
},
|
|
|
|
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[0][data[0].state ? 'theEditedJson' : 'jsonBeforeEditing'])
|
|
|
|
this.modules = json
|
|
|
|
console.log("🚀 ~ file: index.vue ~ line 180 ~ this.$post ~ json", json)
|
|
|
|
}
|
|
|
|
}).catch(err => {})
|
|
|
|
},
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
@import "../../styles/page/page.scss";
|
|
|
|
.area {
|
|
|
|
display: flex;
|
|
|
|
li {
|
|
|
|
position: relative;
|
|
|
|
width: 19%;
|
|
|
|
height: 653px;
|
|
|
|
color: #fff;
|
|
|
|
background: url(../../assets/images/research/res1.png) 0 0/100% 100% no-repeat;
|
|
|
|
&:nth-child(2) {
|
|
|
|
width: 21%;
|
|
|
|
margin-top: 70px;
|
|
|
|
.texts {
|
|
|
|
background: #2B1B1C;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
&:nth-child(3) {
|
|
|
|
.texts {
|
|
|
|
background: #009C91;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
&:nth-child(4) {
|
|
|
|
margin-top: 70px;
|
|
|
|
.texts {
|
|
|
|
background: #005388;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
&:nth-child(5) {
|
|
|
|
width: 22%;
|
|
|
|
.texts {
|
|
|
|
background: #9A4E10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.pic {
|
|
|
|
width: 100%;
|
|
|
|
height: 443px;
|
|
|
|
}
|
|
|
|
.texts {
|
|
|
|
width: 100%;
|
|
|
|
height: 210px;
|
|
|
|
padding: 20px 40px;
|
|
|
|
background: #08577B;
|
|
|
|
}
|
|
|
|
h6 {
|
|
|
|
font-size: 30px;
|
|
|
|
white-space: nowrap;
|
|
|
|
}
|
|
|
|
.des {
|
|
|
|
font-size: 22px;
|
|
|
|
color: rgba(255,255,255,0.55);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.group {
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
li {
|
|
|
|
position: relative;
|
|
|
|
width: 448px;
|
|
|
|
margin: 0 28px 39px 0;
|
|
|
|
&:nth-child(3n) {
|
|
|
|
margin-right: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
img {
|
|
|
|
width: 100%;
|
|
|
|
height: 353px;
|
|
|
|
}
|
|
|
|
.text {
|
|
|
|
font-size: 30px;
|
|
|
|
font-family: SFProDisplay-Bold, SFProDisplay;
|
|
|
|
font-weight: bold;
|
|
|
|
line-height: 143px;
|
|
|
|
color: #272727;
|
|
|
|
text-align: center;
|
|
|
|
background-color: #F5F5F5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.news {
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
li {
|
|
|
|
position: relative;
|
|
|
|
width: 448px;
|
|
|
|
padding: 11px;
|
|
|
|
margin-right: 28px;
|
|
|
|
color: #333;
|
|
|
|
background-color: #fff;
|
|
|
|
box-shadow: 0px 5px 20px 0px rgba(98,117,163,0.08);
|
|
|
|
border-radius: 10px;
|
|
|
|
&:nth-child(3n) {
|
|
|
|
margin-right: 0;
|
|
|
|
}
|
|
|
|
&:hover {
|
|
|
|
color: #fff;
|
|
|
|
background-color: #0252D9;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
img {
|
|
|
|
width: 427px;
|
|
|
|
height: 481px;
|
|
|
|
}
|
|
|
|
.texts {
|
|
|
|
padding: 0 18px 50px;
|
|
|
|
}
|
|
|
|
h6 {
|
|
|
|
margin: 35px 0 12px;
|
|
|
|
font-size: 24px;
|
|
|
|
line-height: 33px;
|
|
|
|
}
|
|
|
|
.des {
|
|
|
|
font-size: 18px;
|
|
|
|
line-height: 26px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|