yujialong 2 years ago
parent a8911002e9
commit 68a6508565
  1. 2
      src/components/menuTree/index.vue
  2. 2
      src/i18n/index.js
  3. 4
      src/layouts/footer/index.vue
  4. 22
      src/layouts/header/index.vue
  5. 4
      src/layouts/home/index.vue
  6. 4
      src/layouts/navbar/index.vue
  7. 32
      src/mixins/page/index.js
  8. 6
      src/pages/article/index.vue
  9. 0
      src/pages/deviceIntroBeam/index.vue
  10. 0
      src/pages/deviceIntroLayout/index.vue
  11. 0
      src/pages/deviceIntroLinear/index.vue
  12. 27
      src/pages/home/index.vue
  13. 4
      src/pages/news/index.vue
  14. 16
      src/pages/publish/show.vue
  15. 15
      src/pages/science/index.vue
  16. 127
      src/pages/sfel/index.vue
  17. 20
      src/pages/talent/index.vue
  18. 15
      src/pages/userSharing/index.vue
  19. 23
      src/router/modules/device.js
  20. 14
      src/router/modules/deviceIntroBeam.js
  21. 14
      src/router/modules/deviceIntroLayout.js
  22. 14
      src/router/modules/deviceIntroLinear.js
  23. 0
      src/router/modules/overviewLocation.js
  24. 14
      src/router/modules/overviewTrailer.js
  25. 2
      src/setting.js
  26. 22
      src/styles/page/page.scss

@ -1,7 +1,7 @@
<template> <template>
<div class="menu-child"> <div class="menu-child">
<template v-for="item in this.menuList"> <template v-for="item in this.menuList">
<el-submenu :popper-class="$route.path === '/home' ? 'home-menu-popup' : ''" :class="{active: $route.query.id == item.id}" :key="item.id" :index="String(item.id)" :id="item.id" v-if="item.children && item.children.length"> <el-submenu :popper-class="$route.path === '/home' || $route.path === '/sfel' ? 'home-menu-popup' : ''" :class="{active: $route.query.id == item.id}" :key="item.id" :index="String(item.id)" :id="item.id" v-if="item.children && item.children.length">
<template slot="title"> <template slot="title">
<span slot="title" :id="item.id">{{item.columnName}}</span> <span slot="title" :id="item.id">{{item.columnName}}</span>
</template> </template>

