yujialong 2 years ago
parent 68a6508565
commit a914b55950
  1. BIN
      src/assets/images/logo2.png
  2. 8
      src/layouts/footer/index.vue
  3. 7
      src/layouts/header/index.vue
  4. 1
      src/layouts/navbar/index.vue
  5. 1
      src/libs/util.js
  6. 34
      src/mixins/page/index.js
  7. 2
      src/pages/application/index.vue
  8. 14
      src/pages/article/activity.vue
  9. 9
      src/pages/article/index.vue
  10. 12
      src/pages/column/index.vue
  11. 50
      src/pages/deviceIntroLayout/index.vue
  12. 2
      src/pages/home/index.vue
  13. 11
      src/pages/news/index.vue
  14. 99
      src/pages/overviewLocation/index.vue
  15. 24
      src/pages/overviewTrailer/index.vue
  16. 71
      src/pages/publish/show.vue
  17. 112
      src/pages/sfel/index.vue
  18. 2
      src/router/modules/overviewLocation.js
  19. 2
      src/router/modules/overviewTrailer.js
  20. 4
      src/styles/page/page.scss

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<div v-if="!showContactPath.includes($route.path)" class="footer"> <div v-if="showDefaultPath.includes($route.path)" class="footer">
<div class="info"> <div class="info">
<div style="margin-right: 100px"> <div style="margin-right: 100px">
<img class="m-b-20" src="@/assets/images/iasf.png" alt=""> <img class="m-b-20" src="@/assets/images/iasf.png" alt="">
@ -18,7 +18,7 @@
<a class="copyright">粤ICP备2020131940号 粤公安网34565432456765432号</a> <a class="copyright">粤ICP备2020131940号 粤公安网34565432456765432号</a>
</div> </div>
<div v-else class="contact"> <div v-if="showContactPath.includes($route.path)" class="contact">
<div class="inner"> <div class="inner">
<div class="title"> <div class="title">
<h6>Contact us</h6> <h6>Contact us</h6>
@ -55,13 +55,13 @@
</div> </div>
</template> </template>
<script> <script>
import Setting from '@/setting'
import mixins from '@/mixins/article' import mixins from '@/mixins/article'
export default { export default {
mixins: [mixins], mixins: [mixins],
data() { data() {
return { return {
showContactPath: ['/news', '/sfel'], showDefaultPath: ['/home'], //
showContactPath: ['/news', '/sfel', '/talent', '/about', '/careers', '/edu', '/news'], //
columns: [], columns: [],
}; };
}, },

@ -2,11 +2,7 @@
<div :class="['header', { channel: isHome }]"> <div :class="['header', { channel: isHome }]">
<a class="logo" @click="toIndex"> <a class="logo" @click="toIndex">
<img v-if="isHome" src="@/assets/images/logo.png" alt=""> <img v-if="isHome" src="@/assets/images/logo.png" alt="">
<template v-else> <img v-else src="@/assets/images/logo-black.png" alt="">
<img src="@/assets/images/logo-black.png" alt="">
<!-- <img src="@/assets/images/logo1.png" alt="">
深圳中能高重复自由电子激光 -->
</template>
</a> </a>
<navbar ref="nav" :isHome.sync="isHome"></navbar> <navbar ref="nav" :isHome.sync="isHome"></navbar>
<div class="tools"> <div class="tools">
@ -23,7 +19,6 @@
</template> </template>
<script> <script>
import { mapMutations } from 'vuex' import { mapMutations } from 'vuex'
import Setting from '@/setting'
import navbar from '../navbar' import navbar from '../navbar'
export default { export default {
data() { data() {

@ -7,7 +7,6 @@
</template> </template>
<script> <script>
import Setting from '@/setting'
import menuTree from '@/components/menuTree' import menuTree from '@/components/menuTree'
import mixins from '@/mixins/article' import mixins from '@/mixins/article'
import { mapState, mapMutations } from 'vuex' import { mapState, mapMutations } from 'vuex'

@ -113,6 +113,7 @@ const util = {
list.map(e => { list.map(e => {
// 有摘要取摘要,没有摘要就去掉正文里的标签空格 // 有摘要取摘要,没有摘要就去掉正文里的标签空格
e.mainBody = e.summary || e[prop].replace(/(<p class="img-des">[^>]+<\/p>)|(<[^>]+>)|((&nbsp;)+)/g , '') e.mainBody = e.summary || e[prop].replace(/(<p class="img-des">[^>]+<\/p>)|(<[^>]+>)|((&nbsp;)+)/g , '')
e.releaseTime = e.releaseTime.split(' ')[0]
}) })
return list return list
}, },

@ -11,41 +11,9 @@ export default {
} }
}, },
mounted() { mounted() {
this.getInfo() 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

@ -63,7 +63,7 @@
<div class="texts"> <div class="texts">
<h6>{{ item.title }}</h6> <h6>{{ item.title }}</h6>
<div class="des" v-html="item.mainBody"></div> <div class="des" v-html="item.mainBody"></div>
<span class="meta">{{ item.createTime }}</span> <span class="meta">{{ item.releaseTime }}</span>
</div> </div>
</li> </li>
</ul> </ul>

@ -30,7 +30,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>
@ -38,7 +38,7 @@
<ul class="list"> <ul class="list">
<li v-for="(item, i) in news" :key="i" @click="toArtice(item)"> <li v-for="(item, i) in news" :key="i" @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>
@ -75,7 +75,7 @@ export default {
}, },
watch: { watch: {
'$route'() { '$route'() {
this.id = this.$route.query.id this.id = this.$route.query.articleId
this.getInfo() this.getInfo()
} }
}, },
@ -124,19 +124,19 @@ export default {
}, },
// //
getColumn() { getColumn() {
this.$post(this.api.listWithTree, { this.$post(this.api.listWithTreeMenuVisible, {
siteId: this.$route.query.siteId || this.$store.state.content.site, siteId: this.$route.query.siteId || this.$store.state.content.site,
columnName: '', columnName: '',
templateId: '', templateId: '',
typeId : '', typeId : '',
isSort: 0 isSort: 1
}).then(({ data }) => { }).then(({ data }) => {
this.columns = data this.columns = data
this.getInfo() this.getInfo()
}).catch(err => {}) }).catch(err => {})
this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => { this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => {
this.hots = data this.hots = Util.removeTag(data)
}).catch(err => {}) }).catch(err => {})
}, },
// //
@ -146,7 +146,7 @@ export default {
pageSize: 5, pageSize: 5,
siteId: this.$route.query.siteId || this.$store.state.content.site siteId: this.$route.query.siteId || this.$store.state.content.site
}).then(({ data }) => { }).then(({ data }) => {
this.news = data.records this.news = Util.removeTag(data.records)
}).catch(res => {}) }).catch(res => {})
}, },
// //

