yujialong 2 years ago
parent 11e903d5e5
commit 7555343f25
  1. BIN
      src/assets/images/device/1.png
  2. BIN
      src/assets/images/device/10.png
  3. BIN
      src/assets/images/device/11.png
  4. BIN
      src/assets/images/device/12.png
  5. BIN
      src/assets/images/device/13.png
  6. BIN
      src/assets/images/device/14.png
  7. BIN
      src/assets/images/device/15.png
  8. BIN
      src/assets/images/device/16.png
  9. BIN
      src/assets/images/device/2.png
  10. BIN
      src/assets/images/device/3.png
  11. BIN
      src/assets/images/device/4.png
  12. BIN
      src/assets/images/device/5.png
  13. BIN
      src/assets/images/device/6.png
  14. BIN
      src/assets/images/device/7.png
  15. BIN
      src/assets/images/device/8.png
  16. BIN
      src/assets/images/device/9.png
  17. 15
      src/layouts/header/index.vue
  18. 1
      src/mixins/estate/index.js
  19. 1
      src/mixins/overview/index.js
  20. 3
      src/pages/article/editor.css
  21. 72
      src/pages/deviceIntroBeam/index.vue
  22. 74
      src/pages/deviceIntroLayout/index.vue
  23. 53
      src/pages/deviceIntroLinear/index.vue
  24. 31
      src/pages/overviewDevHistory/index.vue
  25. 47
      src/pages/overviewIntro/index.vue
  26. 12
      src/pages/overviewTrailer/index.vue

Binary file not shown.

Before

Width:  |  Height:  |  Size: 443 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 791 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 904 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 857 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 569 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

