yujialong 2 years ago
parent dc241c2d01
commit e3d35d897f
  1. BIN
      src/assets/images/about-bg.png
  2. BIN
      src/assets/images/about.png
  3. BIN
      src/assets/images/arrow.png
  4. BIN
      src/assets/images/channel-bg.png
  5. BIN
      src/assets/images/channel1.png
  6. BIN
      src/assets/images/channel2.png
  7. BIN
      src/assets/images/iasf.png
  8. BIN
      src/assets/images/info-bg.png
  9. 127
      src/layouts/footer/index.vue
  10. 13
      src/layouts/home/index.vue
  11. 229
      src/pages/article/index.vue
  12. 452
      src/pages/channel/index.vue
  13. 25
      src/pages/index/list/index.vue
  14. 14
      src/router/modules/article.js
  15. 14
      src/router/modules/index.js
  16. 2
      src/setting.js

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

@ -1,56 +1,97 @@
<template>
<div class="footer">
<div class="info" v-if="isIndex">
<span class="m-r-20">客服邮箱service@huorantech.cn</span>
<div class="footer">
<div class="inner">
<div class="info">
<div style="margin-right: 100px">
<img class="m-b-20" src="@/assets/images/iasf.png" alt="">
<p class="meta">Copyright ©2002- 2021</p>
<p class="meta">Institute of Advanced Science Facilities, ShenzhenIASF</p>
<p class="meta">Tel400-0010-998</p>
</div>
<div class="copyright">
<span v-if="isIndex">© Copyright 2021 Occupation Lab 职站</span>
<a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank">粤ICP备20072679号</a>
<div class="column">
<h6>关于IASF</h6>
<ul class="children">
<li>研究院概况</li>
<li>研究院概况</li>
<li>研究院概况</li>
<li>研究院概况</li>
</ul>
</div>
<div class="column">
<h6>关于IASF</h6>
<ul class="children">
<li>研究院概况</li>
<li>研究院概况</li>
<li>研究院概况</li>
<li>研究院概况</li>
</ul>
</div>
<div class="column">
<h6>关于IASF</h6>
<ul class="children">
<li>研究院概况</li>
<li>研究院概况</li>
<li>研究院概况</li>
<li>研究院概况</li>
</ul>
</div>
</div>
<a class="copyright">粤ICP备2020131940号 粤公安网34565432456765432号</a>
</div>
</div>
</template>
<script>
import Setting from "@/setting";
export default {
data() {
return {
isIndex: this.$route.path !== '/login' && Setting.whiteList.some(e => e === this.$route.path) // 3
};
},
mounted(){
},
methods: {
},
data() {
return {
isIndex: this.$route.path !== '/login' && Setting.whiteList.some(e => e === this.$route.path) // 3
};
},
mounted(){
},
methods: {
},
};
</script>
<style lang="scss" scoped>
.footer{
padding: 17px 0 9px;
text-align: center;
background-color: #0F1D2E;
.info{
margin-bottom: 7px;
font-size: 14px;
line-height: 20px;
color: #D7DFE7;
}
.copyright{
font-size: 12px;
text-align: center;
line-height: 17px;
span{
margin-right: 20px;
color: #757F8A;
}
a{
color:#757F8A;
font-size: 12px;
&:hover{
color: #c7c7c7;
}
}
}
.footer{
padding: 64px 0 25px;
color: #fff;
background-color: #091733;
.inner {
width: 1500px;
margin: 0 auto;
}
.info {
display: flex;
// justify-content: center;
margin-bottom: 100px;
}
.meta {
margin-bottom: 10px;
font-size: 14px;
}
.column {
margin: 0 50px;
h6 {
margin-bottom: 20px;
font-size: 16px;
}
}
.children {
li {
margin: 12px 0;
font-size: 14px;
color: #6D7384;
cursor: pointer;
}
}
.copyright {
font-size: 14px;
color: #6D7384;
}
}
</style>

@ -1,12 +1,12 @@
<template>
<div class="main">
<div :class="['main', { channel: isChannel }]">
<v-head></v-head>
<div class="layout">
<transition name="move" mode="out-in">
<router-view class="view"></router-view>
</transition>
<el-backtop target=".layout"></el-backtop>
<!-- <v-footer ref="footer"></v-footer> -->
<v-footer ref="footer"></v-footer>
</div>
</div>
</template>
@ -19,7 +19,7 @@ import vFooter from "../footer";
export default {
data() {
return {
isChannel: this.$route.query.path === '/channel'
};
},
components: {
@ -48,13 +48,10 @@ export default {
};
</script>
<style lang="scss" scoped>
.main{
.main:not(.channel) {
min-height: calc(100% - 90px);
.layout{
.layout {
padding-top: 90px;
}
.index{
padding: 0;
}
}
</style>

@ -0,0 +1,229 @@
<template>
<div class="wrap">
<div class="banner" :style="{backgroundImage: form.bannerImg ? ('url(' + form.bannerImg + ')') : ''}">
S³FEL概况
</div>
<div class="content">
<Breadcrumb ref="breadcrumb" :data="'装置概况/' + form.title"/>
<div class="article">
<div class="left">
<h2>{{ form.title }}</h2>
<div class="meta">{{ form.createTime }} | {{ form.source }} | {{ form.author && form.author + ' | ' }} {{ form.totalBrowsing }} 浏览</div>
<p class="brief">{{ form.summary }}</p>
<div v-html="form.mainBody"></div>
<div class="annex">
<h6>附件下载</h6>
<div class="file">
<span class="name">{{ form.file }}</span>
<span class="download" @click="download">下载</span>
</div>
</div>
</div>
<div class="right">
<el-tree class="column" ref="column" :data="columns" highlight-current :expand-on-click-node="false" default-expand-all :props="defaultProps" node-key="id" ></el-tree>
<p class="l-title">热点内容</p>
<ul class="list">
<li>
<p class="text">喜报 | 深圳粒子研究院荣获全国科研</p>
<span class="date">2022-08-09</span>
</li>
<li>
<p class="text">喜报 | 深圳粒子研究院荣获全国科研</p>
<span class="date">2022-08-09</span>
</li>
<li>
<p class="text">喜报 | 深圳粒子研究院荣获全国科研</p>
<span class="date">2022-08-09</span>
</li>
</ul>
<p class="l-title">最新资讯</p>
<ul class="list">
<li v-for="(item, i) in news" :key="i">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.createTime }}</span>
</li>
</ul>
</div>
</div>
</div>
</div>
</template>
<script>
import Setting from '@/setting'
import Util from '@/libs/util'
import Breadcrumb from '@/components/breadcrumb'
export default {
data() {
return {
id: this.$route.query.id,
columnId: '',
form: {},
columns: [],
defaultProps: {
value: 'id',
label: 'columnName'
},
news: []
}
},
components: {
Breadcrumb
},
watch: {
'$route'() {
this.id = this.$route.query.id
this.getInfo()
}
},
mounted() {
this.getColumn()
this.getArticle()
},
methods: {
//
getInfo() {
this.$post(`${this.api.findArticle}?id=${this.id}`).then(({ data }) => {
this.form = data
this.columnId = data.columnId
this.$refs.breadcrumb.update('装置概况/' + data.title)
data.bannerImg || this.getBanner(this.columns)
if (this.columnBanner) this.form.bannerImg = this.columnBanner
}).catch(err => {})
},
// banner
getBanner(data) {
this.columnBanner = ''
for (const e of data) {
if (e.columnBanner) this.columnBanner = e.columnBanner
if (e.id == this.columnId) {
break
} else {
this.getBanner(e.children)
}
}
},
//
getColumn() {
this.$post(this.api.listWithTree, {
siteId: 1,
columnName: '',
templateId: '',
typeId : '',
isSort: 0
}).then(({ data }) => {
this.columns = data
this.getInfo()
}).catch(err => {})
},
//
getArticle() {
this.$post(this.api.newlyPublishedArticles, {
pageNum: 1,
pageSize: 5,
siteId: 1
}).then(({ data }) => {
this.news = data.records
}).catch(res => {})
},
//
download() {
Util.downloadFile('附件', this.form.file)
}
}
};
</script>
<style lang="scss" scoped>
.banner {
height: 280px;
padding: 123px 0 0 243px;
font-size: 48px;
color: #fff;
background: url(../../assets/images/intro-bg.png) 0 0/100% 100% no-repeat;
}
.article {
display: flex;
justify-content: space-between;
.left {
width: 1090px;
}
h2 {
font-size: 36px;
color: #1C1C1C;
}
.meta {
margin: 20px 0;
font-size: 14px;
color: #9B9B9B;
}
.brief {
padding-bottom: 30px;
margin-bottom: 30px;
font-size: 14px;
line-height: 20px;
color: #606060;
border-bottom: 1px solid #D8D8D8;
}
.annex {
margin-top: 30px;
h6 {
padding-left: 8px;
margin-bottom: 20px;
font-size: 16px;
line-height: 1;
color: #333;
border-left: 2px solid #1583FF;
}
.file {
display: flex;
align-items: center;
}
.name {
margin-right: 8px;
font-size: 14px;
}
.download {
color: #1583FF;
cursor: pointer;
}
}
.right {
width: 324px;
}
.column {
width: 100%;
margin-bottom: 25px;
}
/deep/.el-tree-node__content {
height: 60px;
background-color: #E5EDF8;
border-bottom: 2px solid #fff;
}
/deep/.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
color: #fff;
background-color: #0f5698;
}
.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;
}
}
}
</style>

