| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | <template>	<view>		<view class="banner" @click="goDetail(banner)">			<image class="banner-img" :src="banner.cover"></image>			<view class="banner-title">{{ banner.title }}</view>		</view>		<view class="uni-list">			<block v-for="(value, index) in listData" :key="index">				<view class="uni-list-cell" hover-class="uni-list-cell-hover" @click="goDetail(value)">					<view class="uni-media-list">						<image class="uni-media-list-logo" :src="value.cover"></image>						<view class="uni-media-list-body">							<view class="uni-media-list-text-top">{{ value.title }}</view>							<view class="uni-media-list-text-bottom">								<text>{{ value.author_name }}</text>								<text>{{ value.published_at }}</text>							</view>						</view>					</view>				</view>				<!-- #ifdef APP-PLUS -->				<view class="ad-view" v-if="(index > 0 && (index+1) % 10 == 0)">					<ad :adpid="adpid" @error="aderror"></ad>				</view>				<!-- #endif -->			</block>		</view>		<uni-load-more :status="status" :icon-size="16" :content-text="contentText" />	</view></template><script>	import { dateUtils } from  '../../../common/util.js';	export default {		data() {			return {				banner: {},				listData: [],				last_id: '',				reload: false,				status: 'more',				adpid: '',				contentText: {					contentdown: '上拉加载更多',					contentrefresh: '加载中',					contentnomore: '没有更多'				}			};		},		onLoad() {			this.adpid = this.$adpid;			this.getBanner();			this.getList();		},		onPullDownRefresh() {			this.reload = true;			this.last_id = '';			this.getBanner();			this.getList();		},		onReachBottom() {			this.status = 'more';			this.getList();		},		methods: {			getBanner() {				let data = {					column: 'id,post_id,title,author_name,cover,published_at' //需要的字段名				};				uni.request({					url: 'https://unidemo.dcloud.net.cn/api/banner/36kr',					data: data,					success: data => {						uni.stopPullDownRefresh();						if (data.statusCode == 200) {							this.banner = data.data;						}					},					fail: (data, code) => {						console.log('fail' + JSON.stringify(data));					}				});			},			getList() {				var data = {					column: 'id,post_id,title,author_name,cover,published_at' //需要的字段名				};				if (this.last_id) {					//说明已有数据,目前处于上拉加载					this.status = 'loading';					data.minId = this.last_id;					data.time = new Date().getTime() + '';					data.pageSize = 10;				}				uni.request({					url: 'https://unidemo.dcloud.net.cn/api/news',					data: data,					success: data => {						if (data.statusCode == 200) {							let list = this.setTime(data.data);							this.listData = this.reload ? list : this.listData.concat(list);							this.last_id = list[list.length - 1].id;							this.reload = false;						}					},					fail: (data, code) => {						console.log('fail' + JSON.stringify(data));					}				});			},			goDetail: function(e) {				// 				if (!/前|刚刚/.test(e.published_at)) {				// 					e.published_at = dateUtils.format(e.published_at);				// 				}				let detail = {					author_name: e.author_name,					cover: e.cover,					id: e.id,					post_id: e.post_id,					published_at: e.published_at,					title: e.title				};				uni.navigateTo({					url: '../list2detail-detail/list2detail-detail?detailDate=' + encodeURIComponent(JSON.stringify(detail))				});			},			setTime: function(items) {				var newItems = [];				items.forEach(e => {					newItems.push({						author_name: e.author_name,						cover: e.cover,						id: e.id,						post_id: e.post_id,						published_at: dateUtils.format(e.published_at),						title: e.title					});				});				return newItems;			},			aderror(e) {				console.log("aderror: " + JSON.stringify(e.detail));			}		}	};</script><style>	.banner {		height: 360rpx;		overflow: hidden;		position: relative;		background-color: #ccc;	}	.banner-img {		width: 100%;	}	.banner-title {		max-height: 84rpx;		overflow: hidden;		position: absolute;		left: 30rpx;		bottom: 30rpx;		width: 90%;		font-size: 32rpx;		font-weight: 400;		line-height: 42rpx;		color: white;		z-index: 11;	}	.uni-media-list-logo {		width: 180rpx;		height: 140rpx;	}	.uni-media-list-body {		height: auto;		justify-content: space-around;	}	.uni-media-list-text-top {		height: 74rpx;		font-size: 28rpx;		overflow: hidden;	}	.uni-media-list-text-bottom {		display: flex;		flex-direction: row;		justify-content: space-between;	}</style>
 |