@ -12,7 +12,7 @@
</a> </a>
<!-- pc端 --> <!-- pc端 -->
<template v-if="$store.getters.getModelType"> <template v-if="$store.getters.getModelType">
<navbar ref="nav" :isHome.sync="isHome" :isEstate.sync="isEstate" @showMoreBtns="updateBtnsType"></navbar> <navbar v-if="navShow" ref="nav" :isHome.sync="isHome" :isEstate.sync="isEstate" @showMoreBtns="updateBtnsType"></navbar>
<div class="tools"> <div class="tools">
<img class="search" :src="require('@/assets/images/search' + (isHome ? '-white' : '') + '.png')" alt="" @click.stop="toggleSearch"> <img class="search" :src="require('@/assets/images/search' + (isHome ? '-white' : '') + '.png')" alt="" @click.stop="toggleSearch">
<template v-if="$i18n.locale == 'en'"> <template v-if="$i18n.locale == 'en'">
@ -67,9 +67,11 @@ export default {
isHome: true, isHome: true,
isEstate: false, isEstate: false,
showSearch: false, showSearch: false,
height: 907,
title: '', title: '',
searchTimer: null, searchTimer: null,
modelType: false, modelType: false,
navShow: true
}; };
}, },
components: { components: {
@ -117,10 +119,15 @@ export default {
// (home) // (home)
handleScroll () { handleScroll () {
if (Util.isIndex()) { if (Util.isIndex()) {
const h = this.height
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 > h) {
this.isHome = !(scrollTop > 907) if (this.isHome != !(scrollTop > h)) this.navShow = false
this.isEstate = !(scrollTop > 907) && this.$route.path === '/estate/index' this.isHome = !(scrollTop > h)
this.isEstate = !(scrollTop > h) && this.$route.path === '/estate/index'
this.$nextTick(() => {
this.navShow = true
})
} }
} }
}, },

@ -42,6 +42,7 @@ export default {
for (const e of data) { for (const e of data) {
if (e.id == this.id) { if (e.id == this.id) {
this.tabs = parent.children this.tabs = parent.children
break
} else if (e.children.length) { } else if (e.children.length) {
this.getParent(e.children, e) this.getParent(e.children, e)
} }

@ -42,6 +42,7 @@ export default {
for (const e of data) { for (const e of data) {
if (e.id == this.id) { if (e.id == this.id) {
this.tabs = parent.children this.tabs = parent.children
break
} else if (e.children.length) { } else if (e.children.length) {
this.getParent(e.children, e) this.getParent(e.children, e)
} }

@ -3,6 +3,9 @@
border-left: 0; border-left: 0;
background-color: #ededed; background-color: #ededed;
} }
.mce-content-body p {
margin: 0;
}
.tiny-wrap { .tiny-wrap {
/* width: 900px; */ /* width: 900px; */
margin: 0 auto; margin: 0 auto;

@ -1,30 +1,38 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<div class="banner">装置介绍</div> <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="block share"> <div class="block share">
<div class="inner"> <div class="inner">
<h6>光束线</h6> <h6>{{ modules[1].form.title }}</h6>
<p class="en">The beam line</p> <p class="en" v-html="modules[1].form.des"></p>
<div class="sum">S³FEL光束线覆盖的波段范围为1~30 nm包含前端区光学传输系统和诊断系统是连接自由电子激光光源和后端科学实验站的桥梁</div> <div class="sum">{{ modules[2].form.title }}</div>
<div class="flex beamBox"> <div class="flex beamBox">
<div class="left"> <div class="left">
<div class="des">光束线的作用是将光源发出的超快全相干高亮度的激光高效地传输到实验站样品处并在传输过程中对FEL脉冲进行频谱诊断脉冲能量诊断光斑位置诊断光斑横向分布诊断脉冲到达时间诊断波前诊断偏振诊断等同时根据后端实验站的不同科学需求可进一步对FEL脉冲进行单色化脉冲能量衰减横向光斑微聚焦等</div> <div class="des" v-html="modules[2].form.des"></div>
</div> </div>
<img class="pic" src="@/assets/images/device/1.png" alt=""> <img class="pic" :src="modules[2].form.pic" alt="">
<div class="imgText"><div class="readio"></div>波荡器示意图</div>
</div> </div>
</div> </div>
</div> </div>
<div class="intro"> <div class="intro">
<img class="pic" src="@/assets/images/device/2.png" alt=""> <img class="pic" src="http://10.10.11.7/images/device/2.png" alt="">
<div class="des">波荡器是S³FEL光束线的关键部件由一系列N极和S极交替排列的磁铁阵列构成是一种能够产生空间周期性分布磁场的电磁装置被超导直线加速器加速的高能电子束经过波荡器时将扭摆状波荡前行通过合理选择电子束和波荡器的参数可使电子束在每个波动周期内与波荡器发出的同步辐射相互干涉以获得超高亮度强相干高重频的X射线自由电子激光</div> <div class="des" v-html="modules[3].form.des"></div>
</div> </div>
<div class="unit"> <div class="unit">
<h6>波荡器性能指标</h6> <h6>{{ modules[4].form.title }}</h6>
<img class="pic" src="@/assets/images/device/3.png" alt=""> <img class="pic" :src="modules[4].form.pic" alt="">
</div> </div>
</div> </div>
</template> </template>
@ -43,7 +51,22 @@ export default {
new WOW().init() new WOW().init()
}, },
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) => { });
}
} }
}; };
</script> </script>
@ -51,15 +74,24 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import url(../../plugins/wow/animate.css); @import url(../../plugins/wow/animate.css);
@import "../../styles/page/page.scss"; @import "../../styles/page/page.scss";
.wrap { .wrap{
background: url(../../assets/images/device/4.png) (100% 1363px)/auto no-repeat; background: url(http://10.10.11.7/images/device/4.png) bottom right/auto no-repeat;
/deep/ .el-carousel {
height: 12.6rem;
.el-carousel__container{
height: 12.6rem;
}
img{
height: 12.6rem;
}
}
} }
.banner { .banner-item {
background: url(../../assets/images/device/13.png) 0 0/100% 100% no-repeat; .banner-name {
font-weight: bold; font-size: 2.16rem;
height: 17.5rem; left: 17%;
padding: 10.68rem 0 0 16.15rem; bottom: 20%;
font-size: 2.16rem; }
} }
.block { .block {
padding: 3.85rem 0; padding: 3.85rem 0;

@ -1,29 +1,38 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<div class="banner">装置介绍</div> <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="block share"> <div class="block share">
<div class="inner"> <div class="inner">
<h6>整体布局</h6> <h6>{{ modules[1].form.title }}</h6>
<p class="en">The overall layout</p> <p class="en">{{ modules[1].form.subTitle }}</p>
<div class="card">S³FEL装置主要包括一台超导直线加速器电子束能量为2.5 GeV重复频率为1 MHz4条波荡器线及首批14个实验线站根据具体的功能可以分为注入器主加速器自由电子激光放大器波荡器线光束线和实验站还有包括束流诊断控制激光同步数据采集与处理等在内的公共子系统以及低温公用设施等配套系统和设施</div> <div class="card" v-html="modules[1].form.des"></div>
<div class="flex textBox" > <div class="flex textBox" >
<div class="left"> <div class="left">
<div class="des"> S³FEL首批拟建设4条波荡器线分别是2条外种子EEHG线和2条自放大自发辐射SASE线以同时满足首批实验站的不同研究需求按照能区划分FEL-1FEL-2工作在自放大自发辐射模式SASE并且为将来升级为self-seeding模式预留空间FEL-1出光波段为1-3 nm调整电子束能量时可覆盖1-6 nmFEL-2输出光波长为2.3-15 nm作为光刻研究专用光束线FEL-3和4基于回声型谐波产生原理EEHGFEL-3输出波长为2.3-15 nm涵盖水窗波段FEL-4输出波长为5-30 nm的极紫外FEL脉冲通过快速束流分配技术波荡器束线可同时工作各条波荡器线产生的FEL光通过光束线系统实现FEL光学参数的实时诊断包括光强光谱光斑位置光斑尺寸以及相干性等并通过传输与聚焦系统传输至后端的实验站以满足各个实验站对光源的不同需求首批建设实验站共涉及6个前沿科技领域分别为极紫外光刻量子材料能源催化生物医药大气与星际科学以及原子分子科学</div> <div class="des" v-html="modules[2].form.des"></div>
</div> </div>
<img class="pic" src="@/assets/images/device/16.png" alt=""> <img class="pic" :src="modules[2].form.pic" alt="">
</div> </div>
</div> </div>
</div> </div>
<div class="intro"> <div class="intro">
<img class="bg" src="@/assets/images/device/7.png" alt=""> <img class="bg" src="http://10.10.11.7/images/device/7.png" alt="">
<img class="pic" src="@/assets/images/device/8.png" alt=""> <img class="pic" :src="modules[3].form.pic" alt="">
</div> </div>
<div class="unit"> <div class="unit">
<h6>S³FEL性能指标</h6> <h6>{{ modules[4].form.title }}</h6>
<img class="pic" src="@/assets/images/device/9.png" alt=""> <img class="pic" :src="modules[4].form.pic" alt="">
</div> </div>
</div> </div>
</template> </template>
@ -42,7 +51,22 @@ export default {
new WOW().init() new WOW().init()
}, },
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) => { });
}
} }
}; };
</script> </script>
@ -50,16 +74,24 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import url(../../plugins/wow/animate.css); @import url(../../plugins/wow/animate.css);
@import "../../styles/page/page.scss"; @import "../../styles/page/page.scss";
.wrap { .wrap{
background: url(../../assets/images/device/4.png) bottom right/auto no-repeat; background: url(http://10.10.11.7/images/device/4.png) bottom right/auto no-repeat;
/deep/ .el-carousel {
height: 12.6rem;
.el-carousel__container{
height: 12.6rem;
}
img{
height: 12.6rem;
}
}
} }
.banner { .banner-item {
background: url(../../assets/images/device/14.png) no-repeat center; .banner-name {
background-size: 100% 100%; font-size: 2.16rem;
font-weight: bold; left: 17%;
height: 17.5rem; bottom: 20%;
padding: 10.68rem 0 0 16.15rem; }
font-size: 2.16rem;
} }
.block { .block {
padding: 3.85rem 0; padding: 3.85rem 0;
@ -122,7 +154,7 @@ export default {
font-weight: 500; font-weight: 500;
color: #FFFFFF; color: #FFFFFF;
line-height: 2.375rem; line-height: 2.375rem;
background: url(../../assets/images/device/5.png) 0 0/cover no-repeat; background: url(http://10.10.11.7/images/device/5.png) 0 0/cover no-repeat;
} }
.des { .des {
margin-top: 25px; margin-top: 25px;

@ -1,18 +1,27 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<div class="banner">装置介绍</div> <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="block history gray"> <div class="block history gray">
<div class="inner"> <div class="inner">
<h2 class="wow fadeInLeft">超导直线加速器-1</h2> <h2 class="wow fadeInLeft">{{ modules[1].form.title }}</h2>
<p class="en">Superconducting linac -1</p> <p class="en" v-html="modules[1].form.des"></p>
<div class="texts wow fadeInDown" data-wow-delay="0.5s"> <div class="texts wow fadeInDown" data-wow-delay="0.5s">
<div class="left"> <div class="left">
<h6>{{ modules[0].form.title }}</h6> <h6>{{ modules[2].form.title }}</h6>
<div class="line"></div> <div class="line"></div>
<div class="text">{{ modules[0].form.des }}</div> <div class="text">{{ modules[2].form.des }}</div>
</div> </div>
<img class="bg" src="@/assets/images/device/10.png" alt="" /> <img class="bg" src="http://10.10.11.7/images/device/10.png" alt="" />
<div class="imgText"><div class="readio"></div>S³FEL电子枪光电效应示意图</div> <div class="imgText"><div class="readio"></div>S³FEL电子枪光电效应示意图</div>
</div> </div>
</div> </div>
@ -21,12 +30,12 @@
<div class="block intro"> <div class="block intro">
<div class="inner"> <div class="inner">
<div class="left"> <div class="left">
<h5>S³FEL超导直线加速器示意图</h5> <h5>{{ modules[3].form.title }}</h5>
<img src="@/assets/images/device/11.png" alt="" /> <img :src="modules[3].form.pic" alt="" />
</div> </div>
<div class="right"> <div class="right">
<h6>S³FEL超导直线加速器性能指标</h6> <h6>{{ modules[4].form.title }}</h6>
<img src="@/assets/images/device/12.png" alt="" /> <img :src="modules[4].form.pic" alt="" />
</div> </div>
</div> </div>
</div> </div>
@ -68,13 +77,23 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import url(../../plugins/wow/animate.css); @import url(../../plugins/wow/animate.css);
@import '../../styles/page/page.scss'; @import '../../styles/page/page.scss';
.wrap{
.banner { /deep/ .el-carousel {
background: url(../../assets/images/device/15.png) 0 0/100% 100% no-repeat; height: 12.6rem;
font-weight: bold; .el-carousel__container{
height: 17.5rem; height: 12.6rem;
padding: 10.68rem 0 0 16.15rem; }
font-size: 2.16rem; img{
height: 12.6rem;
}
}
}
.banner-item {
.banner-name {
font-size: 2.16rem;
left: 17%;
bottom: 20%;
}
} }
.block { .block {
padding: 3.85rem 0; padding: 3.85rem 0;

@ -15,36 +15,15 @@
<div class="block history"> <div class="block history">
<div class="inner"> <div class="inner">
<h2 class="wow fadeInLeft" v-if="modules[1].form.title">{{ modules[1].form.title }}</h2> <h2 class="wow fadeInLeft">{{ modules[1].form.title }}</h2>
<p class="en" v-if="modules[1].form.des">{{ modules[1].form.des }}</p> <p class="en">{{ modules[1].form.des }}</p>
<div v-if="modules[1]" class="event"> <div v-if="modules[2].list.length" class="event">
<ul class="time" v-if="modules[1].list >=1">
<template v-for="(item, i) in modules[1].list">
<li v-if="item.isEnable" :key="i" :class="{active: curYear == i}" @click="yearClick(i)">{{ item.title }}</li>
</template>
</ul>
<div class="right" v-if="modules[1].list.length >=1">
<h6 class="year">{{ modules[1].list[curYear].title }}</h6>
<ul class="list">
<template v-for="(e, j) in modules[1].list[curYear].list">
<li v-if="e.isEnable" :key="j" :class="{'cursor-pointer': isLink(e.link.linkName)}" @click="openLink(e)">
<div class="texts">
<p class="date">{{ e.title }}</p>
<p class="text">{{ e.des }}</p>
</div>
<img v-if="e.pic" :src="e.pic" alt="" class="pic">
</li>
</template>
</ul>
</div>
</div>
<!-- <div v-if="modules[2]" class="event">
<ul class="time"> <ul class="time">
<template v-for="(item, i) in modules[2].list"> <template v-for="(item, i) in modules[2].list">
<li v-if="item.isEnable" :key="i" :class="{active: curYear == i}" @click="yearClick(i)">{{ item.title }}</li> <li v-if="item.isEnable" :key="i" :class="{active: curYear == i}" @click="yearClick(i)">{{ item.title }}</li>
</template> </template>
</ul> </ul>
<div class="right"> <div v-if="modules[2].list[curYear]" class="right">
<h6 class="year">{{ modules[2].list[curYear].title }}</h6> <h6 class="year">{{ modules[2].list[curYear].title }}</h6>
<ul class="list"> <ul class="list">
<template v-for="(e, j) in modules[2].list[curYear].list"> <template v-for="(e, j) in modules[2].list[curYear].list">
@ -58,7 +37,7 @@
</template> </template>
</ul> </ul>
</div> </div>
</div> --> </div>
</div> </div>
</div> </div>
</div> </div>

@ -32,6 +32,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="ads">
<ul class="list">
<li>具有高亮度</li>
<li>超短脉冲</li>
<li>高相干</li>
<li>波长连续可调</li>
</ul>
</div>
</div> </div>
</template> </template>
@ -151,6 +160,44 @@ export default {
} }
} }
} }
.ads {
position: fixed;
top: 30%;
right: 1%;
padding: 20px;
animation: move 20s linear infinite alternate;
li {
display: flex;
align-items: center;
padding-left: 20px;
line-height: 26px;
font-weight: 600;
font-size: 16px;
color: #1583FF;
&:before {
content: '';
width: 4px;
height: 4px;
margin-right: 8px;
border-radius: 50%;
background-color: #1583FF;
}
}
}
@keyframes move {
0% {
top: 30%;
right: 1%;
}
50% {
top: 40%;
right: 40%;
}
100% {
top: 90%;
right: 90%;
}
}
@media (max-width: 1200px) { @media (max-width: 1200px) {
.tabs { .tabs {
overflow: hidden;; overflow: hidden;;

@ -14,13 +14,11 @@
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
<template v-if="active === 2"> <video v-if="modules[1].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[1].form.video" type="video/mp4">
<source :src="modules[1].form.video" type="video/mp4"> 您的浏览器不支持 video 标签
您的浏览器不支持 video 标签 </video>
</video> <div v-html="modules[1].form.des"></div>
<div v-html="modules[1].form.des"></div>
</template>
</div> </div>
</div> </div>
</template> </template>

Loading…
Cancel
Save