@ -75,7 +75,7 @@ export default {
}, },
watch: { watch: {
'$route'() { '$route'() {
this.id = this.$route.query.id this.id = this.$route.query.articleId
this.getInfo() this.getInfo()
} }
}, },
@ -110,6 +110,7 @@ export default {
if (temId === 25 || temId === 26) { // / if (temId === 25 || temId === 26) { // /
this.$router.replace((temId === 25 ? '/article/activity' : '/publish/show') + path) this.$router.replace((temId === 25 ? '/article/activity' : '/publish/show') + path)
} else { } else {
data.releaseTime = data.releaseTime.split(' ')[0]
this.form = data this.form = data
this.columnId = data.columnId this.columnId = data.columnId
// banner // banner
@ -138,7 +139,7 @@ export default {
}, },
// //
getColumn() { getColumn() {
this.$post(this.api.listWithTree, { this.$post(this.api.listWithTreeMenuVisible, {
siteId: this.$route.query.siteId || this.$store.state.content.site, siteId: this.$route.query.siteId || this.$store.state.content.site,
columnName: '', columnName: '',
templateId: '', templateId: '',
@ -150,7 +151,7 @@ export default {
}).catch(err => {}) }).catch(err => {})
this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => { this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => {
this.hots = data this.hots = Util.removeTag(data)
}).catch(err => {}) }).catch(err => {})
}, },
// //
@ -160,7 +161,7 @@ export default {
pageSize: 5, pageSize: 5,
siteId: this.$route.query.siteId || this.$store.state.content.site siteId: this.$route.query.siteId || this.$store.state.content.site
}).then(({ data }) => { }).then(({ data }) => {
this.news = data.records this.news = Util.removeTag(data.records)
}).catch(res => {}) }).catch(res => {})
}, },
// //

