长页添加

mobile
yujialong 2 years ago
parent 515dfc6d86
commit e67e96bb63
  1. 1
      src/layouts/home/index.vue
  2. 2
      src/pages/article/activity.vue
  3. 2
      src/pages/article/index.vue
  4. 8
      src/pages/column/index.vue
  5. 95
      src/pages/publication/index.vue
  6. 140
      src/pages/publication/patent.vue
  7. 128
      src/pages/publication/thesis.vue
  8. 286
      src/pages/talentCenter/index.vue
  9. 7
      src/plugins/requests/index.js
  10. 14
      src/router/modules/publication.js
  11. 14
      src/router/modules/talentCenter.js

@ -37,7 +37,6 @@ export default {
document.body.onclick = e => {
e.stopPropagation()
this.$refs.header.showSearch = false
console.log(this.$refs.header.showSearch)
}
},
methods: {

@ -142,8 +142,6 @@ export default {
//
getArticle() {
this.$post(this.api.newlyPublishedArticles, {
pageNum: 1,
pageSize: 5,
siteId: this.$route.query.siteId || this.$store.state.content.site

@ -157,8 +157,6 @@ export default {
//
getArticle() {
this.$post(this.api.newlyPublishedArticles, {
pageNum: 1,
pageSize: 5,
siteId: this.$route.query.siteId || this.$store.state.content.site

@ -321,8 +321,6 @@ export default {
//
getNews() {
this.$post(this.api.newlyPublishedArticles, {
pageNum: 1,
pageSize: 5,
siteId: this.$route.query.siteId || this.$store.state.content.site
@ -632,9 +630,8 @@ export default {
cursor: pointer;
}
.texts {
max-width: 620px;
width: 52%;
padding-left: 30px;
margin-right: 20px;
}
.type {
margin-bottom: 15px;
@ -663,8 +660,7 @@ export default {
@include mul-ellipsis(2);
}
.pic {
width: 430px;
// min-width: 380px;
width: 46%;
height: 244px;
}
}

@ -0,0 +1,95 @@
<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">
<Thesis v-if="!active" />
<Patent v-if="active === 1" />
</div>
</div>
</template>
<script>
import mixins from '@/mixins/page'
import WOW from 'wow.js'
import Thesis from './thesis'
import Patent from './patent'
export default {
mixins: [mixins],
data() {
return {
active: 0,
tabs: ['论文', '专利', '专著']
}
},
components: {
Thesis,
Patent
},
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
},
}
};
</script>
<style lang="scss" scoped>
@import url(../../plugins/wow/animate.css);
@import "../../styles/page/page.scss";
.wrap {
background-color: #f9f9f9;
}
.tabs {
display: flex;
justify-content: center;
box-shadow: 0px 2px 10px 0px rgba(223,223,223,0.28);
li {
padding: 25px 19px;
margin: 0 70px;
font-size: 1.1rem;
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: 20px 0;
margin: 0 auto;
}
</style>

@ -0,0 +1,140 @@
<template>
<div class="wrap">
<div class="forms">
<div class="item">
<span class="label">专利类别</span>
<el-select v-model="form.classificationId">
<el-option
v-for="item in classifications"
:key="item.id"
:label="item.classificationName"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="item">
<span class="label">申请日期</span>
<el-select v-model="form.classificationId">
<el-option
v-for="item in classifications"
:key="item.id"
:label="item.classificationName"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="search">
<input type="text" placeholder="请输入专利名称/发明人姓名/申请号员" v-model="form.title">
<i class="icon">
<img src="@/assets/images/search-white.png" alt="">
</i>
</div>
</div>
<el-table :data="list" class="patent-table" ref="table" stripe header-align="center">
<el-table-column prop="name" label="专利名称" align="center" min-width="150"></el-table-column>
<el-table-column prop="name" label="专利类别" align="center" min-width="150"></el-table-column>
<el-table-column prop="name" label="申请号" align="center" min-width="150"></el-table-column>
<el-table-column prop="name" label="申请日期" align="center" min-width="150"></el-table-column>
<el-table-column prop="name" label="授权日期" align="center" min-width="150"></el-table-column>
<el-table-column prop="name" label="发明人" 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>
</div>
</div>
</template>
<script>
export default {
data() {
return {
form: {
},
classifications: [],
list: [
{
name: '副驾驶的路径'
},
{
name: '副驾驶的路径'
}
],
page: 1,
pageSize: 10,
total: 0,
}
},
mounted() {
},
methods: {
currentChange(val) {
this.page = val
this.getData()
},
}
};
</script>
<style lang="scss" scoped>
.forms {
display: flex;
align-items: center;
padding: 30px;
margin-bottom: 20px;
background-color: #fff;
.item {
display: inline-flex;
align-items: center;
margin-right: 30px;
}
.label {
font-size: 16px;
color: #333;
white-space: nowrap;
}
/deep/.el-input__inner {
width: 100%;
height: 48px;
line-height: 48px;
border: 0;
background: #F7F7F7;
}
.search {
display: inline-flex;
width: 34%;
input {
width: 100%;
height: 48px;
padding: 0 15px;
font-size: 14px;
color: #333;
background: #F7F7F7;
border: 0;
border-top-left-radius: 6px;
border-bottom-left-radius: 6px;
&:focus {
outline: none;
}
}
}
.icon {
display: inline-flex;
justify-content: center;
align-items: center;
width: 62px;
height: 48px;
background: #1583FF;
border-radius: 0px 6px 6px 0px;
cursor: pointer;
}
}
/deep/.patent-table {
thead tr, thead th {
color: #fff;
background-color: #1583FF;
}
}
</style>

@ -0,0 +1,128 @@
<template>
<div class="wrap">
<div class="forms">
<div class="item">
<span class="label">发表年度</span>
<el-select v-model="form.classificationId">
<el-option
v-for="item in classifications"
:key="item.id"
:label="item.classificationName"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="search">
<input type="text" placeholder="请输入论文题目/期刊名称/作者名称" v-model="form.title">
<i class="icon">
<img src="@/assets/images/search-white.png" alt="">
</i>
</div>
</div>
<ul class="list">
<li>
<h6>新型靶向药物开发与重大疾病诊疗一代高性能绿色安全新能源汽车</h6>
<p class="meta">作者: Xia, Ming; Huang, Zunkai; Tian, Li; Wang, Hui; Chang, Victor; Zhu, Yongxin; Feng, Songlin</p>
<p class="meta">期刊名称: J. Syst. Architect.</p>
<p class="meta">出版年: 2021 : 115 文献号: 101991</p>
</li>
<li>
<h6>新型靶向药物开发与重大疾病诊疗一代高性能绿色安全新能源汽车</h6>
<p class="meta">作者: Xia, Ming; Huang, Zunkai; Tian, Li; Wang, Hui; Chang, Victor; Zhu, Yongxin; Feng, Songlin</p>
<p class="meta">期刊名称: J. Syst. Architect.</p>
<p class="meta">出版年: 2021 : 115 文献号: 101991</p>
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
form: {
},
classifications: []
}
},
mounted() {
},
methods: {
}
};
</script>
<style lang="scss" scoped>
.forms {
display: flex;
align-items: center;
padding: 30px;
margin-bottom: 20px;
background-color: #fff;
.item {
display: inline-flex;
align-items: center;
margin-right: 30px;
}
.label {
font-size: 16px;
color: #333;
white-space: nowrap;
}
/deep/.el-input__inner {
width: 100%;
height: 48px;
line-height: 48px;
border: 0;
background: #F7F7F7;
}
.search {
display: inline-flex;
width: 34%;
input {
width: 100%;
height: 48px;
padding: 0 15px;
font-size: 14px;
color: #333;
background: #F7F7F7;
border: 0;
border-top-left-radius: 6px;
border-bottom-left-radius: 6px;
&:focus {
outline: none;
}
}
}
.icon {
display: inline-flex;
justify-content: center;
align-items: center;
width: 62px;
height: 48px;
background: #1583FF;
border-radius: 0px 6px 6px 0px;
cursor: pointer;
}
}
.list {
li {
padding: 30px;
margin-bottom: 15px;
background-color: #fff;
}
h6 {
margin-bottom: 10px;
font-size: 1.2rem;
}
.meta {
font-size: 1rem;
color: #666;
line-height: 30px;
}
}
</style>

@ -0,0 +1,286 @@
<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> -->
<div class="content">
<div class="article">
<div class="left">
<h6 class="title">有兴趣将科学转化为创新吗在IASF建立你的职业生涯</h6>
<div class="text">
<p>在IASF我们从不同的角度看待世界我们的科学家和工程师在清洁能源环境技术国家安全等方面进行世界一流的研究我们正在寻找创造性的方法来让世界为更美好的未来做好准备</p>
<p>通过选择您感兴趣的机会类型开始</p>
</div>
<ul class="recruit">
<li>
<img class="pic" src="http://10.10.11.7/images/talentCenter/1.png" alt="">
<div class="texts">
<div class="flex j-between a-center">
<h6 class="c-title">校园招聘</h6>
<div class="more">查看更多 ></div>
</div>
<p class="des">在IASF有兴趣将科学转化为创新吗在IASF建立你的职业生我们的科学国家安全等方面进行世界</p>
<p class="hot">热门岗位</p>
<div class="labels">
<p class="label">实验室综合管理岗</p>
<p class="label">数据库开发</p>
<p class="label">高级电气工程师</p>
<p class="label">综合研究院</p>
<p class="label">高级数据库工程师</p>
</div>
</div>
</li>
<li>
<img class="pic" src="http://10.10.11.7/images/talentCenter/2.png" alt="">
<div class="texts">
<div class="flex j-between a-center">
<h6 class="c-title">社会招聘</h6>
<div class="more">查看更多 ></div>
</div>
<p class="des">在IASF有兴趣将科学转化为创新吗在IASF建立你的职业生我们的科学国家安全等方面进行世界</p>
<p class="hot">热门岗位</p>
<div class="labels">
<p class="label">实验室综合管理岗</p>
<p class="label">数据库开发</p>
<p class="label">高级电气工程师</p>
<p class="label">综合研究院</p>
<p class="label">高级数据库工程师</p>
</div>
</div>
</li>
</ul>
<ul class="notice">
<li>
<img class="pic" src="http://10.10.11.7/images/talentCenter/3.png" alt="">
<p class="text">通知公告</p>
</li>
<li>
<img class="pic" src="http://10.10.11.7/images/talentCenter/4.png" alt="">
<p class="text">人才服务</p>
</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>
</div>
</div>
</div>
</template>
<script>
import mixins from '@/mixins/page'
import Setting from '@/setting'
import Util from '@/libs/util'
import WOW from 'wow.js'
export default {
mixins: [mixins],
data() {
return {
columnId: '',
form: {},
columns: [],
defaultProps: {
value: 'id',
label: 'columnName'
},
news: [],
hots: []
}
},
mounted() {
this.getColumn()
this.getArticle()
},
methods: {
//
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>
<style lang="scss" scoped>
@import url(../../plugins/wow/animate.css);
@import "../../styles/page/page.scss";
.wrap {
background-color: #F9FAFA;
}
.content {
width: 1400px;
}
.article {
display: flex;
justify-content: space-between;
.left {
width: 66%;
.title {
padding-bottom: 10px;
font-size: 1.2rem;
color: #666;
border-bottom: 1px solid #EAEEF2;
}
.text {
margin-top: 20px;
font-size: 1.1rem;
color: #333;
line-height: 28px;
p {
margin-bottom: 20px;
}
}
}
.recruit {
li {
display: flex;
padding: 20px;
margin-bottom: 24px;
background-color: #fff;
}
.pic {
width: 410px;
height: 250px;
margin-right: 20px;
}
.c-title {
font-size: 1.2rem;
columns: #333;
}
.more {
font-size: .8rem;
color: #0648A8;
cursor: pointer;
}
.des {
margin: 20px 0;
font-size: 1rem;
color: #666;
line-height: 22px;
}
.hot {
margin-bottom: 10px;
font-size: 1.1rem;
color: #333;
}
.labels {
display: flex;
flex-wrap: wrap;
}
.label {
padding: 5px 15px;
margin: 0 15px 15px 0;
font-size: 1rem;
border-radius: 22px;
border: 1px solid #666;
}
}
.notice {
display: flex;
li {
position: relative;
width: calc((100% - 20px) / 2);
height: 300px;
padding: 20px;
background-color: #fff;
}
.pic {
width: 100%;
height: 100%;
}
.text {
position: absolute;
bottom: 20px;
left: 20px;
width: calc(100% - 40px);
font-size: 1.6rem;
line-height: 66px;
text-align: center;
color: #fff;
background: rgba(32,57,81,0.68);
}
}
.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: 1420px) {
.content {
width: 98%;
}
}
</style>

@ -51,7 +51,8 @@ service.interceptors.response.use(
// 服务器状态码不是200的情况
error => {
if (error.response.status) {
switch (error.response.status) {
const { msg, code } = error.response.data
switch (code) {
// 401: 未登录
case 401:
util.local.remove(Setting.storeKey);
@ -76,8 +77,8 @@ service.interceptors.response.use(
break;
// 其他错误,直接抛出错误提示
default:
util.errorMsg(error.response.data.msg);
Promise.reject(res);
util.errorMsg(msg);
Promise.reject(error.response.data);
}
return Promise.reject(error.response);
}

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

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