产品中心等

master
yujialong 1 year ago
parent 2edf4cf9f0
commit be8f5b16e8
  1. 18337
      package-lock.json
  2. 1
      package.json
  3. BIN
      src/assets/images/industrial/app1-1.png
  4. BIN
      src/assets/images/industrial/app1.png
  5. BIN
      src/assets/images/industrial/app10-1.png
  6. BIN
      src/assets/images/industrial/app10.png
  7. BIN
      src/assets/images/industrial/app11-1.png
  8. BIN
      src/assets/images/industrial/app11.png
  9. BIN
      src/assets/images/industrial/app12-1.png
  10. BIN
      src/assets/images/industrial/app12.png
  11. BIN
      src/assets/images/industrial/app13-1.png
  12. BIN
      src/assets/images/industrial/app13.png
  13. BIN
      src/assets/images/industrial/app14-1.png
  14. BIN
      src/assets/images/industrial/app14.png
  15. BIN
      src/assets/images/industrial/app15-1.png
  16. BIN
      src/assets/images/industrial/app15.png
  17. BIN
      src/assets/images/industrial/app16-1.png
  18. BIN
      src/assets/images/industrial/app16.png
  19. BIN
      src/assets/images/industrial/app2-1.png
  20. BIN
      src/assets/images/industrial/app2.png
  21. BIN
      src/assets/images/industrial/app3-1.png
  22. BIN
      src/assets/images/industrial/app3.png
  23. BIN
      src/assets/images/industrial/app4-1.png
  24. BIN
      src/assets/images/industrial/app4.png
  25. BIN
      src/assets/images/industrial/app5-1.png
  26. BIN
      src/assets/images/industrial/app5.png
  27. BIN
      src/assets/images/industrial/app6-1.png
  28. BIN
      src/assets/images/industrial/app6.png
  29. BIN
      src/assets/images/industrial/app7-1.png
  30. BIN
      src/assets/images/industrial/app7.png
  31. BIN
      src/assets/images/industrial/app8-1.png
  32. BIN
      src/assets/images/industrial/app8.png
  33. BIN
      src/assets/images/industrial/app9-1.png
  34. BIN
      src/assets/images/industrial/app9.png
  35. 2
      src/const/column.js
  36. 1
      src/pages/article/index.vue
  37. 225
      src/pages/industrial/index.vue
  38. 67
      src/pages/publication/monograph.vue
  39. 89
      src/pages/publication/patent.vue
  40. 187
      src/pages/researchTeam/index.vue
  41. 73
      src/pages/talentCentre/index.vue
  42. 131
      src/pages/team/index.vue
  43. 14
      src/router/modules/team.js

18337
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -20,6 +20,7 @@
"lru-cache": "^7.14.1",
"mavon-editor": "^2.9.1",
"node-sass": "^4.14.1",
"pinyin-pro": "^3.15.1",
"vue": "^2.6.14",
"vue-animate-number": "^0.4.2",
"vue-cropperjs": "^3.0.0",

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 915 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

@ -71,5 +71,5 @@
id: 2,
name: '实用外观'
}
]
],
}