@ -74,10 +74,10 @@
<p v-if="(item.listStyleId === 10 || item.listStyleId === 15) && item.classificationName" class="type">{{ item.classificationName }}</p> <p v-if="(item.listStyleId === 10 || item.listStyleId === 15) && item.classificationName" class="type">{{ item.classificationName }}</p>
<h6>{{ item.title }}</h6> <h6>{{ item.title }}</h6>
<template v-if="item.listStyleId === 11"> <template v-if="item.listStyleId === 11">
<span class="meta">{{ item.updateTime }}</span> <span class="meta">{{ item.releaseTime }}</span>
<div class="des" v-html="item.mainBody"></div> <div class="des" v-html="item.mainBody"></div>
</template> </template>
<span v-if="item.listStyleId === 10" class="meta">{{ item.updateTime }} {{ item.labelName && ' | ' + item.labelName }}</span> <span v-if="item.listStyleId === 10" class="meta">{{ item.releaseTime }} {{ item.labelName && ' | ' + item.labelName }}</span>
<template v-if="item.listStyleId === 15 || item.listStyleId === 16"> <template v-if="item.listStyleId === 15 || item.listStyleId === 16">
<div v-if="item.keynoteSpeaker" class="meta m-b-10"><img class="icon" src="@/assets/images/mine.png" alt=""> {{ item.keynoteSpeaker }}</div> <div v-if="item.keynoteSpeaker" class="meta m-b-10"><img class="icon" src="@/assets/images/mine.png" alt=""> {{ item.keynoteSpeaker }}</div>
<div v-if="item.activityStartTime" class="meta m-b-10"><img class="icon" src="@/assets/images/time.png" alt=""> {{ item.activityStartTime + ' ~ ' + item.activityEndTime }}</div> <div v-if="item.activityStartTime" class="meta m-b-10"><img class="icon" src="@/assets/images/time.png" alt=""> {{ item.activityStartTime + ' ~ ' + item.activityEndTime }}</div>
@ -99,7 +99,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>
@ -107,7 +107,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 class="shadow"></div> <div class="shadow"></div>
@ -315,7 +315,7 @@ export default {
}).catch(err => {}) }).catch(err => {})
this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => { this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => {
this.hots = data this.hots = Util.removeTag(data)
}).catch(err => {}) }).catch(err => {})
}, },
// //
@ -325,7 +325,7 @@ export default {
pageSize: 5, pageSize: 5,
siteId: this.$route.query.siteId || this.$store.state.content.site siteId: this.$route.query.siteId || this.$store.state.content.site
}).then(({ data }) => { }).then(({ data }) => {
this.news = data.records this.news = Util.removeTag(data.records)
}).catch(res => {}) }).catch(res => {})
}, },
// //

@ -30,9 +30,6 @@
<script> <script>
import mixins from '@/mixins/page' import mixins from '@/mixins/page'
import Setting from '@/setting'
import Util from '@/libs/util'
import Breadcrumb from '@/components/breadcrumb'
import WOW from 'wow.js' import WOW from 'wow.js'
export default { export default {
mixins: [mixins], mixins: [mixins],
@ -41,56 +38,11 @@ export default {
routes: [] routes: []
} }
}, },
components: {
Breadcrumb
},
mounted() { mounted() {
new WOW().init() new WOW().init()
this.getColumn()
}, },
methods: { methods: {
//
getInfo() {
// /
this.$post(`${this.api[this.preview ? 'getRedisCache' : 'findPage']}?columnId=${this.id}`).then(({ data }) => {
if (data.length) {
// state1theEditedJson稿0jsonBeforeEditing
const json = JSON.parse(this.preview ?
data :
data[data.length - 1][data[data.length - 1].state ? 'theEditedJson' : 'jsonBeforeEditing'])
this.modules = json
console.log("🚀 ~ file: index.vue ~ line 180 ~ this.$post ~ json", json)
}
}).catch(err => {})
},
// id
getParent(data, id) {
for (const e of data) {
if (e.id == id) {
this.routes.push({
name: e.columnName,
query: {
id: e.id
}
})
break
} else if (e.children.length) {
this.routes.push({
name: e.columnName,
query: {
id: e.id
}
})
this.getParent(e.children, id)
}
}
},
//
getColumn() {
this.$post(`${this.api.oneLevelChecksThemAll}?id=${this.id}`).then(({ data }) => {
this.getParent(data, this.id)
}).catch(err => {})
},
} }
}; };
</script> </script>

@ -43,7 +43,7 @@
<div class="texts"> <div class="texts">
<h6>{{ item.title }}</h6> <h6>{{ item.title }}</h6>
<div class="des" v-html="item.mainBody"></div> <div class="des" v-html="item.mainBody"></div>
<span class="meta">{{ item.createTime }}</span> <span class="meta">{{ item.releaseTime }}</span>
</div> </div>
</li> </li>
</ul> </ul>