@ -11,7 +11,7 @@ export const messages = {
views: '浏览', views: '浏览',
download: '下载', download: '下载',
attachmentDownload: '附件下载', attachmentDownload: '附件下载',
editor: '编辑', edit: '编辑',
auditor: '审核', auditor: '审核',
comingSoon: '即将召开', comingSoon: '即将召开',
alreadyHeld: '已经召开', alreadyHeld: '已经召开',

@ -61,7 +61,7 @@ export default {
mixins: [mixins], mixins: [mixins],
data() { data() {
return { return {
showContactPath: ['/news'], showContactPath: ['/news', '/sfel'],
columns: [], columns: [],
}; };
}, },
@ -122,7 +122,7 @@ export default {
} }
.contact { .contact {
position: relative; position: relative;
padding: 0 0 106px 0; padding: 0 0 73px 0;
background: url(../../assets/images/map.png) 0 0/cover no-repeat; background: url(../../assets/images/map.png) 0 0/cover no-repeat;
.inner { .inner {
width: 1082px; width: 1082px;

@ -28,7 +28,7 @@ import navbar from '../navbar'
export default { export default {
data() { data() {
return { return {
isHome: this.$route.path === '/home', isHome: this.$route.path === '/home' || this.$route.path === '/sfel',
showSearch: false, showSearch: false,
title: '', title: '',
searchTimer: null searchTimer: null
@ -39,7 +39,7 @@ export default {
}, },
watch: { watch: {
'$route'() { '$route'() {
this.isHome = this.$route.path === '/home' this.isHome = this.$route.path === '/home' || this.$route.path === '/sfel'
}, },
}, },
beforeDestroy () { beforeDestroy () {
@ -58,7 +58,7 @@ export default {
}, },
// (home) // (home)
handleScroll () { handleScroll () {
if (this.$route.path === '/home') { if (this.$route.path === '/home' || this.$route.path === '/sfel') {
let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
if (this.isHome == scrollTop > 907) { if (this.isHome == scrollTop > 907) {
this.isHome = !(scrollTop > 907) this.isHome = !(scrollTop > 907)
@ -75,20 +75,8 @@ export default {
// //
toggleLang() { toggleLang() {
let id = +(this.$route.query.siteId || this.$store.state.content.site) let id = +(this.$route.query.siteId || this.$store.state.content.site)
// id1/2 3/4 5/6 // id61/2 3/4 5/6
if (id == 1) { id % 2 ? id++ : id--
id = 2
} else if (id == 2) {
id = 1
} else if (id == 3) {
id = 4
} else if (id == 4) {
id = 3
} else if (id == 5) {
id = 6
} else if (id == 6) {
id = 5
}
location.href = this.$router.resolve(`/column?siteId=${id}`).href location.href = this.$router.resolve(`/column?siteId=${id}`).href
location.reload() location.reload()
}, },

@ -20,7 +20,7 @@ import { mapMutations } from 'vuex'
export default { export default {
data() { data() {
return { return {
isHome: this.$route.path === '/home', isHome: this.$route.path === '/home' || this.$route.path === '/sfel',
enSite: [1, 4, 6] // id enSite: [1, 4, 6] // id
}; };
}, },
@ -30,7 +30,7 @@ export default {
}, },
watch: { watch: {
'$route'() { '$route'() {
this.isHome = this.$route.path === '/home' this.isHome = this.$route.path === '/home' || this.$route.path === '/sfel'
} }
}, },
mounted() { mounted() {

@ -37,7 +37,7 @@ export default {
this.getColumn() this.getColumn()
this.setSite(siteId) this.setSite(siteId)
} }
this.isHome = this.$route.path === '/home' this.isHome = this.$route.path === '/home' || this.$route.path === '/sfel'
this.handleColor() this.handleColor()
}, },
isHome() { isHome() {
@ -52,7 +52,7 @@ export default {
...mapMutations('content', [ ...mapMutations('content', [
'setSite' 'setSite'
]), ]),
// //
getColumn() { getColumn() {
this.$post(this.api.listWithTreeMenuVisible, { this.$post(this.api.listWithTreeMenuVisible, {
siteId: this.$route.query.siteId || this.site, siteId: this.$route.query.siteId || this.site,

@ -14,6 +14,38 @@ export default {
this.getInfo() this.getInfo()
}, },
methods: { methods: {
// 点击栏目回调
columnTo(to) {
const { typeId } = to
// 跳转链接
if (typeId === 2) {
let href = to.linkAddress
const cType = to.connectionType
if (cType !== 2) { // 非站外链接
const ids = href.split('-') // 栏目文章是用-分割的,栏目是必选,文章不是必选。选择了文章则跳转到文章页,否则跳转到栏目页
// 站点id:站内链接取当前站点,其他站点链接取siteSelection
const site = cType === 1 ?
(this.$route.query.siteId || this.site) :
to.siteSelection
if (ids[1]) { // 文章
href = '/article?articleId=' + ids[1]
} else { // 栏目
const columnIds = ids[0].split(',')
href = '/column?id=' + columnIds[columnIds.length - 1]
}
href = this.$router.resolve(href + '&siteId=' + site).href
}
// 是否新窗口打开
if (to.isOpen) {
window.open(href)
} else {
location.href = href
}
} else if (typeId !== 4 || (typeId === 4 && !to.children.length)) {
// 常规栏目跳转到column页,长页栏目直接获取path
this.$router.push(`/${typeId === 3 ? to.path : 'column'}?id=${to.id}&siteId=${this.$route.query.siteId || this.site}`).catch(err => {})
}
},
// 打开链接 // 打开链接
async openLink(item) { async openLink(item) {
const { link } = item const { link } = item

@ -8,7 +8,7 @@
<div class="article"> <div class="article">
<div class="left"> <div class="left">
<h2>{{ form.title }}</h2> <h2>{{ form.title }}</h2>
<div class="meta">{{ form.source && form.source + ' | ' }} {{ form.author && form.author + ' | ' }} {{ form.totalBrowsing }} {{$t('column.views')}} | {{ form.createTime }}</div> <div class="meta">{{ form.source && form.source + ' | ' }} {{ form.author && form.author + ' | ' }} {{ form.totalBrowsing }} {{$t('column.views')}} | {{ form.releaseTime }}</div>
<div class="meta">{{ form.edit && $t('column.edit') + ':' + form.edit }} {{ form.audit && ' | ' + $t('column.auditor') + ':' + form.audit }} {{ form.label && ' | ' + $t('column.label') + ':' + form.label }}</div> <div class="meta">{{ form.edit && $t('column.edit') + ':' + form.edit }} {{ form.audit && ' | ' + $t('column.auditor') + ':' + form.audit }} {{ form.label && ' | ' + $t('column.label') + ':' + form.label }}</div>
<p class="brief">{{ form.summary }}</p> <p class="brief">{{ form.summary }}</p>
<div class="des" v-html="form.mainBody"></div> <div class="des" v-html="form.mainBody"></div>
@ -29,7 +29,7 @@
<ul class="list"> <ul class="list">
<li v-for="(item, i) in hots" :key="i" :title="item.title" @click="toArtice(item)"> <li v-for="(item, i) in hots" :key="i" :title="item.title" @click="toArtice(item)">
<p class="text">{{ item.title }}</p> <p class="text">{{ item.title }}</p>
<span class="date">{{ item.createTime }}</span> <span class="date">{{ item.releaseTime }}</span>
</li> </li>
</ul> </ul>
@ -37,7 +37,7 @@
<ul class="list"> <ul class="list">
<li v-for="(item, i) in news" :key="i" :title="item.title" @click="toArtice(item)"> <li v-for="(item, i) in news" :key="i" :title="item.title" @click="toArtice(item)">
<p class="text">{{ item.title }}</p> <p class="text">{{ item.title }}</p>
<span class="date">{{ item.createTime }}</span> <span class="date">{{ item.releaseTime }}</span>
</li> </li>
</ul> </ul>
</div> </div>

@ -86,20 +86,20 @@
<h2 class="glance wow fadeInUp">{{ modules[9].form.title }}</h2> <h2 class="glance wow fadeInUp">{{ modules[9].form.title }}</h2>
<ul class="stat"> <ul class="stat">
<li class="wow fadeInRight" data-wow-delay="0.2s"> <li class="wow fadeInRight" data-wow-delay="0.2s">
<p class="num">{{ modules[10].form.title }}</p> <!-- <p class="num">{{ modules[10].form.title }}</p> -->
<!-- <animate-number from="0" to="2000" duration="1000" /> --> <animate-number class="num" ref="num1" from="0" to="5000" duration="3000" />
<p class="text">{{ modules[10].form.des }}</p> <p class="text">{{ modules[10].form.des }}</p>
</li> </li>
<li class="wow fadeInRight" data-wow-delay="0.4s"> <li class="wow fadeInRight" data-wow-delay="0.4s">
<p class="num">{{ modules[11].form.title }}</p> <animate-number class="num" ref="num2" from="0" :to="modules[11].form.title" duration="3000" />
<p class="text">{{ modules[11].form.des }}</p> <p class="text">{{ modules[11].form.des }}</p>
</li> </li>
<li class="wow fadeInRight" data-wow-delay="0.6s"> <li class="wow fadeInRight" data-wow-delay="0.6s">
<p class="num">{{ modules[12].form.title }}</p> <animate-number class="num" ref="num3" from="0" :to="modules[12].form.title" duration="3000" />
<p class="text">{{ modules[12].form.des }}</p> <p class="text">{{ modules[12].form.des }}</p>
</li> </li>
<li class="wow fadeInRight" data-wow-delay="0.9s"> <li class="wow fadeInRight" data-wow-delay="0.9s">
<p class="num">{{ modules[13].form.title }}</p> <animate-number class="num" ref="num4" from="0" :to="modules[13].form.title" duration="3500" />
<p class="text">{{ modules[13].form.des }}</p> <p class="text">{{ modules[13].form.des }}</p>
</li> </li>
<li class="wow fadeInRight" data-wow-delay="1.2s"> <li class="wow fadeInRight" data-wow-delay="1.2s">
@ -125,11 +125,16 @@ export default {
mixins: [mixins], mixins: [mixins],
data() { data() {
return { return {
articles: [] articles: [],
} }
}, },
beforeDestroy () {
//
window.removeEventListener('scroll', this.handleScroll)
},
mounted() { mounted() {
new WOW().init() new WOW().init()
window.addEventListener('scroll', this.handleScroll)
}, },
methods: { methods: {
// //
@ -154,6 +159,16 @@ export default {
} }
}).catch(err => {}) }).catch(err => {})
}, },
//
handleScroll () {
let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
if (scrollTop > 6350) {
window.removeEventListener('scroll', this.handleScroll) //
for (let i = 1; i < 5; i++) {
this.$refs['num' + i].start()
}
}
}
} }
}; };
</script> </script>

@ -17,7 +17,7 @@
</template> </template>
</ul> </ul>
<div class="block">{{curColumn}} <div class="block">
<div class="inner" v-if="modules[1].list[curColumn].articles && modules[1].list[curColumn].articles.length"> <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])"> <div class="news-banner wow fadeInDown" data-wow-delay="0.5s" @click="toArtice(curArticle, modules[1].list[curColumn])">
<img width="50%" height="410" :src="curArticle.titleImg" alt="" onerror="javascript:this.src='./images/3.png';"> <img width="50%" height="410" :src="curArticle.titleImg" alt="" onerror="javascript:this.src='./images/3.png';">
@ -398,12 +398,14 @@ export default {
color: #666; color: #666;
} }
.des { .des {
height: 60px;
margin: 10px 0; margin: 10px 0;
font-size: 20px; font-size: 20px;
font-family: SFProDisplay; font-family: SFProDisplay;
font-weight: 500; font-weight: 500;
color: #333; color: #333;
line-height: 28px; line-height: 28px;
-webkit-line-clamp: 2;
} }
.arrow { .arrow {
width: 36px; width: 36px;

@ -15,8 +15,20 @@
<div class="right"> <div class="right">
<img class="pic" src="@/assets/images/publish3.png" alt=""> <img class="pic" src="@/assets/images/publish3.png" alt="">
<div class="texts"> <div class="texts">
<p class="name">出版年份</p> <template v-if="form.periodicalName">
<p class="val">{{ form.publicationYear }}</p> <p class="name">刊物名称</p>
<p class="val">{{ form.periodicalName }}</p>
</template>
<div class="flex">
<div v-if="form.reel" class="m-r-40">
<p class="name"></p>
<p class="val">{{ form.reel }}</p>
</div>
<div v-if="form.documentNumber">
<p class="name">文献号</p>
<p class="val">{{ form.documentNumber }}</p>
</div>
</div>
<p class="name">出版物类型</p> <p class="name">出版物类型</p>
<p class="val">{{ form.publicationTypeId && publicationTypes.find(e => e.id == form.publicationTypeId).name }}</p> <p class="val">{{ form.publicationTypeId && publicationTypes.find(e => e.id == form.publicationTypeId).name }}</p>
<p class="name">DOI</p> <p class="name">DOI</p>

@ -1,15 +1,12 @@
<template> <template>
<div class="wrap"> <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'"> <div class="single-banner">
<template v-for="(item, i) in modules[0].list"> <img class="banner-img" :src="modules[0].form.pic" alt="">
<el-carousel-item v-if="item.pic && item.isEnable" :key="i"> <div class="texts">
<div :class="['banner-item', {'cursor-pointer': isLink(item.link.linkName)}]" @click="openLink(item)"> <h6 class="banner-title">{{ modules[0].form.title }}</h6>
<img :src="item.pic" alt=""> <p class="banner-des">{{ modules[0].form.des }}</p>
<p class="banner-name">{{ item.title }}</p> </div>
</div> </div>
</el-carousel-item>
</template>
</el-carousel>
<div class="block"> <div class="block">
<div class="inner"> <div class="inner">

@ -1,6 +1,6 @@
<template> <template>
<div class="wrap"> <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'"> <el-carousel height="991px" :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"> <template v-for="(item, i) in modules[0].list">
<el-carousel-item v-if="item.pic && item.isEnable" :key="i"> <el-carousel-item v-if="item.pic && item.isEnable" :key="i">
<img :class="[{'cursor-pointer': isLink(item.link.linkName)}]" width="100%" height="959" :src="item.pic" alt="" @click="openLink(item)"> <img :class="[{'cursor-pointer': isLink(item.link.linkName)}]" width="100%" height="959" :src="item.pic" alt="" @click="openLink(item)">
@ -8,14 +8,14 @@
</template> </template>
</el-carousel> </el-carousel>
<div class="block banner-block"> <div class="block banner-block" id="part1">
<div class="inner"> <div class="inner">
<div class="title wow fadeInUp"> <div class="title wow fadeInUp">
<h5> <h5>
{{ modules[1].form.title }} {{ modules[1].form.title }}
<span class="sub">{{ modules[1].form.subTitle }}</span> <span class="sub">{{ modules[1].form.subTitle }}</span>
</h5> </h5>
<span class="more">MORE</span> <span class="more" @click="toAll(modules[2].form)">MORE</span>
</div> </div>
<template v-if="articles.length"> <template v-if="articles.length">
<div class="sfel-banner wow fadeInDown" data-wow-delay="0.5s" @click="toArtice(curArticle, modules[2].form)"> <div class="sfel-banner wow fadeInDown" data-wow-delay="0.5s" @click="toArtice(curArticle, modules[2].form)">
@ -25,9 +25,9 @@
<div class="right"> <div class="right">
<h6>{{ curArticle.title }}</h6> <h6>{{ curArticle.title }}</h6>
<div class="des" v-html="curArticle.mainBody"></div> <div class="des" v-html="curArticle.mainBody"></div>
<p class="meta">{{ curArticle.createTime }} {{ curArticle.author && ' | ' + curArticle.author }}</p> <p class="meta">{{ curArticle.releaseTime }} {{ curArticle.author && ' | ' + curArticle.author }}</p>
<ul class="inds"> <ul class="inds">
<li v-for="i in articles.length > 2 ? 3 : articles.length" :key="i" :class="{active: curInd == i - 1}" @click.stop="switchCarousel(i - 1)"></li> <li v-for="i in articles.length > 3 ? 4 : articles.length" :key="i" :class="{active: curInd == i - 1}" @click.stop="switchCarousel(i - 1)"></li>
</ul> </ul>
</div> </div>
</div> </div>
@ -37,7 +37,7 @@
<li v-if="i > 3 && i < 7" :key="i" class="wow fadeInDown" :data-wow-delay="(0.1 * i).toFixed(1) + 's'"> <li v-if="i > 3 && i < 7" :key="i" class="wow fadeInDown" :data-wow-delay="(0.1 * i).toFixed(1) + 's'">
<img class="pic" :src="item.titleImg" alt=""> <img class="pic" :src="item.titleImg" alt="">
<div class="texts"> <div class="texts">
<p class="meta">{{ item.createTime }} {{ item.author && ' | ' + item.author }}</p> <p class="meta">{{ item.releaseTime }} {{ item.classificationName && ' | ' + item.classificationName }}</p>
<div class="des">{{ item.title }}</div> <div class="des">{{ item.title }}</div>
<img class="arrow" src="@/assets/images/arrow.png" alt="" @click="toArtice(item, modules[2].form)"> <img class="arrow" src="@/assets/images/arrow.png" alt="" @click="toArtice(item, modules[2].form)">
</div> </div>
@ -48,18 +48,18 @@
</div> </div>
</div> </div>
<div class="block notice"> <div class="block notice" id="part2">
<div class="inner lg"> <div class="inner lg">
<div class="title wow fadeInUp"> <div class="title wow fadeInUp">
<h5> <h5>
{{ modules[3].form.title }} {{ modules[3].form.title }}
<span class="sub">{{ modules[3].form.subTitle }}</span> <span class="sub">{{ modules[3].form.subTitle }}</span>
</h5> </h5>
<span class="more">MORE</span> <span class="more" @click="toAll(modules[4].form)">MORE</span>
</div> </div>
<div class="shop-shows" v-if="articles1.length"> <div class="shop-shows" v-if="articles1.length">
<div class="left wow fadeInLeft" data-wow-delay="0.5s"> <div class="left wow fadeInLeft" data-wow-delay="0.5s">
<el-carousel height="432px"> <el-carousel height="405px">
<template v-for="(item, i) in articles1"> <template v-for="(item, i) in articles1">
<el-carousel-item v-if="i < 4" :key="i"> <el-carousel-item v-if="i < 4" :key="i">
<div class="item"> <div class="item">
@ -72,22 +72,22 @@
<div v-if="articles1.length > 4" class="cards" style="margin-top: 18px;"> <div v-if="articles1.length > 4" class="cards" style="margin-top: 18px;">
<h6>{{ articles1[4].title }}</h6> <h6>{{ articles1[4].title }}</h6>
<div class="sum">{{ articles1[4].mainBody }}</div> <div class="sum">{{ articles1[4].mainBody }}</div>
<p class="date">{{ articles1[4].createTime }}</p> <p class="date">{{ articles1[4].releaseTime }}</p>
</div> </div>
<div class="card-wrap"> <div class="card-wrap">
<div v-if="articles1.length > 5" class="cards" style="margin-right: 18px"> <div v-if="articles1.length > 5" class="cards" style="margin-right: 18px">
<h6>{{ articles1[5].title }}</h6> <h6>{{ articles1[5].title }}</h6>
<p class="date">{{ articles1[5].createTime }}</p> <p class="date">{{ articles1[5].releaseTime }}</p>
</div> </div>
<div v-if="articles1.length > 6" class="cards"> <div v-if="articles1.length > 6" class="cards">
<h6>{{ articles1[6].title }}</h6> <h6>{{ articles1[6].title }}</h6>
<p class="date">{{ articles1[6].createTime }}</p> <p class="date">{{ articles1[6].releaseTime }}</p>
</div> </div>
</div> </div>
</div> </div>
<div v-if="articles1.length > 7" class="right wow fadeInRight" data-wow-delay="0.5s"> <div v-if="articles1.length > 7" class="right wow fadeInRight" data-wow-delay="0.5s">
<ul class="card-list"> <ul class="card-list">
<template v-for="(item, i) in articles"> <template v-for="(item, i) in articles1">
<li v-if="i > 6 && i < 10" :key="i"> <li v-if="i > 6 && i < 10" :key="i">
<img class="pic" :src="item.titleImg" alt=""> <img class="pic" :src="item.titleImg" alt="">
<div class="texts"> <div class="texts">
@ -106,14 +106,14 @@
</div> </div>
</div> </div>
<div class="block conference"> <div class="block conference" id="part3">
<div class="inner lg"> <div class="inner lg">
<div class="title wow fadeInUp"> <div class="title wow fadeInUp">
<h5> <h5>
{{ modules[5].form.title }} {{ modules[5].form.title }}
<span class="sub">{{ modules[5].form.subTitle }}</span> <span class="sub">{{ modules[5].form.subTitle }}</span>
</h5> </h5>
<span class="more">MORE</span> <span class="more" @click="toAll(modules[6].form)">MORE</span>
</div> </div>
<div class="shows" v-if="articles2.length"> <div class="shows" v-if="articles2.length">
<div class="left wow fadeInLeft" data-wow-delay="0.5s" @click="toArtice(articles2[0], modules[6].form)"> <div class="left wow fadeInLeft" data-wow-delay="0.5s" @click="toArtice(articles2[0], modules[6].form)">
@ -126,18 +126,18 @@
<img class="pic" :src="item.titleImg" alt=""> <img class="pic" :src="item.titleImg" alt="">
<div class="texts"> <div class="texts">
<h6>{{ item.title }}</h6> <h6>{{ item.title }}</h6>
<p class="sum">{{ item.summary }}</p> <p class="sum">{{ item.mainBody }}</p>
<p v-if="item.keynoteSpeaker" class="text"> <p v-if="item.keynoteSpeaker" class="text">
<img class="icon" src="@/assets/images/mine.png" alt=""> <img class="icon" src="@/assets/images/mine.png" alt="">
{{ item.keynoteSpeaker }} {{ item.keynoteSpeaker }}
</p> </p>
<p v-if="item.activityStartTime" class="text"> <p v-if="item.activityStartTime" class="text">
<img class="icon" src="@/assets/images/time.png" alt=""> <img class="icon" src="@/assets/images/time.png" alt="">
Time: {{ item.activityStartTime + ' ~ ' + item.activityEndTime }} 会议时间: {{ item.activityStartTime + ' ~ ' + item.activityEndTime }}
</p> </p>
<p v-if="item.onlineLocation" class="text"> <p v-if="item.offlineLocation" class="text">
<img class="icon" src="@/assets/images/online.png" alt=""> <img class="icon" src="@/assets/images/location.png" alt="">
Address: {{ item.onlineLocation }} {{ item.offlineLocation }}
</p> </p>
</div> </div>
</li> </li>
@ -147,14 +147,14 @@
</div> </div>
</div> </div>
<div class="block media"> <div class="block media" id="part4">
<div class="inner"> <div class="inner">
<div class="title wow fadeInUp"> <div class="title wow fadeInUp">
<h5> <h5>
{{ modules[7].form.title }} {{ modules[7].form.title }}
<span class="sub">{{ modules[7].form.subTitle }}</span> <span class="sub">{{ modules[7].form.subTitle }}</span>
</h5> </h5>
<span class="more">MORE</span> <span class="more" @click="toAll(modules[8].form)">MORE</span>
</div> </div>
<div v-if="articles3.length" class="media-wrap"> <div v-if="articles3.length" class="media-wrap">
<div class="left"> <div class="left">
@ -190,14 +190,14 @@
</div> </div>
</div> </div>
<div class="block news"> <div class="block news" id="part5">
<div class="inner"> <div class="inner">
<div class="title wow fadeInUp"> <div class="title wow fadeInUp">
<h5> <h5>
{{ modules[9].form.title }} {{ modules[9].form.title }}
<span class="sub">{{ modules[9].form.subTitle }}</span> <span class="sub">{{ modules[9].form.subTitle }}</span>
</h5> </h5>
<span class="more">MORE</span> <span class="more" @click="toAll(modules[10].form)">MORE</span>
</div> </div>
<ul class="news"> <ul class="news">
<li v-for="(item, i) in modules[10].list" :key="i" class="wow fadeInDown" :data-wow-delay="(0.2 * i).toFixed(1) + 's'" :class="{'cursor-pointer': item.link.linkName !== '无'}" @click="openLink(item)"> <li v-for="(item, i) in modules[10].list" :key="i" class="wow fadeInDown" :data-wow-delay="(0.2 * i).toFixed(1) + 's'" :class="{'cursor-pointer': item.link.linkName !== '无'}" @click="openLink(item)">
@ -211,21 +211,21 @@
</div> </div>
</div> </div>
<div class="block program"> <div class="block program" id="part6">
<div class="inner"> <div class="inner">
<div class="title wow fadeInUp"> <div class="title wow fadeInUp">
<h5> <h5>
{{ modules[11].form.subTitle }} {{ modules[11].form.title }}
<span class="sub">{{ modules[11].form.subTitle }}</span> <span class="sub">{{ modules[11].form.subTitle }}</span>
</h5> </h5>
<span class="more">MORE</span> <span class="more" @click="toAll(modules[12].form)">MORE</span>
</div> </div>
<template v-if="articles4.length"> <template v-if="articles4.length">
<div class="slide"> <div class="slide">
<div class="texts"> <div class="texts">
<h6>{{ articles4[0].title }}</h6> <h6>{{ articles4[0].title }}</h6>
<div class="des">{{ articles4[0].title }}</div> <div class="des">{{ articles4[0].mainBody }}</div>
<div class="meta">发表日期{{ articles4[0].createTime }} &emsp;浏览量{{ articles4[0].totalBrowsing }}</div> <div class="meta">发表日期{{ articles4[0].releaseTime }} &emsp;浏览量{{ articles4[0].totalBrowsing }}</div>
</div> </div>
<div class="img-wrap"> <div class="img-wrap">
<img class="pic" :src="articles4[0].titleImg" alt=""> <img class="pic" :src="articles4[0].titleImg" alt="">
@ -235,7 +235,7 @@
<template v-for="(item, i) in articles3"> <template v-for="(item, i) in articles3">
<li v-if="i && i < 4" :key="i" class="wow fadeInDown" :data-wow-delay="(0.1 * i).toFixed(1) + 's'"> <li v-if="i && i < 4" :key="i" class="wow fadeInDown" :data-wow-delay="(0.1 * i).toFixed(1) + 's'">
<div class="des">{{ item.title }}</div> <div class="des">{{ item.title }}</div>
<p class="date">{{ item.createTime }}</p> <p class="date">{{ item.releaseTime }}</p>
</li> </li>
</template> </template>
</ul> </ul>
@ -248,7 +248,7 @@
<img src="@/assets/images/logo.png" alt=""> <img src="@/assets/images/logo.png" alt="">
</div> </div>
<ul class="nav"> <ul class="nav">
<li v-for="(item, i) in columns" :key="i" class="column">{{ item.columnName }}</li> <li v-for="(item, i) in navs" :key="i" class="column" @click="toAnchor(item)">{{ item.name }}</li>
</ul> </ul>
</div> </div>
</div> </div>
@ -263,7 +263,7 @@ export default {
mixins: [mixins], mixins: [mixins],
data() { data() {
return { return {
columns: [], navs: [],
articles: [], articles: [],
articles1: [], articles1: [],
articles2: [], articles2: [],
@ -321,6 +321,17 @@ export default {
}).catch(err => {}) }).catch(err => {})
} }
//
const navs = []
let id = 0
json.forEach((e, i) => {
if (i % 2 && e.form.title) navs.push({
id: ++id,
name: e.form.title
})
})
this.navs = navs
this.modules = json this.modules = json
this.carouselInterval() this.carouselInterval()
} }
@ -342,6 +353,11 @@ export default {
this.curArticle = this.articles[this.curInd] || {} this.curArticle = this.articles[this.curInd] || {}
} }
}, },
//
toAnchor(e) {
const el = document.querySelector(`#part${e.id}`)
el && el.scrollIntoView()
}
} }
}; };
</script> </script>
@ -457,6 +473,7 @@ export default {
box-shadow: 0px 0px 20px 0px rgba(176,176,176,0.21); box-shadow: 0px 0px 20px 0px rgba(176,176,176,0.21);
border-radius: 6px; border-radius: 6px;
transition: .3s; transition: .3s;
background-color: #fff;
&:hover { &:hover {
transform: scale(1.05); transform: scale(1.05);
} }
@ -466,7 +483,7 @@ export default {
} }
.pic { .pic {
width: 100%; width: 100%;
height: 240px; height: 259px;
} }
.texts { .texts {
padding: 40px 30px; padding: 40px 30px;
@ -476,12 +493,14 @@ export default {
color: #666; color: #666;
} }
.des { .des {
height: 60px;
margin: 10px 0; margin: 10px 0;
font-size: 20px; font-size: 20px;
font-family: SFProDisplay; font-family: SFProDisplay;
font-weight: 500; font-weight: 500;
color: #333; color: #333;
line-height: 28px; line-height: 28px;
-webkit-line-clamp: 2;
} }
.arrow { .arrow {
width: 36px; width: 36px;
@ -544,7 +563,7 @@ export default {
.sum { .sum {
font-size: 14px; font-size: 14px;
color: #6D7C8E; color: #6D7C8E;
@include mul-ellipsis(2); @include ellipsis;
} }
.date { .date {
margin-top: 24px; margin-top: 24px;
@ -570,7 +589,7 @@ export default {
li { li {
display: flex; display: flex;
align-items: center; align-items: center;
padding: 24px; padding: 20px;
margin-bottom: 18px; margin-bottom: 18px;
background-color: #fff; background-color: #fff;
transition: .3s; transition: .3s;
@ -579,8 +598,8 @@ export default {
} }
} }
.pic { .pic {
width: 116px; width: 124px;
height: 85px; height: 92px;
margin-right: 28px; margin-right: 28px;
} }
.texts { .texts {
@ -593,6 +612,7 @@ export default {
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #1583FF; color: #1583FF;
@include ellipsis;
} }
.des { .des {
font-size: 16px; font-size: 16px;
@ -638,7 +658,7 @@ export default {
.left { .left {
position: relative; position: relative;
width: 688px; width: 688px;
height: 688px; height: 690px;
margin-right: 20px; margin-right: 20px;
cursor: pointer; cursor: pointer;
overflow: hidden; overflow: hidden;
@ -686,16 +706,20 @@ export default {
height: 188px; height: 188px;
margin-right: 36px; margin-right: 36px;
} }
.texts {
width: 530px;
}
h6 { h6 {
margin-bottom: 10px; margin-bottom: 10px;
font-size: 20px; font-size: 20px;
color: #333; color: #333;
@include mul-ellipsis(2); @include ellipsis;
} }
.sum { .sum {
margin-bottom: 15px;
font-size: 16px; font-size: 16px;
color: #666; color: #666;
@include mul-ellipsis(2); @include ellipsis;
} }
.text { .text {
display: flex; display: flex;
@ -753,6 +777,7 @@ export default {
background: #fff; background: #fff;
box-shadow: 0px 0px 30px 0px rgba(48,48,48,0.08); box-shadow: 0px 0px 30px 0px rgba(48,48,48,0.08);
li { li {
height: 78px;
margin-bottom: 41px; margin-bottom: 41px;
transition: .5s; transition: .5s;
&:last-child { &:last-child {
@ -770,10 +795,12 @@ export default {
color: #272727; color: #272727;
line-height: 20px; line-height: 20px;
text-shadow: 0px 0px 30px rgba(48,48,48,0.08); text-shadow: 0px 0px 30px rgba(48,48,48,0.08);
@include ellipsis;
} }
.des { .des {
font-size: 14px; font-size: 14px;
color: #666; color: #666;
-webkit-line-clamp: 2;
} }
} }
} }
@ -801,11 +828,13 @@ export default {
color: #272727; color: #272727;
line-height: 39px; line-height: 39px;
text-shadow: 0px 0px 30px rgba(48,48,48,0.08); text-shadow: 0px 0px 30px rgba(48,48,48,0.08);
@include ellipsis;
} }
.des { .des {
margin-top: 16px; margin-top: 16px;
font-size: 16px; font-size: 16px;
color: #666; color: #666;
-webkit-line-clamp: 2;
} }
&:hover { &:hover {
background: #005388; background: #005388;
@ -913,6 +942,7 @@ export default {
display: flex; display: flex;
li { li {
width: calc((100% - 44px) / 3); width: calc((100% - 44px) / 3);
height: 204px;
padding: 36px 22px; padding: 36px 22px;
margin-right: 14px; margin-right: 14px;
background: url(../../assets/images/sfel/7.png) 0 0/cover no-repeat; background: url(../../assets/images/sfel/7.png) 0 0/cover no-repeat;
@ -929,6 +959,7 @@ export default {
} }
} }
.des { .des {
height: 90px;
margin-bottom: 30px; margin-bottom: 30px;
font-size: 18px; font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Medium, PingFang SC;
@ -944,21 +975,22 @@ export default {
} }
} }
.tools { .tools {
position: absolute; z-index: 10;
top: 600px; position: fixed;
top: 200px;
left: 0; left: 0;
width: 226px; width: 180px;
text-align: center; text-align: center;
.logo { .logo {
padding: 44px 0; padding: 15px 0;
background: #0C60BE; background: #0C60BE;
box-shadow: 0px 0px 20px 0px rgba(184,191,200,0.3); box-shadow: 0px 0px 20px 0px rgba(184,191,200,0.3);
} }
.nav { .nav {
li { li {
padding: 0 10px; padding: 0 10px;
font-size: 24px; font-size: 16px;
line-height: 83px; line-height: 50px;
color: #fff; color: #fff;
background-color: #1D1D1D; background-color: #1D1D1D;
cursor: pointer; cursor: pointer;
@ -966,6 +998,9 @@ export default {
&.active { &.active {
background-color: #1583FF; background-color: #1583FF;
} }
&:hover {
background-color: #1583FF;
}
} }
} }
} }

@ -1,15 +1,12 @@
<template> <template>
<div class="wrap"> <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'"> <div class="single-banner">
<template v-for="(item, i) in modules[0].list"> <img class="banner-img" :src="modules[0].form.pic" alt="">
<el-carousel-item v-if="item.pic && item.isEnable" :key="i"> <div class="texts">
<div :class="['banner-item', {'cursor-pointer': isLink(item.link.linkName)}]" @click="openLink(item)"> <h6 class="banner-title">{{ modules[0].form.title }}</h6>
<img :src="item.pic" alt=""> <p class="banner-des">{{ modules[0].form.des }}</p>
<p class="banner-name">{{ item.title }}</p> </div>
</div> </div>
</el-carousel-item>
</template>
</el-carousel>
<div class="block talent"> <div class="block talent">
<div class="inner"> <div class="inner">
@ -41,7 +38,7 @@
<el-carousel-item v-if="item.isEnable" :key="i"> <el-carousel-item v-if="item.isEnable" :key="i">
<div class="item" @click="openLink(item)"> <div class="item" @click="openLink(item)">
<img :src="item.pic" alt=""> <img :src="item.pic" alt="">
<p class="text">{{ item.des }}</p> <p class="text">{{ item.title }}</p>
</div> </div>
</el-carousel-item> </el-carousel-item>
</template> </template>
@ -170,6 +167,7 @@ export default {
.des { .des {
font-size: 18px; font-size: 18px;
line-height: 33px; line-height: 33px;
-webkit-line-clamp: 8;
} }
} }
.style { .style {
@ -192,7 +190,7 @@ export default {
} }
.text { .text {
position: absolute; position: absolute;
bottom: 45px; bottom: 0;
left: 0; left: 0;
width: 100%; width: 100%;
padding: 0 30px; padding: 0 30px;

@ -1,15 +1,12 @@
<template> <template>
<div class="wrap"> <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'"> <div class="single-banner">
<template v-for="(item, i) in modules[0].list"> <img class="banner-img" :src="modules[0].form.pic" alt="">
<el-carousel-item v-if="item.pic && item.isEnable" :key="i"> <div class="texts">
<div :class="['banner-item', {'cursor-pointer': isLink(item.link.linkName)}]" @click="openLink(item)"> <h6 class="banner-title">{{ modules[0].form.title }}</h6>
<img :src="item.pic" alt=""> <p class="banner-des">{{ modules[0].form.des }}</p>
<p class="banner-name">{{ item.title }}</p> </div>
</div> </div>
</el-carousel-item>
</template>
</el-carousel>
<div class="block share"> <div class="block share">
<div class="inner"> <div class="inner">

@ -1,23 +0,0 @@
import BasicLayout from '@/layouts/home'
const name = 'device'
export default {
path: `/${name}`,
component: BasicLayout,
children: [
{
path: `beam`,
component: () => import(`@/pages/${name}/beam`),
meta: { title: '' }
},
{
path: `layout`,
component: () => import(`@/pages/${name}/layout`),
meta: { title: '' }
},
{
path: `super`,
component: () => import(`@/pages/${name}/super`),
meta: { title: '' }
}
]
};

@ -0,0 +1,14 @@
import BasicLayout from '@/layouts/home'
const name = 'deviceIntroBeam'
export default {
path: `/${name}`,
component: BasicLayout,
children: [
{
name,
path: `/${name}`,
component: () => import(`@/pages/${name}`),
meta: { title: '' }
}
]
};

@ -0,0 +1,14 @@
import BasicLayout from '@/layouts/home'
const name = 'deviceIntroLayout'
export default {
path: `/${name}`,
component: BasicLayout,
children: [
{
name,
path: `/${name}`,
component: () => import(`@/pages/${name}`),
meta: { title: '' }
}
]
};

@ -0,0 +1,14 @@
import BasicLayout from '@/layouts/home'
const name = 'deviceIntroLinear'
export default {
path: `/${name}`,
component: BasicLayout,
children: [
{
name,
path: `/${name}`,
component: () => import(`@/pages/${name}`),
meta: { title: '' }
}
]
};

@ -0,0 +1,14 @@
import BasicLayout from '@/layouts/home'
const name = 'survey'
export default {
path: `/${name}`,
component: BasicLayout,
children: [
{
name,
path: `/${name}`,
component: () => import(`@/pages/${name}`),
meta: { title: '' }
}
]
};

@ -4,7 +4,7 @@
const isDev = process.env.NODE_ENV === 'development' // 开发环境 const isDev = process.env.NODE_ENV === 'development' // 开发环境
let host = `${location.origin}/` let host = `${location.origin}/`
if (isDev) { if (isDev) {
host = 'http://192.168.31.51:10000/' host = 'http://192.168.31.151:10000/'
} }
const Setting = { const Setting = {

@ -61,6 +61,28 @@
cursor: pointer; cursor: pointer;
} }
} }
.single-banner {
position: relative;
color: #fff;
.banner-img {
width: 100%;
height: 480px;
}
.texts {
position: absolute;
top: 160px;
left: 267px;
}
.banner-title {
margin-bottom: 19px;
font-size: 48px;
font-family: PingFangSC-Medium, PingFang SC;
}
.banner-des {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
}
}
.des { .des {
@include mul-ellipsis(3); @include mul-ellipsis(3);
} }

Loading…
Cancel
Save