2025-06-06 03:08:19 +08:00

134 lines
4.0 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="">
<nav-bar title="下拉刷新/上拉加载列表"></nav-bar>
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<mescroll-body ref="mescrollRef" @init="mescrollInit" :down="downOption" @down="downCallback" @up="upCallback">
<view class="table_box">
<view class="table_title">使用文档</view>
<view class="table_content">
<text @click="onJumpWebview('http://www.mescroll.com/')">文档地址http://www.mescroll.com/</text>
</view>
</view>
<view class="news_list" v-for="item in dataList" :key="item.id" @click="onJumpWebview(item.reprintUrl)">
<view class="title"><text>{{item.original ? "原创" : "转载"}}</text>{{item.title}}</view>
<view class="content">{{item.content}}</view>
<view class="content_state">
<text>浏览量{{item.pageviews}}</text>
<text>点赞数{{item.likes}}</text>
<text>评论数{{item.comments}}</text>
</view>
</view>
</mescroll-body>
</view>
</template>
<script>
import MescrollMixin from "@/components/common/mescroll-uni/mescroll-mixins.js";
export default {
mixins: [MescrollMixin], // 使用mixin (在main.js注册全局组件)
data() {
return {
downOption: {
auto: false //是否在初始化后,自动执行downCallback; 默认true
},
dataList: []
}
},
methods: {
/*下拉刷新的回调 */
downCallback() {
//联网加载数据
this.loadData(1);
},
/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
upCallback(page) {
//联网加载数据
this.loadData(page.num);
},
loadData(pageNo){
this.$http
.post('api/articles/v1/articles_list', {
pageNo: pageNo,
pageSize: 10
},{
load:false
}).then(res => {
uni.stopPullDownRefresh();
//联网成功的回调,隐藏下拉刷新和上拉加载的状态;
//mescroll会根据传的参数,自动判断列表如果无任何数据,则提示空;列表无下一页数据,则提示无更多数据;
//方法一(推荐): 后台接口有返回列表的总页数 totalPage
this.mescroll.endByPage(res.data.length, res.pages); //必传参数(当前页的数据个数, 总页数)
//方法二(推荐): 后台接口有返回列表的总数据量 totalSize
//this.mescroll.endBySize(res.data.length, res.count); //必传参数(当前页的数据个数, 总数据量)
//方法三(推荐): 您有其他方式知道是否有下一页 hasNext
//this.mescroll.endSuccess(res.data.length, hasNext); //必传参数(当前页的数据个数, 是否有下一页true/false)
//方法四 (不推荐),会存在一个小问题:比如列表共有20条数据,每页加载10条,共2页.如果只根据当前页的数据个数判断,则需翻到第三页才会知道无更多数据.
// this.mescroll.endSuccess(res.data.length);
if (pageNo == 1) {
this.dataList = res.data;
} else {
this.dataList = this.dataList.concat(res.data);
}
}).catch(() => {
//联网失败, 结束加载
this.mescroll.endErr();
});
},
onJumpWebview(url){
// #ifdef H5
window.open(url);
// #endif
// #ifndef H5
this.$store.commit("setWebViewUrl", url);
uni.navigateTo({
url: '/pages/template/webView'
});
// #endif
}
},
}
</script>
<style scoped lang="scss">
@import '@/style/mixin.scss';
/*说明*/
.notice{
font-size: 30upx;
padding: 40upx 0;
border-bottom: 1upx solid #eee;
text-align: center;
}
/*展示上拉加载的数据列表*/
.news_list {
padding: 30rpx;
background-color: #FFF;
margin-bottom: 20rpx;
.title {
font-size: 28rpx;
color: #333;
font-weight: bold;
@include bov(2);
}
.content {
margin-top: 10rpx;
font-size: 24rpx;
color: #999;
@include bov(3);
}
.content_state {
margin-top: 10rpx;
display: flex;
justify-content: space-between;
text {
font-size: 24rpx;
color: #666;
}
}
}
</style>