@ -24,7 +24,7 @@
<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 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> <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> </ul>
@ -36,7 +36,7 @@
<li v-if="i > 2" :key="i" class="wow fadeInDown" :data-wow-delay="(0.1 * i).toFixed(1) + 's'"> <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=""> <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.author && ' | ' + item.author }}</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[1].list[curColumn])"> <img class="arrow" src="@/assets/images/arrow.png" alt="" @click="toArtice(item, modules[1].list[curColumn])">
</div> </div>
@ -63,11 +63,11 @@
<ul class="show-card"> <ul class="show-card">
<li v-if="articles[1]" @click="toArtice(articles[1], modules[3].form)"> <li v-if="articles[1]" @click="toArtice(articles[1], modules[3].form)">
<img class="pic" :src="articles[1].titleImg" alt=""> <img class="pic" :src="articles[1].titleImg" alt="">
<div class="des">{{ articles[1].title }}</div> <div class="text">{{ articles[1].title }}</div>
</li> </li>
<li v-if="articles[2]" @click="toArtice(articles[2], modules[3].form)"> <li v-if="articles[2]" @click="toArtice(articles[2], modules[3].form)">
<img class="pic" :src="articles[2].titleImg" alt=""> <img class="pic" :src="articles[2].titleImg" alt="">
<div class="des">{{ articles[2].title }}</div> <div class="text">{{ articles[2].title }}</div>
</li> </li>
</ul> </ul>
<ul class="card-list"> <ul class="card-list">
@ -474,7 +474,7 @@ export default {
transform: scale(1.05); transform: scale(1.05);
} }
} }
.des { .text {
position: absolute; position: absolute;
bottom: 0; bottom: 0;
left: 0; left: 0;
@ -483,6 +483,7 @@ export default {
color: #fff; color: #fff;
line-height: 48px; line-height: 48px;
text-align: center; text-align: center;
@include ellipsis;
background: rgba(0,0,0,0.49); background: rgba(0,0,0,0.49);
box-shadow: 0px 0px 30px 0px rgba(48,48,48,0.08); box-shadow: 0px 0px 30px 0px rgba(48,48,48,0.08);
} }

@ -0,0 +1,99 @@
<template>
<div class="wrap">
<div class="single-banner single-banner-overview">
<img class="banner-img" :src="modules[0].form.pic" alt="">
<div class="texts">
<h6 class="banner-title">{{ modules[0].form.title }}</h6>
</div>
</div>
<ul class="tabs wow fadeInLeft">
<template v-for="(item, i) in tabs">
<li :class="{active: i == active}" :key="i" @click="tabChange(i)">{{ item }}</li>
</template>
</ul>
<div class="tab-content">
<div v-html="modules[1].form.des"></div>
</div>
</div>
</template>
<script>
import mixins from '@/mixins/page'
import WOW from 'wow.js'
export default {
mixins: [mixins],
data() {
return {
active: 3,
tabs: ['S³FEL介绍', '发展历程', 'S³FEL宣传片', '地理位置', '机构设置']
}
},
mounted() {
new WOW().init()
},
methods: {
//
getInfo() {
// /
this.$post(`${this.api[this.preview ? 'getRedisCache' : 'findPage']}?columnId=${this.id}`).then(({ data }) => {
if (data.length) {
// state1theEditedJson稿0jsonBeforeEditing
const json = JSON.parse(this.preview ?
data :
data[data.length - 1][data[data.length - 1].state ? 'theEditedJson' : 'jsonBeforeEditing'])
this.modules = json
console.log("🚀 ~ file: index.vue ~ line 180 ~ this.$post ~ json", json)
}
}).catch(err => {})
},
// tab
tabChange(i) {
this.active = i
if (i == 2) this.$router.push('/overviewTrailer?id=165&siteId=3')
},
}
};
</script>
<style lang="scss" scoped>
@import url(../../plugins/wow/animate.css);
@import "../../styles/page/page.scss";
.wrap {
background: url(../../assets/images/survey1.png) (0 559px)/auto no-repeat,
url(../../assets/images/survey2.png) (bottom right)/auto no-repeat;
}
.tabs {
display: flex;
justify-content: center;
box-shadow: 0px 2px 10px 0px rgba(223,223,223,0.28);
li {
padding: 25px 19px;
margin: 0 10px;
font-size: 22px;
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;
}
}
}
.tab-content {
width: 1000px;
padding: 77px 0;
margin: 0 auto;
}
.video {
width: 100%;
margin-bottom: 55px;
}
.text {
font-size: 18px;
color: #020202;
line-height: 32px;
}
</style>

@ -1,15 +1,11 @@
<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 single-banner-overview">
<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=""> </div>
<p class="banner-name">{{ item.title }}</p>
</div> </div>
</el-carousel-item>
</template>
</el-carousel>
<ul class="tabs wow fadeInLeft"> <ul class="tabs wow fadeInLeft">
<template v-for="(item, i) in tabs"> <template v-for="(item, i) in tabs">
@ -19,21 +15,18 @@
<div class="tab-content"> <div class="tab-content">
<template v-if="active === 2"> <template v-if="active === 2">
<video v-if="modules[3].form.video" class="video" ref="video" autoplay controls loop> <video v-if="modules[1].form.video" class="video" ref="video" autoplay controls loop>
<source :src="modules[3].form.video" type="video/mp4"> <source :src="modules[1].form.video" type="video/mp4">
您的浏览器不支持 video 标签 您的浏览器不支持 video 标签
</video> </video>
<div class="text">{{ modules[3].form.des }}</div> <div v-html="modules[1].form.des"></div>
</template> </template>
<div v-if="active === 3" v-html="modules[4].form.des"></div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import mixins from '@/mixins/page' import mixins from '@/mixins/page'
import Setting from '@/setting'
import Util from '@/libs/util'
import WOW from 'wow.js' import WOW from 'wow.js'
export default { export default {
mixins: [mixins], mixins: [mixins],
@ -64,6 +57,7 @@ export default {
// tab // tab
tabChange(i) { tabChange(i) {
this.active = i this.active = i
i == 3 && this.$router.push('/overviewLocation?id=166&siteId=3')
}, },
} }
}; };