@ -96,6 +96,7 @@ export default {
if (temId === 25 || temId === 26) { // /
this.$router.replace((temId === 25 ? '/article/activity' : '/publish/show') + path)
} else {
if (temId == 69) this.isParty = 1
data.releaseTime = data.releaseTime.split(' ')[0]
this.form = data
this.columnId = data.columnId

@ -1,31 +1,43 @@
<template>
<div class="wrap">
<div class="single-banner">
<img class="banner-img" :src="modules[0].form.pic" alt="" />
<img class="banner-img"
:src="modules[0].form.pic"
alt="" />
<div class="texts">
<h6 class="banner-title">{{ modules[0].form.title }}</h6>
</div>
</div>
<div class="block history gray">
<div class="inner" :class="{'cursor-pointer': isLink(modules[1].form.link.linkName)}" @click="openLink(modules[1].form)">
<h2 class="wow fadeInLeft" style="margin-left: 57px">{{ modules[1].form.title }}</h2>
<div class="texts wow fadeInDown" data-wow-delay="0.5s">
<div class="inner"
:class="{'cursor-pointer': isLink(modules[1].form.link.linkName)}"
@click="openLink(modules[1].form)">
<h2 class="wow fadeInLeft"
style="margin-left: 57px">{{ modules[1].form.title }}</h2>
<div class="texts wow fadeInDown"
data-wow-delay="0.5s">
<div class="left">
<h2>{{ modules[1].form.subTitle }}</h2>
<div class="text" v-html="modules[1].form.des"></div>
<div class="text"
v-html="modules[1].form.des"></div>
</div>
<img class="bg" :src="modules[1].form.pic" alt="">
<img class="bg"
:src="modules[1].form.pic"
alt="">
</div>
</div>
</div>
<div class="block land">
<div class="inner">
<img class="pic" :src="modules[2].form.pic" alt="">
<img class="pic"
:src="modules[2].form.pic"
alt="">
<div class="right">
<h6>{{ modules[2].form.title }}</h6>
<div class="text" v-html="modules[2].form.des"></div>
<div class="text"
v-html="modules[2].form.des"></div>
</div>
</div>
</div>
@ -33,27 +45,90 @@
<div class="block gray">
<div class="inner">
<h2 class="b-title wow fadeInUp">{{ modules[3].form.title }}</h2>
<p class="intro wow fadeInUp" data-wow-delay="0.5s">{{ modules[3].form.des }}</p>
<p class="intro wow fadeInUp"
data-wow-delay="0.5s">{{ modules[3].form.des }}</p>
<ul class="plan">
<li>
<div class="left">
<h6>{{ modules[4].form.title }}</h6>
<div class="text" v-html="modules[4].form.des"></div>
<img src="@/assets/images/arrow.png" alt="" :class="{'arrow': isLink(modules[4].form.link.linkName)}" @click="openLink(modules[4].form)">
<div class="text"
v-html="modules[4].form.des"></div>
<a v-if="isLink(modules[4].form.link.linkName)"
class="survey"
@click="openLink(modules[4].form)">需求调研 ></a>
</div>
<img class="pic" :src="modules[4].form.pic" alt="">
<img class="pic"
:src="modules[4].form.pic"
alt="">
</li>
<li>
<div class="left">
<h6>{{ modules[5].form.title }}</h6>
<div class="text" v-html="modules[5].form.des"></div>
<img src="@/assets/images/arrow.png" alt="" :class="{'arrow': isLink(modules[5].form.link.linkName)}" @click="openLink(modules[5].form)">
<div class="text"
v-html="modules[5].form.des"></div>
<a v-if="isLink(modules[5].form.link.linkName)"
class="survey"
@click="openLink(modules[5].form)">需求调研 ></a>
</div>
<img class="pic" :src="modules[5].form.pic" alt="">
<img class="pic"
:src="modules[5].form.pic"
alt="">
</li>
</ul>
</div>
</div>
<div class="block">
<div class="inner app-inner">
<h2 class="b-title wow fadeInUp">{{ modules[6].form.title }}</h2>
<p class="intro wow fadeInUp"
data-wow-delay="0.5s">{{ modules[6].form.des }}</p>
<ul class="app">
<li v-for="(item, i) in modules[7].list"
:key="i"
class="wow fadeInDown"
:data-wow-delay="(0.2 * i).toFixed(1) + 's'"
:class="{'cursor-pointer': isLink(item.link.linkName)}"
@click="openLink(item)">
<img class="bg"
:src="require('@/assets/images/industrial/app' + (i + 1) + '.png')"
alt="">
<img class="icon"
:src="require('@/assets/images/industrial/app' + (i + 1) + '-1.png')"
alt="">
<p class="text">{{ item.title }}</p>
</li>
</ul>
</div>
</div>
<div class="block news-block">
<div class="inner">
<h2 class="b-title wow fadeInUp">{{ modules[8].form.title }}</h2>
<p class="intro wow fadeInUp"
data-wow-delay="0.5s">{{ modules[8].form.des }}</p>
<ul class="news">
<li class="wow fadeInDown"
:data-wow-delay="(0.2 * i).toFixed(1) + 's'"
v-for="(item, i) in articles"
:key="i"
@click="toArtice(item, modules[9].form)">
<img :src="item.titleImg"
alt="">
<div class="texts">
<span class="meta">{{ item.releaseTime }}</span>
<h6>{{ item.title }}</h6>
</div>
</li>
</ul>
<div class="all-link"
@click="toAll(modules[9 ].form)">
<span>{{$t('column.all')}} <img class="icon"
src="@/assets/images/arrow.png"
alt=""></span>
</div>
</div>
</div>
</div>
</template>
@ -64,17 +139,17 @@ import Util from "@/libs/util";
import WOW from "wow.js";
export default {
mixins: [mixins],
data() {
data () {
return {
routes: [],
articles: [],
};
},
mounted() {
mounted () {
new WOW().init();
},
methods: {
//
getInfo() {
getInfo () {
// /
this.$post(
`${this.api[this.preview ? "getRedisCache" : "findPage"]}?columnId=${this.id}`
@ -91,9 +166,18 @@ export default {
);
this.modules = json;
console.log("🚀 ~ file: index.vue ~ line 180 ~ this.$post ~ json", json);
//
const { column, articleNum } = json[9].form
if (column.length) {
this.$post(`${this.api.queryArticlesByColumnType}?columnId=${column[column.length - 1]}`).then(({ data }) => {
this.articles = Util.removeTag(data.slice(0, articleNum || 6))
}).catch(err => { })
}
}
})
.catch((err) => {});
.catch((err) => { });
},
},
};
@ -101,7 +185,7 @@ export default {
<style lang="scss" scoped>
@import url(../../plugins/wow/animate.css);
@import "../../styles/page/page.scss";
@import '../../styles/page/page.scss';
.history {
h2 {
font-size: 1.8rem;
@ -114,7 +198,7 @@ export default {
margin-top: 20px;
background-color: #fff;
border-radius: 100px 0px 0px 0px;
transition: .3s;
transition: 0.3s;
&:hover {
transform: scale(1.05);
}
@ -133,7 +217,7 @@ export default {
.bg {
width: 560px;
height: 500px;
margin: -122px 0 0 0;
margin: -122px -83px 0 0;
}
}
.land {
@ -158,13 +242,14 @@ export default {
height: 405px;
padding: 50px;
margin-top: 1rem;
background: rgba(242,246,248,0.45);
background: rgba(242, 246, 248, 0.45);
border-radius: 0px 100px 0px 0px;
}
}
.plan {
li {
display: flex;
justify-content: space-between;
height: 500px;
margin-bottom: 60px;
color: #333;
@ -190,6 +275,14 @@ export default {
font-size: 1rem;
line-height: 1.6;
}
.survey {
padding: 8px 15px;
font-size: 0.9rem;
color: #fff;
background-color: #1150ac;
cursor: pointer;
border-radius: 4px;
}
.pic {
width: 48%;
height: 500px;
@ -198,14 +291,82 @@ export default {
}
}
}
@media (max-width: 1200px) {
.history {
.left {
width: 50%;
.app-inner {
width: 1558px;
}
.app {
display: flex;
flex-wrap: wrap;
li {
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 368px;
height: 252px;
margin: 0 14px 14px 0;
transition: 0.3s;
&:hover {
transform: scale(1.05);
.icon {
transform: rotateY(180deg);
}
}
&:nth-child(4n) {
margin-right: 0;
}
}
.bg {
width: 50%;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.icon {
position: relative;
transition: 0.5s;
}
.text {
position: relative;
margin-top: 20px;
font-size: 32px;
color: #fff;
}
}
.news {
position: relative;
display: flex;
flex-wrap: wrap;
li {
width: calc((100% - 34px) / 3);
margin: 0 17px 20px 0;
background-color: #fff;
cursor: pointer;
&:nth-child(3n) {
margin-right: 0;
}
}
img {
width: 100%;
height: 220px;
}
.texts {
padding: 20px 24px;
background-color: #fff;
}
h6 {
margin-top: 8px;
font-size: 1rem;
color: #333;
text-shadow: 0px 0px 20px rgba(176, 176, 176, 0.21);
}
.meta {
font-size: 0.9rem;
color: #666;
text-shadow: 0px 0px 20px rgba(176, 176, 176, 0.21);
}
}
@media (max-width: 1200px) {
@ -226,7 +387,8 @@ export default {
.inner {
flex-direction: column;
}
.pic, .right {
.pic,
.right {
width: 100%;
}
.right {
@ -240,7 +402,8 @@ export default {
li {
flex-direction: column !important;
height: auto;
.left, .pic {
.left,
.pic {
width: 100%;
}
.pic {

@ -3,8 +3,7 @@
<div class="forms">
<div class="item">
<span class="label">{{$t('column.Publicationtime')}}</span>
<el-date-picker
style="width: 300px"
<el-date-picker style="width: 300px"
v-model="form.publicationYear"
type="year"
:placeholder="$t('column.pleaseSelectThePublicationTime')"
@ -15,18 +14,42 @@
</el-date-picker>
</div>
<div class="search">
<input type="text" :placeholder="$t('column.PleasenameoftheAuthor')" v-model="form.monographQueryKeyWord" clearable>
<input type="text"
:placeholder="$t('column.PleasenameoftheAuthor')"
v-model="form.monographQueryKeyWord"
clearable>
</div>
</div>
<el-table :data="list" class="patent-table" ref="table" stripe header-align="center">
<el-table-column prop="title" :label="$t('column.titleOfWork')" align="center" min-width="150"></el-table-column>
<el-table-column prop="publishingHouse" :label="$t('column.press')" align="center" min-width="150"></el-table-column>
<el-table-column prop="writersAndEditors" :label="$t('column.authorPersion')" align="center" min-width="150"></el-table-column>
<el-table-column prop="publicationYear" :label="$t('column.Publicationtime')" align="center" min-width="150"></el-table-column>
<el-table :data="list"
class="patent-table"
ref="table"
stripe
header-align="center"
@row-click="rowClick">
<el-table-column prop="title"
:label="$t('column.titleOfWork')"
align="center"
min-width="150"></el-table-column>
<el-table-column prop="publishingHouse"
:label="$t('column.press')"
align="center"
min-width="150"></el-table-column>
<el-table-column prop="writersAndEditors"
:label="$t('column.authorPersion')"
align="center"
min-width="150"></el-table-column>
<el-table-column prop="publicationYear"
:label="$t('column.Publicationtime')"
align="center"
min-width="150"></el-table-column>
</el-table>
<div class="pagination">
<el-pagination background @current-change="currentChange" :current-page="page" layout="total, prev, pager, next" :total="total"></el-pagination>
<el-pagination background
@current-change="currentChange"
:current-page="page"
layout="total, prev, pager, next"
:total="total"></el-pagination>
</div>
</div>
</template>
@ -36,7 +59,7 @@ import Util from '@/libs/util';
import ColumnConst from '@/const/column'
export default {
props: ['id'],
data() {
data () {
return {
patentClasses: ColumnConst.patentClasses,
searchTimer: null,
@ -52,7 +75,7 @@ export default {
}
},
watch: {
id() {
id () {
this.id && this.initData()
},
'form.monographQueryKeyWord': function (val) {
@ -62,12 +85,12 @@ export default {
}, 500);
}
},
mounted() {
mounted () {
this.initData()
},
methods: {
//
getArticle() {
getArticle () {
this.id && this.$post(this.api.newlyPublishedArticles, {
siteId: this.$route.query.siteId || this.$store.state.content.site,
columnIds: this.id,
@ -81,24 +104,32 @@ export default {
})
.catch((res) => { });
},
initData() {
initData () {
this.page = 1
this.getArticle()
},
currentChange(val) {
currentChange (val) {
this.page = val
this.getData()
},
//
rowClick (row) {
this.$parent.toArtice(row)
}
}
};
</script>
<style lang="scss" scoped>
@import "../../styles/page/publication.scss";
@import '../../styles/page/publication.scss';
/deep/.patent-table {
thead tr, thead th {
thead tr,
thead th {
color: #fff;
background-color: #1583FF;
background-color: #1583ff;
}
.el-table__row {
cursor: pointer;
}
}
</style>

@ -3,9 +3,11 @@
<div class="forms">
<div class="item">
<span class="label">{{$t('column.patentClassification')}}</span>
<el-select v-model="form.patentClassId" clearable @change="initData" :placeholder="$t('column.Pleaseselect')">
<el-option
v-for="item in patentClasses"
<el-select v-model="form.patentClassId"
clearable
@change="initData"
:placeholder="$t('column.Pleaseselect')">
<el-option v-for="item in patentClasses"
:key="item.id"
:label="item.name === '发明专利' ? $t('column.inventionpatent') : $t('column.practicalAppearance')"
:value="item.id">
@ -14,8 +16,7 @@
</div>
<div class="item">
<span class="label">{{$t('column.applicationDate')}}</span>
<el-date-picker
v-model="form.applicationDate"
<el-date-picker v-model="form.applicationDate"
type="date"
:placeholder="$t('column.applicationDate')"
format="yyyy-MM-dd"
@ -24,26 +25,58 @@
</el-date-picker>
</div>
<div class="search">
<el-tooltip class="item" effect="dark" :content="$t('column.pleaseEnterPatentOfficer')" placement="top-start">
<input type="text" :placeholder="$t('column.pleaseEnterPatentOfficer')" v-model="form.patentQueryKeyWord" clearable>
<el-tooltip class="item"
effect="dark"
:content="$t('column.pleaseEnterPatentOfficer')"
placement="top-start">
<input type="text"
:placeholder="$t('column.pleaseEnterPatentOfficer')"
v-model="form.patentQueryKeyWord"
clearable>
</el-tooltip>
</div>
</div>
<el-table :data="list" class="patent-table" ref="table" stripe header-align="center">
<el-table-column prop="title" :label="$t('column.patentName')" align="center" min-width="150"></el-table-column>
<el-table-column :label="$t('column.patentClassification')" align="center" min-width="150">
<el-table :data="list"
class="patent-table"
ref="table"
stripe
header-align="center"
@row-click="rowClick">
<el-table-column prop="title"
:label="$t('column.patentName')"
align="center"
min-width="150"></el-table-column>
<el-table-column :label="$t('column.patentClassification')"
align="center"
min-width="150">
<template slot-scope="scope">
{{ scope.row.patentClassId ? patentClasses.find(e => e.id == scope.row.patentClassId).name === '发明专利' ? $t('column.inventionpatent') : $t('column.practicalAppearance') : '' }}
</template>
</el-table-column>
<el-table-column prop="applicationNumber" :label="$t('column.ApplicationNumber')" align="center" min-width="150"></el-table-column>
<el-table-column prop="applicationDate" :label="$t('column.ApplicationDate')" align="center" min-width="150"></el-table-column>
<el-table-column prop="dateOfAuthorization" :label="$t('column.AuthorizationDate')" align="center" min-width="150"></el-table-column>
<el-table-column prop="inventor" :label="$t('column.inventor')" align="center" min-width="150"></el-table-column>
<el-table-column prop="applicationNumber"
:label="$t('column.ApplicationNumber')"
align="center"
min-width="150"></el-table-column>
<el-table-column prop="applicationDate"
:label="$t('column.ApplicationDate')"
align="center"
min-width="150"></el-table-column>
<el-table-column prop="dateOfAuthorization"
:label="$t('column.AuthorizationDate')"
align="center"
min-width="150"></el-table-column>
<el-table-column prop="inventor"
:label="$t('column.inventor')"
align="center"
min-width="150"></el-table-column>
</el-table>
<div class="pagination">
<el-pagination background @current-change="currentChange" :current-page="page" layout="total, prev, pager, next" :total="total"></el-pagination>
<el-pagination background
@current-change="currentChange"
:current-page="page"
layout="total, prev, pager, next"
:total="total"></el-pagination>
</div>
</div>
</template>
@ -53,7 +86,7 @@ import Util from '@/libs/util';
import ColumnConst from '@/const/column'
export default {
props: ['id'],
data() {
data () {
return {
patentClasses: ColumnConst.patentClasses,
searchTimer: null,
@ -70,7 +103,7 @@ export default {
}
},
watch: {
id() {
id () {
this.id && this.initData()
},
'form.patentQueryKeyWord': function (val) {
@ -80,12 +113,12 @@ export default {
}, 500);
}
},
mounted() {
mounted () {
this.initData()
},
methods: {
//
getArticle() {
getArticle () {
this.id && this.$post(this.api.newlyPublishedArticles, {
siteId: this.$route.query.siteId || this.$store.state.content.site,
columnIds: this.id,
@ -99,24 +132,32 @@ export default {
})
.catch((res) => { });
},
initData() {
initData () {
this.page = 1
this.getArticle()
},
currentChange(val) {
currentChange (val) {
this.page = val
this.getData()
},
//
rowClick (row) {
this.$parent.toArtice(row)
}
}
};
</script>
<style lang="scss" scoped>
@import "../../styles/page/publication.scss";
@import '../../styles/page/publication.scss';
/deep/.patent-table {
thead tr, thead th {
thead tr,
thead th {
color: #fff;
background-color: #1583FF;
background-color: #1583ff;
}
.el-table__row {
cursor: pointer;
}
}
</style>

@ -1,7 +1,9 @@
<template>
<div class="wrap">
<div class="single-banner single-banner-overview">
<img class="banner-img" :src="modules[0].form.pic" alt="">
<img class="banner-img"
:src="modules[0].form.pic"
alt="">
<div class="texts">
<h6 class="banner-title">{{ modules[0].form.title }}</h6>
</div>
@ -10,46 +12,46 @@
<div class="article">
<div class="left">
<div class="search">
<input type="text" placeholder="请输入搜索内容" v-model="title" clearable>
<input type="text"
placeholder="请输入搜索内容"
v-model="title"
clearable>
</div>
<div class="letter">
<span v-for="(letter, i) in letters"
:key="i"
:class="['item', {active: curLetter == letter}]"
@click="letterClick(letter)">{{ letter }}</span>
</div>
<ul class="teams">
<li v-for="(item, i) in modules[1].list" :key="i">
<li v-for="(item, i) in modules[1].list"
:key="i">
<div class="line">
<img src="http://10.10.11.7/images/researchTeam/3.png" alt="" class="icon">
<img src="http://10.10.11.7/images/researchTeam/3.png"
alt=""
class="icon">
<span class="bold">{{ item.name }}</span>
<span class="val">/ {{ item.job }}</span>
</div>
<div class="line">
<img src="http://10.10.11.7/images/researchTeam/4.png" alt="" class="icon">
<img src="http://10.10.11.7/images/researchTeam/4.png"
alt=""
class="icon">
<span class="text">专业 {{ item.major }}</span>
</div>
<div class="line">
<img src="http://10.10.11.7/images/researchTeam/5.png" alt="" class="icon">
<img src="http://10.10.11.7/images/researchTeam/5.png"
alt=""
class="icon">
<span class="text">荣誉 {{ item.honor }}</span>
</div>
</li>
</ul>
</div>
<div class="right">
<el-tree class="column" ref="column" :data="columns" highlight-current :expand-on-click-node="false" :props="defaultProps" node-key="id" @node-click="columnTo"></el-tree>
<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" :title="item.title" @click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
</div>
<RightColumns />
</div>
</div>
</div>
@ -61,22 +63,22 @@ import articleMixins from '@/mixins/article';
import Setting from '@/setting'
import Util from '@/libs/util'
import WOW from 'wow.js'
import RightColumns from '@/components/rightColumns'
import { pinyin } from 'pinyin-pro'
export default {
mixins: [mixins, articleMixins],
data() {
data () {
return {
allList: [],
title: '',
searchTimer: null,
columns: [],
defaultProps: {
value: 'id',
label: 'columnName'
},
news: [],
hots: []
curLetter: '全部',
letters: ['全部', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
}
},
components: {
RightColumns
},
watch: {
title: function (val) {
clearTimeout(this.searchTimer);
@ -85,13 +87,12 @@ export default {
}, 500);
}
},
mounted() {
this.getColumn()
this.getArticle()
mounted () {
},
methods: {
//
getInfo() {
getInfo () {
// /
this.$post(`${this.api[this.preview ? 'getRedisCache' : 'findPage']}?columnId=${this.id}`).then(({ data }) => {
if (data.length) {
@ -103,49 +104,28 @@ export default {
this.allList = json[1].list
console.log("🚀 ~ file: index.vue ~ line 180 ~ this.$post ~ json", json)
}
}).catch(err => {})
}).catch(err => { })
},
//
filter() {
const { title } = this
filter () {
const { title, curLetter } = this
this.modules[1].list = this.allList.filter(e => {
return e.name.includes(title) || e.job.includes(title) || e.major.includes(title) || e.honor.includes(title)
console.log(11, pinyin(e.name, { toneType: 'none' })[0].toUpperCase())
return (e.name.includes(title) || e.job.includes(title) || e.major.includes(title) || e.honor.includes(title)) && (curLetter === '全部' || (curLetter !== '全部' && curLetter === pinyin(e.name, { toneType: 'none' })[0].toUpperCase()))
})
},
//
getColumn() {
this.$post(this.api.listWithTreeMenuVisible, {
siteId: this.$route.query.siteId || this.$store.state.content.site,
columnName: '',
templateId: '',
typeId : '',
isSort: 1
}).then(({ data }) => {
this.columns = data
this.getInfo()
}).catch(err => {})
this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => {
this.hots = Util.removeTag(data)
}).catch(err => {})
},
//
getArticle() {
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 => {})
},
//
letterClick (e) {
this.curLetter = e
this.filter()
}
}
};
</script>
<style lang="scss" scoped>
@import url(../../plugins/wow/animate.css);
@import "../../styles/page/page.scss";
@import '../../styles/page/page.scss';
.content {
width: 1400px;
}
@ -163,7 +143,7 @@ export default {
padding: 0 15px;
font-size: 14px;
color: #333;
background: #F7F7F7;
background: #f7f7f7;
border: 0;
border-top-left-radius: 6px;
border-bottom-left-radius: 6px;
@ -173,15 +153,42 @@ export default {
}
}
}
.letter {
display: flex;
margin: 30px 0;
border-radius: 4px;
.item {
padding: 5px 10px;
font-size: 1rem;
color: #999;
cursor: pointer;
border: 1px solid #dbdbdb;
border-right: 0;
&:first-child {
border-radius: 4px 0px 0px 4px;
}
&:last-child {
border-right: 1px solid #dbdbdb;
border-radius: 0 4px 4px 0;
}
&:hover {
color: #fff;
background: #1583ff;
}
&.active {
color: #fff;
background: #1583ff;
}
}
}
.teams {
display: flex;
flex-wrap: wrap;
margin-top: 30px;
li {
width: calc((100% - 10px) / 2);
padding: 20px 30px;
margin: 0 10px 10px 0;
background: url(http://10.10.11.7/images/researchTeam/2.png) 0 0/cover no-repeat;
background: url(http://10.10.11.7/images/researchTeam/2.png) 0 0 / cover no-repeat;
&:nth-child(even) {
margin-right: 0;
}
@ -208,41 +215,6 @@ export default {
color: #666;
}
}
.right {
width: 20%;
}
.column {
width: 100%;
margin-bottom: 25px;
}
/deep/.el-tree-node__content {
height: 44px;
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;
}
}
}
@media (max-width: 1200px) {
.content {
@ -250,7 +222,8 @@ export default {
}
.article {
flex-direction: column;
.left, .right {
.left,
.right {
width: 100%;
}
.left {

@ -50,38 +50,8 @@
</li>
</ul>
</div>
<div class="right">
<el-tree class="column"
ref="column"
:data="columns"
highlight-current
:expand-on-click-node="false"
:props="defaultProps"
node-key="id"
@node-click="columnTo"></el-tree>
<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"
:title="item.title"
@click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
</div>
<RightColumns />
</div>
</div>
</div>
@ -93,24 +63,20 @@ import articleMixins from '@/mixins/article';
import Setting from '@/setting'
import Util from '@/libs/util'
import WOW from 'wow.js'
import RightColumns from '@/components/rightColumns'
export default {
mixins: [mixins, articleMixins],
data () {
return {
columnId: '',
form: {},
columns: [],
defaultProps: {
value: 'id',
label: 'columnName'
},
news: [],
hots: []
}
},
components: {
RightColumns
},
mounted () {
this.getColumn()
this.getArticle()
},
methods: {
//
@ -127,33 +93,6 @@ export default {
}
}).catch(err => { })
},
//
getColumn () {
this.$post(this.api.listWithTreeMenuVisible, {
siteId: this.$route.query.siteId || this.$store.state.content.site,
columnName: '',
templateId: '',
typeId: '',
isSort: 1
}).then(({ data }) => {
this.columns = data
this.getInfo()
}).catch(err => { })
this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => {
this.hots = Util.removeTag(data)
}).catch(err => { })
},
//
getArticle () {
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>

@ -0,0 +1,131 @@
<template>
<div class="wrap p-b-30">
<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>
<div class="content">
<div class="left">
<ul class="list">
<li>
<img src="http://10.10.11.7/images/team/2.png"
alt=""
class="pic">
<div class="texts">
<h6>孙冬柏</h6>
<p class="job">院长/深圳产业光源项目总经理</p>
<div class="text">孙冬柏作为院领导负责组织制定研究院的战略规划与实施监督分管人才队伍建设财务管理等方面工作同时作为总指挥总负责人主持建设深圳产业光源项目孙冬柏曾任中山大学常务副校长层主持建设了十一五国家重大科技基础设施重大工程材料服役安全研究评价设施暨国家材料服役安全科学中心担任分总体负责人负责研制建设了十二五国家重大科技基础设施高能同步辐射光源验证装置工程材料线站</div>
</div>
</li>
<li>
<img src="http://10.10.11.7/images/team/2.png"
alt=""
class="pic">
<div class="texts">
<h6>孙冬柏</h6>
<p class="job">院长/深圳产业光源项目总经理</p>
<div class="text">孙冬柏作为院领导负责组织制定研究院的战略规划与实施监督分管人才队伍建设财务管理等方面工作同时作为总指挥总负责人主持建设深圳产业光源项目孙冬柏曾任中山大学常务副校长层主持建设了十一五国家重大科技基础设施重大工程材料服役安全研究评价设施暨国家材料服役安全科学中心担任分总体负责人负责研制建设了十二五国家重大科技基础设施高能同步辐射光源验证装置工程材料线站</div>
</div>
</li>
</ul>
</div>
<RightColumns />
</div>
</div>
</template>
<script>
import mixins from '@/mixins/page'
import WOW from 'wow.js'
import RightColumns from '@/components/rightColumns'
export default {
mixins: [mixins],
data () {
return {
}
},
components: {
RightColumns
},
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) => { });
},
}
};
</script>
<style lang="scss" scoped>
@import url(../../plugins/wow/animate.css);
@import '../../styles/page/page.scss';
.content {
display: flex;
width: 1400px;
justify-content: space-between;
.left {
width: calc(100% - 300px);
}
.list {
li {
display: flex;
align-items: center;
padding-bottom: 30px;
margin-bottom: 30px;
border-bottom: 1px solid #ddd;
&:last-child {
border-bottom: 0;
}
}
.pic {
width: 224px;
height: 268px;
margin-right: 25px;
}
h6 {
font-size: 1.2rem;
font-family: PingFangSC-Medium, PingFang SC;
color: #333;
}
.job {
margin: 10px 0;
font-size: 1rem;
font-family: PingFangSC-Regular, PingFang SC;
color: #333;
}
.text {
font-size: 1rem;
font-family: PingFangSC-Regular, PingFang SC;
color: #333;
}
}
}
</style>

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