@ -1,86 +1,162 @@
<template>
<div class="wrap">
<div class="banner" :style="{backgroundImage: form.bannerImg ? ('url(' + form.bannerImg + ')') : ''}">
S³FEL概况
<img width="100%" src="@/assets/images/channel-bg.png" alt="">
<div class="block">
<div class="inner">
<h2 class="b-title">OUR FACILITIES</h2>
<p class="intro">IASF will carry a world-class light source research park by operating a synchrotron radiation facility and a soft X-ray Superconducting free-electron laser facility.</p>
<ul class="card">
<li>
<img width="100%" src="@/assets/images/channel1.png" alt="">
<div class="texts">
<h6>Shenzhen Innovation Lightsource Facility </h6>
<p class="des">The Shenzhen synchrotron radiation facility has a fourth-generation diffraction-limited storage ring with an electron energy of 3 GeV at a low emittance of 50-150 pm·rad, and it provides photons with broad range energy from 4 meV to 160 keV.</p>
<img class="arrow" src="@/assets/images/arrow.png" alt="">
</div>
</li>
<li>
<img width="100%" src="@/assets/images/channel2.png" alt="">
<div class="texts">
<h6>Shenzhen Innovation Lightsource Facility </h6>
<p class="des">The Shenzhen synchrotron radiation facility has a fourth-generation diffraction-limited storage ring with an electron energy of 3 GeV at a low emittance of 50-150 pm·rad, and it provides photons with broad range energy from 4 meV to 160 keV.</p>
<img class="arrow" src="@/assets/images/arrow.png" alt="">
</div>
</li>
</ul>
</div>
</div>
<div class="content">
<Breadcrumb ref="breadcrumb" :data="'装置概况/' + form.title"/>
<div class="article">
<div class="left">
<h2>{{ form.title }}</h2>
<div class="meta">{{ form.createTime }} | {{ form.source }} | {{ form.author && form.author + ' | ' }} {{ form.totalBrowsing }} 浏览</div>
<p class="brief">{{ form.summary }}</p>
<div v-html="form.mainBody"></div>
<div class="annex">
<h6>附件下载</h6>
<div class="file">
<span class="name">{{ form.file }}</span>
<span class="download" @click="download">下载</span>
<div class="block news-block">
<div class="inner">
<h2 class="b-title">Latest information</h2>
<p class="intro">Keep up with what happen with IASF</p>
<ul class="news">
<li>
<img src="@/assets/images/channel1.png" alt="">
<div class="texts">
<h6>2022 New Year Message from President Sun Dongbai</h6>
<p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities, Shenzhen (IASF)</p>
<span class="meta">2022.08.12</span>
</div>
</div>
</div>
<div class="right">
<el-tree class="column" ref="column" :data="columns" highlight-current :expand-on-click-node="false" default-expand-all :props="defaultProps" node-key="id" ></el-tree>
<p class="l-title">热点内容</p>
<ul class="list">
<li>
<p class="text">喜报 | 深圳粒子研究院荣获全国科研</p>
<span class="date">2022-08-09</span>
</li>
<li>
<p class="text">喜报 | 深圳粒子研究院荣获全国科研</p>
<span class="date">2022-08-09</span>
</li>
<li>
<p class="text">喜报 | 深圳粒子研究院荣获全国科研</p>
<span class="date">2022-08-09</span>
</li>
</ul>
</li>
<li>
<img src="@/assets/images/channel1.png" alt="">
<div class="texts">
<h6>2022 New Year Message from President Sun Dongbai</h6>
<p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities, Shenzhen (IASF)</p>
<span class="meta">2022.08.12</span>
</div>
</li>
<li>
<img src="@/assets/images/channel1.png" alt="">
<div class="texts">
<h6>2022 New Year Message from President Sun Dongbai</h6>
<p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities, Shenzhen (IASF)</p>
<span class="meta">2022.08.12</span>
</div>
</li>
<li>
<img src="@/assets/images/channel1.png" alt="">
<div class="texts">
<h6>2022 New Year Message from President Sun Dongbai</h6>
<p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities, Shenzhen (IASF)</p>
<span class="meta">2022.08.12</span>
</div>
</li>
</ul>
</div>
</div>
<div class="block">
<div class="inner">
<h2 class="b-title">Light Chasers' Home at IASF</h2>
<p class="intro">Keep up with what happen with IASF</p>
<ul class="people">
<li>
<img class="pic" src="@/assets/images/channel1.png" alt="">
<div class="texts">
<h6>Shenzhen Innovation Lightsource Facility </h6>
<p class="des">The Shenzhen synchrotron radiation facility has a fourth-generation diffraction-limited storage ring with an electron energy of 3 GeV at a low emittance of 50-150 pm·rad, and it provides photons with broad range energy from 4 meV to 160 keV.</p>
<img class="arrow" src="@/assets/images/arrow.png" alt="">
</div>
</li>
<li>
<div class="texts">
<h6>Shenzhen Innovation Lightsource Facility </h6>
<p class="des">The Shenzhen synchrotron radiation facility has a fourth-generation diffraction-limited storage ring with an electron energy of 3 GeV at a low emittance of 50-150 pm·rad, and it provides photons with broad range energy from 4 meV to 160 keV.</p>
<img class="arrow" src="@/assets/images/arrow.png" alt="">
</div>
<img class="pic" src="@/assets/images/channel2.png" alt="">
</li>
</ul>
</div>
</div>
<p class="l-title">最新资讯</p>
<ul class="list">
<li v-for="(item, i) in news" :key="i">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.createTime }}</span>
</li>
</ul>
<div class="about">
<div class="inner">
<img src="@/assets/images/about.png" alt="">
<div class="line"></div>
<div class="text">ABOUT</div>
<div class="des">
<p>The Institute of Advanced Science Facilities in Shenzhen, China is home to world-class science, world-class facilities, and world-class people. Located 25 miles east of Shenzhen city center, on a 1.2 acre campus, IASF has over three hundred researchers and support staff.</p>
</div>
</div>
</div>
<div class="block" style="padding-bottom: 0">
<div class="inner">
<h2 class="glance">IASF at a glance</h2>
<ul class="stat">
<li>
<p class="num">2020</p>
<p class="text">The year IASF was founded</p>
</li>
<li>
<p class="num">2</p>
<p class="text">Facility projects</p>
</li>
<li>
<p class="num">240</p>
<p class="text">Employees</p>
</li>
<li>
<p class="num">10</p>
<p class="text">Academicians</p>
</li>
<li>
<p class="num">45%</p>
<p class="text">Hold doctorates or the highest degree in their field</p>
</li>
<li>
<p class="num">$32B+</p>
<p class="text">Facility construction need-based grant aid provided </p>
</li>
</ul>
</div>
</div>
</div>
</template>
<script>
import Setting from '@/setting'
import Util from '@/libs/util'
import Breadcrumb from '@/components/breadcrumb'
export default {
data() {
return {
id: this.$route.query.id,
columnId: '',
form: {},
columns: [],
defaultProps: {
value: 'id',
label: 'columnName'
},
news: []
}
},
components: {
Breadcrumb
},
watch: {
'$route'() {
this.id = this.$route.query.id
this.getInfo()
// this.getInfo()
}
},
mounted() {
this.getColumn()
this.getArticle()
},
methods: {
//
@ -88,142 +164,188 @@ export default {
this.$post(`${this.api.findArticle}?id=${this.id}`).then(({ data }) => {
this.form = data
this.columnId = data.columnId
this.$refs.breadcrumb.update('装置概况/' + data.title)
data.bannerImg || this.getBanner(this.columns)
if (this.columnBanner) this.form.bannerImg = this.columnBanner
}).catch(err => {})
},
// banner
getBanner(data) {
this.columnBanner = ''
for (const e of data) {
if (e.columnBanner) this.columnBanner = e.columnBanner
if (e.id == this.columnId) {
break
} else {
this.getBanner(e.children)
}
}
},
//
getColumn() {
this.$post(this.api.listWithTree, {
siteId: 1,
columnName: '',
templateId: '',
typeId : '',
isSort: 0
}).then(({ data }) => {
this.columns = data
this.getInfo()
}).catch(err => {})
},
//
getArticle() {
this.$post(this.api.newlyPublishedArticles, {
pageNum: 1,
pageSize: 5,
siteId: 1
}).then(({ data }) => {
this.news = data.records
}).catch(res => {})
},
//
download() {
Util.downloadFile('附件', this.form.file)
}
}
};
</script>
<style lang="scss" scoped>
.banner {
height: 280px;
padding: 123px 0 0 243px;
font-size: 48px;
color: #fff;
background: url(../../assets/images/intro-bg.png) 0 0/100% 100% no-repeat;
}
.article {
display: flex;
justify-content: space-between;
.left {
width: 1090px;
.block {
padding: 118px 0;
.b-title {
position: relative;
margin-bottom: 50px;
font-size: 50px;
line-height: 59px;
text-align: center;
color: #1F1F1F;
&:after {
content: '';
position: absolute;
top: 70px;
left: 50%;
width: 136px;
height: 4px;
transform: translateX(-50%);
background: #1583FF;
}
}
h2 {
font-size: 36px;
color: #1C1C1C;
.intro {
margin-bottom: 80px;
font-size: 30px;
text-align: center;
color: #5B5B5E;
line-height: 40px;
}
.meta {
margin: 20px 0;
font-size: 14px;
color: #9B9B9B;
.card {
display: flex;
justify-content: space-between;
li {
width: 660px;
}
.texts {
padding-left: 22px;
margin-top: 60px;
border-left: 2px solid #DFE4E9;
}
h6 {
margin-bottom: 25px;
font-size: 24px;
color: #333;
}
.des {
font-size: 18px;
color: #222;
line-height: 30px;
}
.arrow {
cursor: pointer;
}
}
.brief {
padding-bottom: 30px;
margin-bottom: 30px;
font-size: 14px;
line-height: 20px;
color: #606060;
border-bottom: 1px solid #D8D8D8;
&.news-block {
background: url(../../assets/images/info-bg.png) 0 0/100% 100% no-repeat;
}
.annex {
margin-top: 30px;
.news {
display: flex;
flex-wrap: wrap;
li {
display: inline-flex;
width: 686px;
padding: 34px;
margin-bottom: 28px;
background-color: #fff;
&:nth-child(odd) {
margin-right: 28px;
}
}
img {
width: 237px;
height: 167px;
}
.texts {
margin-left: 34px;
}
h6 {
padding-left: 8px;
margin-bottom: 20px;
font-size: 18px;
color: #0648A8;
}
.des {
margin: 14px 0;
font-size: 16px;
line-height: 1;
color: #333;
border-left: 2px solid #1583FF;
line-height: 22px;
}
.file {
.meta {
font-size: 16px;
color: #999;
}
}
.people {
li {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 126px;
}
.name {
margin-right: 8px;
font-size: 14px;
.pic {
width: 660px;
height: 465px;
}
.download {
color: #1583FF;
cursor: pointer;
.texts {
width: 680px;
padding-top: 150px;
}
h6 {
font-size: 40px;
}
.des {
font-size: 18px;
color: #020202;
line-height: 30px;
}
}
.right {
width: 324px;
}
.column {
width: 100%;
margin-bottom: 25px;
}
/deep/.el-tree-node__content {
height: 60px;
background-color: #E5EDF8;
border-bottom: 2px solid #fff;
}
/deep/.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
color: #fff;
background-color: #0f5698;
.glance {
padding-bottom: 50px;
font-size: 45px;
border-bottom: 1px solid #DEDEDE;
}
.list {
margin-bottom: 20px;
.stat {
display: flex;
justify-content: space-around;
flex-wrap: wrap;
margin-top: 60px;
li {
padding: 16px 0;
border-bottom: 1px solid #D8D8D8;
width: 30%;
margin-bottom: 50px;
}
.num {
margin-bottom: 10px;
font-size: 60px;
font-weight: 800;
color: #035CE1;
line-height: 49px;
}
.text {
margin-bottom: 5px;
font-size: 14px;
cursor: pointer;
&:hover {
color: $main-color;
}
font-size: 24px;
}
.date {
font-size: 12px;
color: #999;
}
}
.inner {
width: 1400px;
margin: 0 auto;
}
.about {
padding: 77px 0 198px;
background: url(../../assets/images/about-bg.png) 0 0/100% 100% no-repeat;
.line {
display: flex;
align-items: center;
margin: 50px 0 30px;
width: 88px;
height: 6px;
background-color: #fff;
&:after {
content: '';
width: 6px;
height: 6px;
}
}
.text {
font-size: 30px;
color: #fff;
}
.des {
padding: 38px 60px;
margin-top: 84px;
font-size: 30px;
color: #fff;
line-height: 42px;
text-align: center;
background: rgba(111, 69, 36, .56);
border-radius: 17px;
}
}
</style>

@ -1,25 +0,0 @@
<template>
<div class="wrap"></div>
</template>
<script>
import Setting from '@/setting'
import util from '@/libs/util'
export default {
data() {
return {
}
},
mounted() {
},
methods: {
}
};
</script>
<style lang="scss" scoped>
</style>

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

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

@ -6,7 +6,7 @@
let host = `${location.origin}:10000/`
if (isDev) {
host = 'http://192.168.31.136:10000/' // 测试服
// host = 'http://192.168.31.151:10000/' // 榕
host = 'http://192.168.31.51:10000/' // 榕
// host = 'http://192.168.31.137:10000/' // 赓
}

Loading…
Cancel
Save