xzrkz-web/src/pages/CultureDynamics/CultureDynamics.vue
dong_bo0602 2335a730de 0617
2020-06-17 15:19:42 +08:00

328 lines
8.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<Header></Header>
<div class="location">
<div class="location-content">
您的位置<router-link to="/">首页</router-link> >
</div>
</div>
<div class="type">
<div class="type-container">
<span>类型</span>
<ul>
<li :class="{active: page.newsDirectoriesId == ''}" @click="changeType(null)">全部</li>
<li v-for="(btn,idx) in typeList" :key="idx" :class="{active: page.newsDirectoriesId == btn.newsDirectoriesId}" @click="changeType(btn.newsDirectoriesId)">{{btn.directoriesName}}</li>
</ul>
</div>
</div>
<div class="dynamics">
<div class="dynamics-left">
<!--<div class="dynamics-title">-->
<!--<span>文化动态</span>-->
<!--</div>-->
<div class="dynamics-list">
<ul v-if="hasData">
<li v-for="(list,idx) in requestList" :key="idx" @click="goDetail(list.templateRecordUrl)">
<div class="dynamics-list-left">
<img :src="'http://192.168.0.104:8082/news/route/file/downloadfile/false/' + list.newsContentCoverList" alt="">
</div>
<div class="dynamics-list-right">
<h3>{{list.newsContentTitle}}</h3>
<span>{{list.newsContentPublishTime}}</span>
<!--<button>MORE></button>-->
</div>
</li>
</ul>
<div class="no-data" v-else>
<img src="@/assets/images/no-data.png" alt="">
</div>
</div>
</div>
</div>
<div class="pager" v-if="hasData">
<span @click="paging(1)">首页</span>
<span @click="paging(page.page - 1)" v-if="page.page > 1">上一页</span>
<ul v-if="page.totalPage > 0 && page.totalPage <= 5">
<li v-for="cpage in page.totalPage" :class="{'active': page.page == cpage}" :key="cpage" @click="paging(cpage)">
{{cpage}}
</li>
</ul>
<ul v-if="page.totalPage > 5">
<li v-if="page.page < 3" v-for="cpage in 5" :class="{'active': page.page == cpage}" :key="cpage" @click="paging(cpage)">
{{cpage}}
</li>
<li v-if="page.page > page.totalPage - 2" v-for="cpage in 5" :class="{'active': page.page == (page.totalPage - 5 + cpage)}" :key="cpage" @click="paging(cpage)">
{{page.totalPage - 5 + cpage}}
</li>
<li v-if="page.page >= 3 && page.page <= page.totalPage - 2" v-for="cpage in 5" :class="{'active': page.page == (page.page - (3 - cpage))}" :key="cpage" @click="paging(cpage)">
{{page.page - (3 - cpage)}}
</li>
</ul>
<span @click="paging(page.page + 1)" v-if="page.page < page.totalPage">下一页</span>
<span @click="paging(page.totalPage)">尾页</span>
<input type="text" v-model="changePage" v-if="showJumpBtn">
<i v-if="showJumpBtn">/{{page.totalPage}}页</i>
<button v-if="showJumpBtn" @click="doJumpPage">跳转</button>
</div>
<Footer></Footer>
</div>
</template>
<script>
import Header from '@/common/components/Header'
import Footer from '@/common/components/Footer'
import axios from 'axios'
export default {
name: 'CultureDynamics',
components: {
Header,
Footer
},
data () {
return {
changePage: 1,
typeList: [],
dynamicList: [],
rankList: [],
requestList: [],
page: {
page: 1,
rows: 8,
totalPage: 1,
newsDirectoriesId: '',
newsDirectoriesParentId: 'f497904b-7727-4832-891c-604c36ae4167'
}
}
},
computed: {
showJumpBtn () {
return this.page.totalPage > 1
},
hasData () {
return this.requestList.length > 0
}
},
methods: {
doJumpPage: function () {
this.page.page = this.changePage
this.getNews()
},
getDynamicData () {
var self = this
axios.get('/api/dynamic.json').then(function (res) {
res = res.data
const data = res.data
self.rankList = data.clickRank
})
},
getNews: function () {
var self = this
axios.get('http://192.168.0.104:8082/news/app/newscontent/listpagenewscontentrelease', {
params: self.page
}).then(function (res) {
for (var i = 0; i < res.data.rows.length; i++) {
res.data.rows[i].newsContentCoverList = res.data.rows[i].newsContentCoverList[0].contentCoverId
}
self.requestList = res.data.rows
self.page.page = res.data.page
self.page.totalPage = Math.ceil(res.data.total / self.page.rows)
})
},
paging: function (page) {
this.page.page = page
this.getNews()
},
goDetail: function (url) {
window.location.href = 'http://192.168.0.104/' + url
},
getTypeList: function () {
var self = this
axios.get('http://192.168.0.104:8082/news/app/newsdirectories/listnewsdirectoriesrelease', {
params: {
directoriesParentId: 'f497904b-7727-4832-891c-604c36ae4167'
}
}).then(function (res) {
console.log(res)
self.typeList = res.data
})
},
changeType: function (type) {
if (type) {
this.page.newsDirectoriesId = type
} else {
this.page.newsDirectoriesId = ''
}
this.getNews()
}
},
mounted () {
this.getDynamicData()
this.getNews()
this.getTypeList()
}
}
</script>
<style lang="stylus" rel="stylesheet/stylus" scoped>
@import "~styles/public.styl"
.location
background #e5e5e5
line-height 30px
.location-content
width 1200px
margin 0 auto
font-size 14px
color #565656
.type
padding 15px 0
background #f0f0f0
.type-container
width 1200px
margin 0 auto
overflow hidden
font-size 14px
color #565656
span
float left
line-height 30px
ul
overflow hidden
float left
margin-left 20px
li
float left
width 80px
height: 30px
text-align center
line-height 30px
cursor pointer
&.active
background $main-color
border-radius 4px
color #fff
.dynamics
width 1200px
margin 20px auto
overflow hidden
.dynamics-list
min-height 500px
ul
li
width: 280px;
box-shadow: 0px 0px 10px 0px rgba(176,176,176,0.3);
box-sizing: border-box;
float: left;
margin-right: 25px;
margin-bottom: 25px;
cursor: pointer;
&:nth-child(4n)
margin-right 0
&:hover
box-shadow 0px 0px 20px 0px rgba(176,176,176,0.9)
.dynamics-list-left
width 100%
height 185px
img
width 100%
height 100%
.dynamics-list-right
padding 10px 20px
text-align center
h3
font-size 18px
color #565656
white-space nowrap
overflow hidden
text-overflow: ellipsis
p
font-size 14px
color #565656
line-height 25px
&.desc
height 50px
overflow hidden
span
display block
font-size 14px
color #a8a8a8
line-height 25px
button
width 70px
height: 25px
text-align center
line-height 25px
border none
outline none
background $main-color
color #fff
font-size 12px
border-radius 4px
&:after
content ''
display block
clear both
.no-data
padding 80px 0
text-align center
img
width 200px
.pager
width 1200px
margin 20px auto
text-align center
font-size 0
span
display inline-block
padding 0 15px
line-height 25px
color #676767
border 1px solid #d2d2d2
font-size 14px
margin 0 5px
vertical-align middle
cursor pointer
ul
display inline-block
overflow hidden
vertical-align middle
li
width 45px
line-height 25px
float left
margin-right 10px
border 1px solid #d2d2d2
cursor pointer
text-align center
font-size 14px
color #676767
&.active
background $main-color
color #fff
border 1px solid $main-color
&:last-child
margin 0
input
width 50px
height 25px
border 1px solid #d2d2d2
text-align center
vertical-align middle
i
font-style normal
color #676767
font-size 14px
line-height 25px
display inline-block
vertical-align middle
margin 0 5px
button
border none
outline none
background #4792C2
width 50px
height 25px
vertical-align middle
color #fff
font-size 14px
</style>