You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

525 lines
11 KiB

<template>
<view class="information-box">
<skeleton v-if="showSkeleton" ref="skeleton" loading="chiaroscuro" selector="skeleton" bgcolor="#FFF"></skeleton>
<view class="search-box acea-row row-middle skeleton-rect">
<image src="../../static/images/search-icon.png" mode=""></image>
<input type="text" value="" placeholder="请输入相关关键词" />
<view class="search acea-row row-center-wrapper">搜一下</view>
</view>
<swiper class="vote-box skeleton-rect">
<swiper-item v-for="(item,index) in hotList" :key="index" @click="toDetail(item.id)">
<image :src="item.imageInput" mode="aspectFill" class="vote-img"></image>
<view class="news">
<view class="news-title-h line1">{{item.title}}</view>
<view class="news-title-s line1">{{item.createTime}}</view>
</view>
</swiper-item>
</swiper>
<scroll-view class="scroll-view_N skeleton-rect" scroll-x="true">
<view class="rotaion-box" @click="toCategoryList(item.id)" v-for="(item,index) in categoryList" :key="index">
<view class="acea-row rotaion row-center">
<image :src="item.img" mode="aspectFill"></image>
<view class="rotaion-h">{{item.name}}</view>
<view class="rotaion-s">{{item.description}}</view>
</view>
</view>
</scroll-view>
<!-- 最新资讯 -->
<view class="newInfo-box skeleton-rect" v-if="newList.length > 0">
<image src="../../static/images/newInfo.png" mode="" class="newInfo-title-img"></image>
<view class="newInfo">
<view class="modular acea-row row-between" v-for="(item,index) in newList" :key="index"
@click="toDetail(item.id)">
<view class="acea-row title">
<view class="modular-h line2">{{item.title}}</view>
<view class="title-l acea-row row-between">
<view>{{item.author}}</view>
<view>{{item.createTime.split(' ')[0]}}</view>
<view class="acea-row row-middle">{{item.visit}}
<image src="../../static/images/eye.png" mode="aspectFill"></image>
</view>
</view>
</view>
<image :src="item.imageInput" mode="aspectFill"></image>
</view>
</view>
</view>
<!-- 热点精选 -->
<view class="hotspot-box skeleton-rect">
<image src="../../static/images/user/hotspot.png" mode="" class="title-h-img"></image>
<scroll-view class="scroll-view_H acea-row" scroll-x="true">
<view class="slide-box" v-for="(item,index) in hotList" :key="index" @click="toDetail(item.id)">
<image :src="item.imageInput" mode="aspectFill"></image>
<view class="hotspot-con">
<view class="hotspot-icon">热点</view>
<view class="hotspot-title-h line2">{{item.title}}</view>
</view>
</view>
</scroll-view>
</view>
<!-- 值得关注 -->
<view class="follow-box skeleton-rect">
<image src="../../static/images/follow-title.png" mode="" class="title-h-img"></image>
<view class="follow-con" v-for="(item,index) in concernList" :key="index" @click="toDetail(item.id)">
<view class="follow-top acea-row row-between">
<view class="acea-row follow-title">
<view class="follow-h line2">{{item.title}}</view>
<view class="follow-title-l acea-row row-between">
<view>{{item.author}}</view>
<view>{{item.createTime}}</view>
<view class="acea-row row-middle">
<text>{{item.visit}}</text>
<image src="../../static/images/eye.png" mode="aspectFill"></image>
</view>
</view>
</view>
<image :src="item.imageInput" mode="aspectFill"></image>
</view>
<view class="follow-bottom acea-row row-middle">
<image :src="item.imageInput" mode=""></image>
<view class="follow-title-b acea-row row-column-between">
<view class="title-s line1">{{item.author}}</view>
<view class="title-con line1">{{item.title}}</view>
</view>
<!-- <view class="follow-btn">关注+</view> -->
</view>
</view>
<!-- <LoadStatus :loadStatus="loadstatus"></LoadStatus> -->
</view>
</view>
</template>
<script>
import { getArticle } from "@/api/home";
import { articleIndex } from "@/api/article"
import LoadStatus from "@/components/LoadStatus"
import skeleton from '@/components/quick-skeleton/quick-skeleton'
export default {
components:{
LoadStatus,
skeleton
},
data() {
return {
categoryList: [],
newList: [],
hotList: [],
concernList: [],
articleList: [],
page: 0,
size: 10,
loadstatus: '上拉加载更多...',
showSkeleton: true
}
},
mounted() {
// this.getArticleList()
this.getArticleIndex()
},
onReachBottom() {
this.page = this.page + 1
// this.getArticleList()
},
computed:{
},
onPullDownRefresh() {
this.getArticleIndex()
},
onReady: function() {
const that = this;
that.$refs.skeleton.attachedAction();
that.$refs.skeleton.readyAction();
},
methods: {
getArticleIndex(){
uni.showLoading({
title: '正在加载中...',
})
articleIndex().then((res)=>{
this.categoryList = res.data.categoryList
this.concernList = res.data.concernList
this.hotList = res.data.hotList
this.newList = res.data.newList
uni.hideLoading()
uni.stopPullDownRefresh()
this.showSkeleton = false
})
},
getArticleList() {
this.loadstatus = '正在加载中...'
getArticle({
page: this.page,
size: this.size,
isHot: 0
}).then((res) => {
if(res.data.content.length < this.size){
this.loadstatus = '没有更多了...'
}
this.articleList = this.articleList.concat(res.data.content)
})
},
toDetail(id) {
this.$yrouter.push({
path: '/pages/life/articleDetail/index',
query: {
id: id
}
})
},
toCategoryList(id){
uni.navigateTo({
url: '/pages/life/articleList/index?active=' + id
});
},
}
}
</script>
<style lang="less">
.information-box {
width: 100%;
height: auto;
margin-bottom: 50rpx;
position: relative;
}
.search-box {
width: 670rpx;
height: 68rpx;
border: 2rpx solid #FF5100;
border-radius: 8rpx;
margin: 24rpx auto 52rpx;
font-size: 28rpx;
position: relative;
}
.search-box image {
width: 35rpx;
height: 35rpx;
margin: 0 29rpx 0 52rpx;
}
.search {
position: absolute;
right: -2rpx;
width: 132rpx;
height: 68rpx;
background: linear-gradient(39deg, #FF5100 0%, #FFA074 100%);
border-radius: 8rpx;
color: #fff;
}
.vote-box {
width: 670rpx;
height: 358rpx;
box-shadow: 0px 6rpx 12rpx rgba(0, 0, 0, 0.16);
border-radius: 16rpx;
margin: 0 auto;
position: relative;
overflow: hidden;
}
.vote-img {
position: absolute;
width: 670rpx;
height: 358rpx;
}
.news {
width: 590rpx;
height: 94rpx;
background: rgba(0, 0, 0, 0.2);
border-radius: 14rpx;
position: absolute;
bottom: 6rpx;
left: 50%;
margin-left: -295rpx;
color: #fff;
padding: 14rpx;
}
.news-title-h {
font-size: 28rpx;
}
.news-title-s {
font-size: 20rpx;
}
/* .vote {
width: 100%;
height: 110rpx;
position: absolute;
bottom: 0;
border: 1rpx solid #000000;
} */
.scroll-view_N {
width: 100%;
height: 238rpx;
margin: 30rpx 0rpx 34rpx 0rpx;
white-space: nowrap;
}
.rotaion-box {
width: 168rpx;
height: 208rpx;
background: #FFFFFF;
box-shadow: 0rpx 6rpx 12rpx rgba(0, 0, 0, 0.16);
border-radius: 16rpx;
margin: 10rpx 32rpx 10rpx 0rpx;
display: inline-block;
}
.rotaion-box:nth-child(1) {
margin-left: 40rpx;
}
.rotaion {
width: 100%;
height: 208rpx;
padding: 36rpx 0 16rpx 0;
}
.rotaion image {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
}
.rotaion-h {
height: 34rpx;
font-size: 24rpx;
color: #333333;
font-weight: 600;
}
.rotaion-s {
height: 26rpx;
font-size: 18rpx;
color: #9D9D9D;
}
/* 最新资讯 */
.newInfo-box {
overflow: hidden;
}
.newInfo-title-img {
width: 160rpx;
height: 52rpx;
margin: 0 0 18rpx 38rpx;
}
.newInfo {
width: 100%;
height: 528rpx;
overflow-y: scroll;
border-top: 2rpx solid #EFEFEF;
}
.modular {
width: 100%;
height: 176rpx;
border-bottom: 2rpx solid #EFEFEF;
padding: 20rpx 40rpx 22rpx 40rpx;
}
.modular-h {
width: 400rpx;
height: 80rpx;
font-size: 28rpx;
color: #4A4A4A;
font-weight: 600;
}
.modular image {
width: 204rpx;
height: 134rpx;
border-radius: 8px;
}
.title {
width: 400rpx;
height: 134rpx;
}
.title-l {
width: 400rpx;
height: 34rpx;
font-size: 24rpx;
color: #707070;
}
.title-l image {
width: 24rpx;
height: 24rpx;
margin-left: 5rpx;
}
/* 热点精选 */
.hotspot-box {
width: 100%;
height: 456rpx;
}
.title-h-img {
width: 162rpx;
height: 62rpx;
margin: 32rpx 0 5rpx 40rpx;
}
.scroll-view_H {
width: 100%;
height: 344rpx;
white-space: nowrap;
}
.scroll-view_H image {
width: 670rpx;
height: 344rpx;
border-radius: 10rpx;
position: absolute;
}
.slide-box {
position: relative;
width: 670rpx;
height: 100%;
display: inline-block;
margin-right: 16rpx;
}
.hotspot-con {
width: 670rpx;
height: 94rpx;
background: rgba(0, 0, 0, 0.2);
border-radius: 0px 0px 8rpx 8rpx;
padding: 8rpx 32rpx;
color: #fff;
position: absolute;
bottom: 0;
}
.hotspot-icon {
width: 72rpx;
height: 32rpx;
background: #FE3737;
border-radius: 12rpx 2rpx 12rpx 0;
position: absolute;
top:-46rpx;
font-size: 22rpx;
color: #fff;
text-align: center;
margin-bottom: 16rpx;
}
.hotspot-title-h {
max-width: 588rpx;
max-height: 80rpx;
font-size: 28rpx;
color: #FFFFFF;
white-space: pre-wrap;
}
/* 值得关注 */
.follow-box {
width: 100%;
position: relative;
overflow: hidden;
}
.follow-con {
width: 670rpx;
height: 250rpx;
margin: 0 auto;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 10rpx rgba(0, 0, 0, 0.16);
border-radius: 16rpx;
margin-bottom: 32rpx;
}
.follow-top {
width: 100%;
height: 170rpx;
padding: 20rpx 20rpx 26rpx 20rpx;
border-bottom: 1rpx solid #DCDCDC;
}
.follow-top image {
width: 232rpx;
height: 130rpx;
border-radius: 16rpx;
}
.follow-title {
width: 370rpx;
height: 100%;
}
.follow-h {
width: 100%;
height: 80rpx;
font-size: 28rpx;
color: #000000;
font-weight: 600;
}
.follow-title-l {
width: 290rpx;
height: 28rpx;
font-size: 20rpx;
color: #707070;
}
.follow-title-l image {
width: 24rpx;
height: 24rpx;
margin-left: 5rpx;
}
.follow-bottom {
width: 100%;
height: 80rpx;
padding: 14rpx 20rpx 14rpx 20rpx;
}
.follow-bottom image {
width: 52rpx;
height: 52rpx;
border-radius: 50%;
margin-right: 8rpx;
}
.follow-title-b {
width: 230rpx;
height: 52rpx;
.title-s {
height: 25rpx;
line-height: 25rpx;
font-size: 20rpx;
font-weight: 600;
}
.title-con {
height: 20rpx;
font-size: 16rpx;
color: #707070;
}
}
.follow-btn {
width: 136rpx;
height: 40rpx;
background: linear-gradient(39deg, #FF5A0D 0%, #FFAC85 100%);
border-radius: 26rpx;
font-size: 28rpx;
color: #fff;
text-align: center;
position: absolute;
right: 60rpx;
}
</style>