| 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>
 
 
  |