xzrkz-web/src/pages/CultureVenue/CultureVenue.vue

341 lines
9.3 KiB
Vue
Raw Normal View History

2020-06-07 10:28:34 +08:00
<template>
<div>
<Header></Header>
<div class="location">
<div class="location-content">
您的位置<router-link to="/">首页</router-link> >
</div>
</div>
<div class="select">
<div class="select-container">
<div class="select-line">
<span>活动类别></span>
<button :class="{active: page.venueType == ''}" @click="changeType(null)">全部</button>
<button v-for="(btn,idx) in typeList" :key="idx" @click="changeType(btn.dictionaryId)" :class="{active: page.venueType == btn.dictionaryId}">{{btn.dictionaryName}}</button>
</div>
<div class="select-line">
<span>选择区域></span>
2020-07-14 16:14:54 +08:00
<div style="display: inline-block;width: 95%;">
2020-06-07 10:28:34 +08:00
<button :class="{active: page.venueArea == ''}" @click="changeArea(null)">全部</button>
2020-07-31 17:23:49 +08:00
<button v-for="(btn,idx) in areaList" :key="idx" @click="changeArea(btn.areaId, btn.areaLevel)" :class="{active: page.venueArea == btn.areaId}">{{btn.areaName}}</button>
2020-06-07 10:28:34 +08:00
</div>
</div>
</div>
</div>
<div class="venue">
2020-07-14 16:14:54 +08:00
<div v-if="!isLoading">
<ul v-if="hasData">
2020-07-16 19:30:11 +08:00
<router-link :to="{path: '/cultureVenueDetail/' + list.venuesInfoId}" tag="li" class="venue-list" v-for="list in venueList" :key="list.id" :title="list.venueName">
2020-07-14 16:14:54 +08:00
<img :src="url + '/venuebooking/route/file/downloadfile/false/' + list.venuePanorama" alt="">
<div class="venue-name">
<p>{{list.venueName}}</p>
</div>
</router-link>
</ul>
<div class="no-data" v-else>
<img src="@/assets/images/no-data.png" alt="">
</div>
2020-06-07 10:28:34 +08:00
</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>
2020-07-14 16:14:54 +08:00
<div class="loading" v-if="isLoading">
<img src="@/assets/images/loading.gif" alt="">
</div>
2020-06-07 10:28:34 +08:00
<Footer></Footer>
</div>
</template>
<script>
import Header from '@/common/components/Header'
import Footer from '@/common/components/Footer'
2020-07-11 14:45:34 +08:00
import common from '@/common/components/common.js'
2020-06-07 10:28:34 +08:00
import axios from 'axios'
export default {
name: 'CultureVenue',
components: {
Header,
Footer
},
data () {
return {
changePage: 1,
typeList: [],
cityList: [],
areaList: [],
venueList: [],
page: {
page: 1,
rows: 8,
totalPage: 1,
venueType: '',
2020-07-31 17:23:49 +08:00
venueArea: '',
areaLevel: ''
2020-07-11 14:45:34 +08:00
},
2020-07-14 16:14:54 +08:00
url: common.url,
isLoading: false
2020-06-07 10:28:34 +08:00
}
},
computed: {
hasData () {
return this.venueList.length > 0
},
showJumpBtn () {
return this.page.totalPage > 1
}
},
methods: {
2020-07-31 17:23:49 +08:00
changeArea: function (area, lv) {
2020-07-18 12:25:06 +08:00
this.page.page = 1
this.changePage = 1
2020-06-07 10:28:34 +08:00
if (area) {
this.page.venueArea = area
2020-07-31 17:23:49 +08:00
this.page.areaLevel = 'area' + (parseInt(lv) + 1)
2020-06-07 10:28:34 +08:00
} else {
this.page.venueArea = ''
}
this.getVenueList()
},
changeType: function (type) {
2020-07-18 12:25:06 +08:00
this.page.page = 1
this.changePage = 1
2020-06-07 10:28:34 +08:00
if (type) {
this.page.venueType = type
} else {
this.page.venueType = ''
}
this.getVenueList()
},
paging: function (page) {
this.page.page = page
this.getVenueList()
},
doJumpPage: function () {
this.page.page = this.changePage
this.getVenueList()
},
getTypeList: function () {
var self = this
2022-11-23 23:32:15 +08:00
axios.get(self.url + 'app/venuedictionary/listvenuedictionarybyparentidrelease/df8b758c-f6d8-465a-9aa8-c451fde47076').then(function (res) {
2020-06-07 10:28:34 +08:00
self.typeList = res.data.data
})
},
2020-07-14 16:14:54 +08:00
getAreaList: function () {
2020-06-07 10:28:34 +08:00
var self = this
2022-11-23 23:32:15 +08:00
axios.get(self.url + 'app/area/listbyparentidrelease/640675').then(function (res) {
2020-07-31 17:23:49 +08:00
self.areaList = res.data
2020-06-07 10:28:34 +08:00
})
},
getVenueList: function () {
var self = this
2020-07-14 16:14:54 +08:00
self.isLoading = true
2022-11-23 23:32:15 +08:00
axios.get(self.url + 'app/venuesinfo/listpagevenuesinforelease', {
2020-06-07 10:28:34 +08:00
params: self.page
}).then(function (res) {
for (var i = 0; i < res.data.rows.length; i++) {
res.data.rows[i].venuePanorama = res.data.rows[i].venuePanorama.split(',')[0]
}
self.venueList = res.data.rows
self.page.page = res.data.page
self.changePage = res.data.page
self.page.totalPage = Math.ceil(res.data.total / self.page.rows)
2020-07-14 16:14:54 +08:00
self.isLoading = false
2020-06-07 10:28:34 +08:00
})
}
},
mounted () {
this.getTypeList()
2020-07-14 16:14:54 +08:00
// this.getCityList()
this.getAreaList()
2020-06-07 10:28:34 +08:00
this.getVenueList()
}
}
</script>
<style lang="stylus" rel="stylesheet/stylus" scoped>
2020-06-10 11:19:26 +08:00
@import "~styles/public.styl"
2020-06-07 10:28:34 +08:00
.location
background #e5e5e5
line-height 30px
2020-06-10 11:19:26 +08:00
font-family 'zangwen'
2020-06-07 10:28:34 +08:00
.location-content
width 1200px
margin 0 auto
font-size 14px
color #565656
.select
2020-06-10 11:19:26 +08:00
font-family 'zangwen'
2020-06-07 10:28:34 +08:00
padding 10px 0 0
background #f0f0f0
overflow hidden
.select-container
width 1200px
margin 0 auto
.select-line
margin-bottom 10px
font-size 14px
span
color #565656
2020-07-14 16:14:54 +08:00
vertical-align top
line-height 30px
2020-06-07 10:28:34 +08:00
button
2020-06-10 11:19:26 +08:00
font-family 'zangwen'
2020-06-07 10:28:34 +08:00
width 80px
height 30px
padding 0 5px
box-sizing border-box
border none
background none
outline none
color #565656
border-radius 4px
cursor pointer
white-space nowrap
overflow hidden
text-overflow: ellipsis
vertical-align middle
&.active
color #fff
2020-06-10 11:19:26 +08:00
background $main-color
2020-06-07 10:28:34 +08:00
.venue
width 1200px
min-height 400px
margin 20px auto
ul
2020-07-16 19:30:11 +08:00
&:after
content ''
display block
clear both
2020-06-07 10:28:34 +08:00
.venue-list
float left
width 280px
height 185px
position relative
margin-right 26px
margin-bottom 26px
cursor pointer
2020-07-16 19:30:11 +08:00
box-shadow:0px 0px 10px 0px rgba(176,176,176,0.3);
2020-06-07 10:28:34 +08:00
&:nth-child(4n)
margin-right 0
2020-07-16 19:30:11 +08:00
&:hover
box-shadow:0px 0px 20px 0px rgba(176,176,176,0.9);
2020-06-07 10:28:34 +08:00
img
width 100%
height 185px
.venue-name
position absolute
bottom 0
left 0
width 100%
height 35px
padding 0 5px
box-sizing border-box
text-align center
background rgba(0,0,0,0.6)
p
2020-07-16 19:30:11 +08:00
font-family '宋体'
2020-06-07 10:28:34 +08:00
line-height 35px
color #fff
font-size 14px
white-space nowrap
overflow hidden
text-overflow: ellipsis
.no-data
padding 80px 0
text-align center
img
width 200px
.pager
width 1200px
margin 20px auto
text-align center
font-size 0
2020-06-10 11:19:26 +08:00
font-family 'zangwen'
2020-06-07 10:28:34 +08:00
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
2020-06-10 11:19:26 +08:00
background $main-color
2020-06-07 10:28:34 +08:00
color #ffffff
2020-06-10 11:19:26 +08:00
border 1px solid $main-color
2020-06-07 10:28:34 +08:00
&: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
2020-07-18 12:25:06 +08:00
background $main-color
cursor pointer
2020-06-07 10:28:34 +08:00
width 50px
height 25px
vertical-align middle
color #fff
font-size 14px
2020-07-14 16:14:54 +08:00
.loading
position fixed
top 50%
left 50%
transform translate(-50%, -50%)
background rgba(255,255,255,0.6)
padding 30px
border-radius 10px
box-shadow 0 0 17px #DEDEDE
2020-06-07 10:28:34 +08:00
</style>