@ -5,12 +5,19 @@
<div class="article"> <div class="article">
<div class="left"> <div class="left">
<h2>{{ form.title }}</h2> <h2>{{ form.title }}</h2>
<template v-if="form.author">
<p class="name">作者</p> <p class="name">作者</p>
<p class="val">{{ form.author }}</p> <p class="val">{{ form.author }}</p>
</template>
<template v-if="form.quote">
<p class="name">引用</p> <p class="name">引用</p>
<p class="val">{{ form.quote }}</p> <p class="val">{{ form.quote }}</p>
</template>
<p class="name">摘要</p> <p class="name">摘要</p>
<div class="flex">
<div class="des" v-html="form.mainBody"></div> <div class="des" v-html="form.mainBody"></div>
<img v-if="form.titleImg" width="222" height="312" :src="form.titleImg" alt="">
</div>
</div> </div>
<div class="right"> <div class="right">
<img class="pic" src="@/assets/images/publish3.png" alt=""> <img class="pic" src="@/assets/images/publish3.png" alt="">
@ -19,6 +26,8 @@
<p class="name">刊物名称</p> <p class="name">刊物名称</p>
<p class="val">{{ form.periodicalName }}</p> <p class="val">{{ form.periodicalName }}</p>
</template> </template>
<p class="name">出版年份</p>
<p class="val">{{ form.publicationYear }}</p>
<div class="flex"> <div class="flex">
<div v-if="form.reel" class="m-r-40"> <div v-if="form.reel" class="m-r-40">
<p class="name"></p> <p class="name"></p>
@ -29,12 +38,30 @@
<p class="val">{{ form.documentNumber }}</p> <p class="val">{{ form.documentNumber }}</p>
</div> </div>
</div> </div>
<template v-if="form.publicationTypeId">
<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>
</template>
<template v-if="form.doi">
<p class="name">DOI</p> <p class="name">DOI</p>
<p class="val">{{ form.doi }}</p> <p class="val">{{ form.doi }}</p>
<p class="name">其他字段</p> </template>
<p class="val">2022</p>
<p class="l-title">{{$t('column.hot')}}</p>
<ul class="list">
<li v-for="(item, i) in hots" :key="i" :title="item.title" @click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
<p class="l-title">{{$t('column.latestNews')}}</p>
<ul class="list">
<li v-for="(item, i) in news" :key="i" @click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
</div> </div>
</div> </div>
</div> </div>
@ -58,6 +85,8 @@ export default {
columnId: '', columnId: '',
form: {}, form: {},
columnBanner: '', columnBanner: '',
news: [],
hots: []
} }
}, },
components: { components: {
@ -71,6 +100,7 @@ export default {
}, },
mounted() { mounted() {
this.getInfo() this.getInfo()
this.getArticle()
}, },
methods: { methods: {
// //
@ -113,6 +143,20 @@ export default {
} }
} }
}, },
//
getArticle() {
this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => {
this.hots = Util.removeTag(data)
}).catch(err => {})
this.$post(this.api.newlyPublishedArticles, {
pageNum: 1,
pageSize: 5,
siteId: this.$route.query.siteId || this.$store.state.content.site
}).then(({ data }) => {
this.news = Util.removeTag(data.records)
}).catch(res => {})
},
} }
}; };
</script> </script>
@ -150,6 +194,10 @@ export default {
color: #333; color: #333;
line-height: 30px; line-height: 30px;
} }
.des {
width: 469px;
margin-right: 49px;
}
} }
h2 { h2 {
padding-bottom: 27px; padding-bottom: 27px;
@ -181,6 +229,25 @@ export default {
line-height: 20px; line-height: 20px;
} }
} }
.list {
margin-bottom: 20px;
li {
padding: 16px 0;
border-bottom: 1px solid #D8D8D8;
}
.text {
margin-bottom: 5px;
font-size: 14px;
cursor: pointer;
&:hover {
color: $main-color;
}
}
.date {
font-size: 12px;
color: #999;
}
}
} }
@media (max-width: 1420px) { @media (max-width: 1420px) {
.content { .content {

@ -25,7 +25,7 @@
<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.releaseTime }} {{ curArticle.author && ' | ' + curArticle.author }}</p> <p class="meta">{{ curArticle.releaseTime }} {{ curArticle.classificationName && ' | ' + curArticle.classificationName }}</p>
<ul class="inds"> <ul class="inds">
<li v-for="i in articles.length > 3 ? 4 : 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>
@ -59,27 +59,27 @@
</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="405px"> <el-carousel height="413px">
<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" @click="toArtice(item, modules[4].form)">
<img class="pic" :src="item.titleImg" alt=""> <img class="pic" :src="item.titleImg" alt="">
<p class="text">{{ item.title }}</p> <p class="text">{{ item.title }}</p>
</div> </div>
</el-carousel-item> </el-carousel-item>
</template> </template>
</el-carousel> </el-carousel>
<div v-if="articles1.length > 4" class="cards" style="margin-top: 18px;"> <div v-if="articles1.length > 4" class="cards" style="margin-top: 18px;" @click="toArtice(articles1[4], modules[4].form)">
<h6>{{ articles1[4].title }}</h6> <h6 class="a-line">{{ articles1[4].title }}</h6>
<div class="sum">{{ articles1[4].mainBody }}</div> <div class="sum">{{ articles1[4].mainBody }}</div>
<p class="date">{{ articles1[4].releaseTime }}</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" @click="toArtice(articles1[5], modules[4].form)">
<h6>{{ articles1[5].title }}</h6> <h6>{{ articles1[5].title }}</h6>
<p class="date">{{ articles1[5].releaseTime }}</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" @click="toArtice(articles1[6], modules[4].form)">
<h6>{{ articles1[6].title }}</h6> <h6>{{ articles1[6].title }}</h6>
<p class="date">{{ articles1[6].releaseTime }}</p> <p class="date">{{ articles1[6].releaseTime }}</p>
</div> </div>
@ -88,8 +88,11 @@
<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 articles1"> <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" @click="toArtice(item, modules[4].form)">
<img class="pic" :src="item.titleImg" alt=""> <div class="releaseTime">
<p class="d">{{ item.date }}</p>
<p class="m">{{ item.month }}</p>
</div>
<div class="texts"> <div class="texts">
<h6>{{ item.title }}</h6> <h6>{{ item.title }}</h6>
<div class="des" v-html="item.mainBody"></div> <div class="des" v-html="item.mainBody"></div>
@ -97,7 +100,7 @@
</li> </li>
</template> </template>
</ul> </ul>
<div v-if="articles1.length > 10" class="slide"> <div v-if="articles1.length > 10" class="slide" @click="toArtice(articles1[10], modules[4].form)">
<img class="pic" :src="articles1[10].titleImg" alt=""> <img class="pic" :src="articles1[10].titleImg" alt="">
<p class="text">{{ articles1[10].title }}</p> <p class="text">{{ articles1[10].title }}</p>
</div> </div>
@ -135,6 +138,10 @@
<img class="icon" src="@/assets/images/time.png" alt=""> <img class="icon" src="@/assets/images/time.png" alt="">
会议时间: {{ item.activityStartTime + ' ~ ' + item.activityEndTime }} 会议时间: {{ item.activityStartTime + ' ~ ' + item.activityEndTime }}
</p> </p>
<p v-if="item.onlineLocation" class="text">
<img class="icon" src="@/assets/images/online.png" alt="">
{{ item.onlineLocation }}
</p>
<p v-if="item.offlineLocation" class="text"> <p v-if="item.offlineLocation" class="text">
<img class="icon" src="@/assets/images/location.png" alt=""> <img class="icon" src="@/assets/images/location.png" alt="">
{{ item.offlineLocation }} {{ item.offlineLocation }}
@ -159,25 +166,25 @@
<div v-if="articles3.length" class="media-wrap"> <div v-if="articles3.length" class="media-wrap">
<div class="left"> <div class="left">
<div class="slides"> <div class="slides">
<div class="item wow fadeInLeft" data-wow-delay="0.5s" style="margin-right: 20px"> <div class="item wow fadeInLeft" data-wow-delay="0.5s" style="margin-right: 20px" @click="toArtice(articles3[0], modules[9].form)">
<img width="100%" height="100%" :src="articles3[0].titleImg" alt=""> <img width="100%" height="100%" :src="articles3[0].titleImg" alt="">
<div class="text">{{ articles3[0].title }}</div> <div class="text">{{ articles3[0].title }}</div>
</div> </div>
<div v-if="articles3.length > 1" class="item wow fadeInLeft" data-wow-delay="0.5s"> <div v-if="articles3.length > 1" class="item wow fadeInLeft" data-wow-delay="0.5s" @click="toArtice(articles3[1], modules[9].form)">
<img width="100%" height="100%" :src="articles3[1].titleImg" alt=""> <img width="100%" height="100%" :src="articles3[1].titleImg" alt="">
<div class="text">{{ articles3[1].title }}</div> <div class="text">{{ articles3[1].title }}</div>
</div> </div>
</div> </div>
<ul class="list"> <ul class="list">
<template v-for="(item, i) in articles3"> <template v-for="(item, i) in articles3">
<li v-if="i > 1 && i < 5" :key="i" class="wow fadeInDown" :data-wow-delay="(0.1 * i).toFixed(1) + 's'"> <li v-if="i > 1 && i < 5" :key="i" class="wow fadeInDown" :data-wow-delay="(0.1 * i).toFixed(1) + 's'" @click="toArtice(item, modules[9].form)">
<h6>{{ item.title }}</h6> <h6>{{ item.title }}</h6>
<div class="des">{{ item.mainBody }}</div> <div class="des">{{ item.mainBody }}</div>
</li> </li>
</template> </template>
</ul> </ul>
</div> </div>
<div v-if="articles3.length > 5" class="right wow bounceInRight" data-wow-delay="0.8s"> <div v-if="articles3.length > 5" class="right wow bounceInRight" data-wow-delay="0.8s" @click="toArtice(articles3[5], modules[9].form)">
<div class="img-wrap"> <div class="img-wrap">
<img :src="articles3[5].titleImg" alt=""> <img :src="articles3[5].titleImg" alt="">
</div> </div>
@ -197,7 +204,6 @@
{{ 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" @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)">
@ -221,7 +227,7 @@
<span class="more" @click="toAll(modules[12].form)">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" @click="toArtice(articles4[0], modules[12].form)">
<div class="texts"> <div class="texts">
<h6>{{ articles4[0].title }}</h6> <h6>{{ articles4[0].title }}</h6>
<div class="des">{{ articles4[0].mainBody }}</div> <div class="des">{{ articles4[0].mainBody }}</div>
@ -233,7 +239,7 @@
</div> </div>
<ul class="list"> <ul class="list">
<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'" @click="toArtice(item, modules[12].form)">
<div class="des">{{ item.title }}</div> <div class="des">{{ item.title }}</div>
<p class="date">{{ item.releaseTime }}</p> <p class="date">{{ item.releaseTime }}</p>
</li> </li>
@ -245,7 +251,7 @@
<div class="tools"> <div class="tools">
<div class="logo"> <div class="logo">
<img src="@/assets/images/logo.png" alt=""> <img src="@/assets/images/logo2.png" alt="">
</div> </div>
<ul class="nav"> <ul class="nav">
<li v-for="(item, i) in navs" :key="i" class="column" @click="toAnchor(item)">{{ item.name }}</li> <li v-for="(item, i) in navs" :key="i" class="column" @click="toAnchor(item)">{{ item.name }}</li>
@ -299,7 +305,16 @@ export default {
if (json[4].form.column.length) { if (json[4].form.column.length) {
const { column, articleNum } = json[4].form const { column, articleNum } = json[4].form
this.$post(`${this.api.queryArticlesByColumnType}?columnId=${column[column.length - 1]}`).then(({ data }) => { this.$post(`${this.api.queryArticlesByColumnType}?columnId=${column[column.length - 1]}`).then(({ data }) => {
this.articles1 = Util.removeTag(data.slice(0, articleNum || 11)) const articles = Util.removeTag(data.slice(0, articleNum || 11))
articles.forEach(e => {
//
if (e.releaseTime) {
const date = e.releaseTime.split('-')
e.date = date[2]
e.month = date[0] + '/' + date[1]
}
})
this.articles1 = articles
}).catch(err => {}) }).catch(err => {})
} }
if (json[6].form.column.length) { if (json[6].form.column.length) {
@ -342,7 +357,7 @@ export default {
clearInterval(this.timer) clearInterval(this.timer)
this.timer = setInterval(() => { this.timer = setInterval(() => {
this.curInd++ this.curInd++
if (this.curInd > 2) this.curInd = 0 if (this.curInd > 3) this.curInd = 0
this.curArticle = this.articles[this.curInd] || {} this.curArticle = this.articles[this.curInd] || {}
}, 5000) }, 5000)
}, },
@ -518,6 +533,7 @@ export default {
.item { .item {
position: relative; position: relative;
height: 100%; height: 100%;
cursor: pointer;
.pic { .pic {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -532,6 +548,7 @@ export default {
font-size: 18px; font-size: 18px;
color: #fff; color: #fff;
line-height: 59px; line-height: 59px;
@include ellipsis;
background-color: rgba(0, 0, 0, 0.57); background-color: rgba(0, 0, 0, 0.57);
} }
&:hover { &:hover {
@ -545,12 +562,17 @@ export default {
margin-top: 18px; margin-top: 18px;
.cards { .cards {
flex: 1; flex: 1;
height: 134px;
}
h6 {
@include mul-ellipsis(2);
} }
} }
.cards { .cards {
padding: 20px; padding: 20px;
background-color: #fff; background-color: #fff;
transition: .5s; transition: .5s;
cursor: pointer;
&:hover { &:hover {
transform: translateX(10px); transform: translateX(10px);
} }
@ -558,7 +580,9 @@ export default {
margin-bottom: 10px; margin-bottom: 10px;
font-size: 18px; font-size: 18px;
color: #48525E; color: #48525E;
@include mul-ellipsis(2); }
.a-line {
@include ellipsis;
} }
.sum { .sum {
font-size: 14px; font-size: 14px;
@ -593,18 +617,34 @@ export default {
margin-bottom: 18px; margin-bottom: 18px;
background-color: #fff; background-color: #fff;
transition: .3s; transition: .3s;
cursor: pointer;
&:hover { &:hover {
transform: scale(1.05); transform: scale(1.05);
} }
} }
.pic { .releaseTime {
width: 124px; width: 88px;
height: 92px; height: 88px;
margin-right: 28px; padding: 10px 0 16px;
margin-right: 24px;
text-align: center;
}
.d {
font-size: 36px;
font-family: DINCondensed-Bold, DINCondensed;
font-weight: bold;
color: #333333;
line-height: 43px;
}
.m {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #666666;
line-height: 20px;
} }
.texts { .texts {
width: 504px; width: calc(100% - 110px);
margin-right: 60px;
} }
h6 { h6 {
margin-bottom: 10px; margin-bottom: 10px;
@ -625,6 +665,7 @@ export default {
position: relative; position: relative;
height: 284px; height: 284px;
overflow: hidden; overflow: hidden;
cursor: pointer;
.pic { .pic {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -657,8 +698,8 @@ export default {
} }
.left { .left {
position: relative; position: relative;
width: 688px; min-width: 698px;
height: 690px; height: 688px;
margin-right: 20px; margin-right: 20px;
cursor: pointer; cursor: pointer;
overflow: hidden; overflow: hidden;
@ -749,6 +790,7 @@ export default {
width: 366px; width: 366px;
height: 197px; height: 197px;
overflow: hidden; overflow: hidden;
cursor: pointer;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -780,6 +822,7 @@ export default {
height: 78px; height: 78px;
margin-bottom: 41px; margin-bottom: 41px;
transition: .5s; transition: .5s;
cursor: pointer;
&:last-child { &:last-child {
margin-bottom: 0; margin-bottom: 0;
} }
@ -789,7 +832,7 @@ export default {
} }
h6 { h6 {
margin-bottom: 17px; margin-bottom: 17px;
font-size: 20px; font-size: 18px;
font-family: PingFangSC-Medium, PingFang SC; font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #272727; color: #272727;
@ -808,6 +851,7 @@ export default {
width: 44%; width: 44%;
box-shadow: 0px 0px 30px 0px rgba(48,48,48,0.08); box-shadow: 0px 0px 30px 0px rgba(48,48,48,0.08);
transition: .5s; transition: .5s;
cursor: pointer;
.img-wrap { .img-wrap {
width: 100%; width: 100%;
height: 422px; height: 422px;
@ -901,6 +945,7 @@ export default {
.slide { .slide {
display: flex; display: flex;
margin-bottom: 14px; margin-bottom: 14px;
cursor: pointer;
} }
.texts { .texts {
width: 51%; width: 51%;
@ -947,6 +992,7 @@ export default {
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;
transition: .5s; transition: .5s;
cursor: pointer;
&:nth-child(2) { &:nth-child(2) {
background-image: url(../../assets/images/sfel/8.png); background-image: url(../../assets/images/sfel/8.png);
} }
@ -1008,5 +1054,11 @@ export default {
.lg { .lg {
width: 98%; width: 98%;
} }
.conference .card-list {
width: 734px;
.texts {
width: 460px;
}
}
} }
</style> </style>

@ -1,5 +1,5 @@
import BasicLayout from '@/layouts/home' import BasicLayout from '@/layouts/home'
const name = 'survey' const name = 'overviewLocation'
export default { export default {
path: `/${name}`, path: `/${name}`,
component: BasicLayout, component: BasicLayout,

@ -1,5 +1,5 @@
import BasicLayout from '@/layouts/home' import BasicLayout from '@/layouts/home'
const name = 'survey' const name = 'overviewTrailer'
export default { export default {
path: `/${name}`, path: `/${name}`,
component: BasicLayout, component: BasicLayout,

@ -73,6 +73,10 @@
top: 160px; top: 160px;
left: 267px; left: 267px;
} }
&.single-banner-overview .texts {
top: 332px;
left: 278px;
}
.banner-title { .banner-title {
margin-bottom: 19px; margin-bottom: 19px;
font-size: 48px; font-size: 48px;

Loading…
Cancel
Save