411 lines
9.3 KiB
Vue
411 lines
9.3 KiB
Vue
|
<template>
|
|||
|
<view class="campusstyle">
|
|||
|
<!-- 底图 -->
|
|||
|
<view class="campusstyleItem"></view>
|
|||
|
<!-- 轮播图 -->
|
|||
|
<view class="campusstyleIndex">
|
|||
|
<swiper class="carousel" :indicator-dots="false" interval="3000" duration="500" :autoplay="true" circular
|
|||
|
previous-margin="70px" next-margin="70px" @change="swiperChange">
|
|||
|
<swiper-item class="swiper-item" v-for="(item, index) in newlists" :key="index">
|
|||
|
<view class="carousel-box" :class="[currentIndex == index ? 'active' : 'quiet']">
|
|||
|
<image class="carousel-image" @click="swiperLink(item)"
|
|||
|
:src="item.imageUrl?item.imageUrl:newsImages" mode="scaleToFill" />
|
|||
|
<view class="title-box">
|
|||
|
<view class="top-title font-16 text-color-3 font-weight-600">
|
|||
|
{{ item.title }}
|
|||
|
</view>
|
|||
|
<view class="pub-title font-14 text-color-6">发布时间:{{ item.timestamp }}</view>
|
|||
|
<view class="pub font-14 text-color-6">作者:{{ item.creator }}</view>
|
|||
|
<view class="top-num flex font-14 text-color-6">
|
|||
|
<!-- <view class="chat mr-40">
|
|||
|
<view class="mr-8">
|
|||
|
<image style="width: 100%;height: 100%;" src="../../static/campus/评论.png">
|
|||
|
</image>
|
|||
|
</view>
|
|||
|
<text style="margin-top: -4rpx;">{{ item.remarkCount }}</text>
|
|||
|
</view> -->
|
|||
|
<view class="chat mr-40" @click="newsGiveaList(item)">
|
|||
|
<view class="mr-8">
|
|||
|
<image style="width: 100%;height: 100%;" src="../../static/campus/点赞.png">
|
|||
|
</image>
|
|||
|
</view>
|
|||
|
<text style="margin-top: -4rpx;">{{ item.praiseCount }}</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</swiper-item>
|
|||
|
</swiper>
|
|||
|
</view>
|
|||
|
|
|||
|
|
|||
|
<!-- 校园风采 -->
|
|||
|
<view class="demeanour">
|
|||
|
<view style="color: #333333;font-size: 14px;margin-left: 26rpx;">校园风采</view>
|
|||
|
<scroll-view :scroll-y="showAllPage" upper-threshold="1" :scroll-top="scrolltop" @scroll="scroll"
|
|||
|
@scrolltolower="scrolltolower" @scrolltoupper="scrolltoupper" class="demo-scroll-block">
|
|||
|
<view class="demeanourItem" v-for="(items,index) in tabList" :key="items.id">
|
|||
|
<view class="demeanourUrl" @click="onUrlClick(JSON.stringify(items))">
|
|||
|
<image :src='items.imageUrl' :lazy-load="true"></image>
|
|||
|
</view>
|
|||
|
<view class="demeanourUrl2">
|
|||
|
<view style="color: #333333;font-size: 14px;margin-bottom: 10rpx;">
|
|||
|
{{items.title?items.title:"主题活动"}}</view>
|
|||
|
<view style="display: flex;margin-bottom: 10rpx;">
|
|||
|
<view style="width: 30rpx;height: 30rpx;margin-right: 10rpx ;">
|
|||
|
<image style="width: 100%;height: 100%;" src="../../static/campus/作者.png"></image>
|
|||
|
</view>
|
|||
|
<span style="color: #818181;font-size: 12px;">{{items.station}}</span>
|
|||
|
</view>
|
|||
|
<view style="color: #818181;font-size: 12px;">
|
|||
|
{{items.timestamp}}
|
|||
|
</view>
|
|||
|
<view class="commentITem">
|
|||
|
{{items.comment?items.comment:'活动介绍'}}
|
|||
|
</view>
|
|||
|
|
|||
|
<view style="display: flex;">
|
|||
|
<!-- <view style="display: flex;margin-right: 50rpx;">
|
|||
|
<view style="width: 30rpx;height: 30rpx;">
|
|||
|
<image style="width: 100%;height: 100%;" src="../../static/campus/评论.png"></image>
|
|||
|
</view>
|
|||
|
<span style="color: #818181;font-size: 12px;">{{item.remarkCount}}</span>
|
|||
|
</view> -->
|
|||
|
<view style="display: flex;">
|
|||
|
<view style="width: 30rpx;height: 30rpx;" @click="heartIcon(JSON.stringify(items))">
|
|||
|
<u-icon :name="iconType?'heart-fill':'heart'" :color="iconType?'red':'#818181'"
|
|||
|
size="32"></u-icon>
|
|||
|
</view>
|
|||
|
<span style="color: #818181;font-size: 12px;">{{items.praiseCount}}</span>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
</scroll-view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
import {
|
|||
|
getnewslast,
|
|||
|
getnewslist,
|
|||
|
getnewspraise,
|
|||
|
getschoolpraise
|
|||
|
} from '@/api/login';
|
|||
|
import {
|
|||
|
mapGetters
|
|||
|
} from 'vuex';
|
|||
|
// import schoolgate from '../../static/school/picture.png'
|
|||
|
export default {
|
|||
|
data() {
|
|||
|
return {
|
|||
|
iconType: false,
|
|||
|
scrolltop: 0,
|
|||
|
showAllPage: true,
|
|||
|
newsImages: 'https://www.lonsungsh.com/furongPolice/imgs/furongPolice.png',
|
|||
|
baseURl: 'https://www.lonsungsh.com:8083',
|
|||
|
tabList: [], //校园风采数据
|
|||
|
currentIndex: 0,
|
|||
|
newlists: [], //新闻数据
|
|||
|
limit: 10,
|
|||
|
// pageIndex:1
|
|||
|
}
|
|||
|
},
|
|||
|
|
|||
|
onShow() {
|
|||
|
this.getnews()
|
|||
|
this.getnewslistdata()
|
|||
|
// uni.removeStorage({key:'valueList'})
|
|||
|
},
|
|||
|
computed: {
|
|||
|
// 拿取vuex数据
|
|||
|
...mapGetters({
|
|||
|
userInfo: 'users/getLoginInfo',
|
|||
|
})
|
|||
|
},
|
|||
|
methods: {
|
|||
|
|
|||
|
// 下拉刷新
|
|||
|
onPullDownRefresh() {
|
|||
|
this.getnewslistdata()
|
|||
|
// 停止刷新
|
|||
|
setTimeout(() => {
|
|||
|
uni.stopPullDownRefresh()
|
|||
|
}, 1000)
|
|||
|
},
|
|||
|
|
|||
|
// 跳转评论 现在没用到
|
|||
|
onUrlClick(item) {
|
|||
|
uni.setStorageSync('valueList',item)
|
|||
|
// setTimeout(() => {
|
|||
|
uni.navigateTo({
|
|||
|
url: `/pages/publishreview/publishreview?index${item}`,
|
|||
|
});
|
|||
|
// setTimeout(() => {
|
|||
|
// uni.$emit('value', JSON.parse(item))
|
|||
|
// }, 600)
|
|||
|
// }, 2000)
|
|||
|
//
|
|||
|
},
|
|||
|
// 轮播图
|
|||
|
swiperChange(e) {
|
|||
|
this.currentIndex = e.detail.current;
|
|||
|
},
|
|||
|
// 跳转外部链接
|
|||
|
swiperLink(e) {
|
|||
|
uni.navigateTo({
|
|||
|
url: `/pages/externallink/externallink?src=${e.docUrl}`,
|
|||
|
});
|
|||
|
},
|
|||
|
|
|||
|
// 新闻轮播数据
|
|||
|
getnews() {
|
|||
|
getnewslast({
|
|||
|
brigade: '长沙芙蓉区',
|
|||
|
limit: 5
|
|||
|
}).then((res) => {
|
|||
|
this.newlists = res.data
|
|||
|
})
|
|||
|
},
|
|||
|
// 新闻点赞
|
|||
|
newsGiveaList(item) {
|
|||
|
if (this.userInfo.name) {
|
|||
|
getnewspraise({
|
|||
|
newsId: item.newsId
|
|||
|
}).then((res) => {
|
|||
|
this.newlists.forEach((items) => {
|
|||
|
if (items.newsId == item.newsId) {
|
|||
|
items.praiseCount = ++items.praiseCount
|
|||
|
}
|
|||
|
})
|
|||
|
}).catch(() => {})
|
|||
|
} else {
|
|||
|
uni.showToast({
|
|||
|
title: '请先登录',
|
|||
|
icon: 'error'
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
},
|
|||
|
|
|||
|
// 滑动内部scroll
|
|||
|
scroll({
|
|||
|
detail: {
|
|||
|
scrolltop
|
|||
|
}
|
|||
|
}) {},
|
|||
|
scrolltolower() {
|
|||
|
console.log(1111);
|
|||
|
|
|||
|
},
|
|||
|
scrolltoupper(detail) {},
|
|||
|
// 校园风采列表
|
|||
|
getnewslistdata() {
|
|||
|
getnewslist({
|
|||
|
brigade: '长沙芙蓉区',
|
|||
|
limit: this.limit,
|
|||
|
}).then((res) => {
|
|||
|
res.data.forEach((item) => {
|
|||
|
item.imageUrl = this.baseURl + JSON.parse(item.imageUrls)[0]
|
|||
|
})
|
|||
|
this.tabList = res.data
|
|||
|
})
|
|||
|
},
|
|||
|
// 点赞
|
|||
|
heartIcon(item) {
|
|||
|
let id = JSON.parse(item).newsId
|
|||
|
if (this.userInfo.name) {
|
|||
|
getschoolpraise({
|
|||
|
newsId: id
|
|||
|
}).then((res) => {
|
|||
|
this.tabList.forEach((items) => {
|
|||
|
if (items.newsId == id) {
|
|||
|
items.praiseCount = ++items.praiseCount
|
|||
|
}
|
|||
|
})
|
|||
|
}).catch(() => {})
|
|||
|
} else {
|
|||
|
uni.showToast({
|
|||
|
title: '请先登录',
|
|||
|
icon: 'error'
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style scoped lang="scss">
|
|||
|
.campusstyle {
|
|||
|
height: 100vh;
|
|||
|
width: 100%;
|
|||
|
background-color: #fff;
|
|||
|
position: relative;
|
|||
|
overflow: hidden;
|
|||
|
|
|||
|
.campusstyleItem {
|
|||
|
height: 200rpx;
|
|||
|
background-image: url(../../static/login/banner.png);
|
|||
|
background-repeat: no-repeat;
|
|||
|
background-position: right;
|
|||
|
}
|
|||
|
|
|||
|
.demeanour {
|
|||
|
margin-top: 310rpx;
|
|||
|
height: 57%;
|
|||
|
|
|||
|
.demeanourItem {
|
|||
|
width: 100%;
|
|||
|
height: 260rpx;
|
|||
|
display: flex;
|
|||
|
padding: 20rpx;
|
|||
|
margin-bottom: 25rpx;
|
|||
|
|
|||
|
.demeanourUrl {
|
|||
|
width: 45%;
|
|||
|
height: 254rpx;
|
|||
|
margin-right: 10rpx;
|
|||
|
|
|||
|
image {
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
border-radius: 5px;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.demeanourUrl2 {
|
|||
|
width: 60%;
|
|||
|
height: 260rpx;
|
|||
|
padding-right: 20rpx;
|
|||
|
|
|||
|
.commentITem {
|
|||
|
color: #818181;
|
|||
|
font-size: 12px;
|
|||
|
margin-bottom: 5px;
|
|||
|
overflow: hidden;
|
|||
|
text-overflow: ellipsis;
|
|||
|
display: -webkit-box;
|
|||
|
-webkit-line-clamp: 3;
|
|||
|
-webkit-box-orient: vertical;
|
|||
|
padding-right: 8rpx;
|
|||
|
height: 48px;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.Loadata {
|
|||
|
font-size: 14px;
|
|||
|
margin-top: 42rpx;
|
|||
|
// color: #e3e3e3;
|
|||
|
text-align: center;
|
|||
|
}
|
|||
|
|
|||
|
.demo-scroll-block {
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
.carousel {
|
|||
|
width: 100%;
|
|||
|
height: 451rpx;
|
|||
|
}
|
|||
|
|
|||
|
.campusstyleIndex {
|
|||
|
position: absolute;
|
|||
|
top: 14px;
|
|||
|
left: 19px;
|
|||
|
width: 100%;
|
|||
|
/* box-shadow: 0px 10px 10px -4px #e3e3e3; */
|
|||
|
}
|
|||
|
|
|||
|
.carousel .carousel-image {
|
|||
|
width: 89%;
|
|||
|
height: 248rpx;
|
|||
|
border-top-left-radius: 12px;
|
|||
|
border-top-right-radius: 12px;
|
|||
|
vertical-align: middle;
|
|||
|
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
|
|||
|
}
|
|||
|
|
|||
|
.carousel-box {
|
|||
|
&.quiet {
|
|||
|
transform: scale(0.86);
|
|||
|
transition: all 0.3s ease-in-out 0s;
|
|||
|
}
|
|||
|
|
|||
|
&.active {
|
|||
|
transform: none;
|
|||
|
transition: all 0.3s ease-in-out 0s;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.title-box {
|
|||
|
/* overflow: hidden; */
|
|||
|
padding-left: 15px;
|
|||
|
// padding-bottom: 15px;
|
|||
|
width: 83.5%;
|
|||
|
box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
|
|||
|
border-bottom-left-radius: 12px;
|
|||
|
border-bottom-right-radius: 12px;
|
|||
|
}
|
|||
|
|
|||
|
.swiper-item {
|
|||
|
// padding: 0 10px;
|
|||
|
box-sizing: border-box;
|
|||
|
overflow: inherit;
|
|||
|
}
|
|||
|
|
|||
|
.flex {
|
|||
|
display: flex;
|
|||
|
}
|
|||
|
|
|||
|
.font-16 {
|
|||
|
font-size: 14px;
|
|||
|
overflow: hidden;
|
|||
|
text-overflow: ellipsis;
|
|||
|
display: -webkit-box;
|
|||
|
-webkit-line-clamp: 2;
|
|||
|
-webkit-box-orient: vertical;
|
|||
|
padding-right: 8rpx;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
.font-14 {
|
|||
|
font-size: 12px;
|
|||
|
}
|
|||
|
|
|||
|
.font-12 {
|
|||
|
font-size: 12px;
|
|||
|
}
|
|||
|
|
|||
|
.font-weight-600 {
|
|||
|
color: #333333;
|
|||
|
}
|
|||
|
|
|||
|
.text-color-6 {
|
|||
|
color: #747474;
|
|||
|
margin-top: 8rpx;
|
|||
|
}
|
|||
|
|
|||
|
.text-color-3 {
|
|||
|
color: #333;
|
|||
|
height: 75rpx;
|
|||
|
}
|
|||
|
|
|||
|
.mr-8 {
|
|||
|
margin-right: 8px;
|
|||
|
width: 30rpx;
|
|||
|
height: 30rpx;
|
|||
|
}
|
|||
|
|
|||
|
.mr-40 {
|
|||
|
margin-right: 36rpx;
|
|||
|
display: flex;
|
|||
|
margin-top: 5rpx;
|
|||
|
}
|
|||
|
</style>
|