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.
 
 
 
 

108 lines
2.5 KiB

<template>
<view class="app">
<view class="nav-wrap">
<mix-nav-bar :navs="navs" :counts="navCounts" :current="navCurrent" @onChange="onNavBarChange"></mix-nav-bar>
</view>
<mescroll-body
ref="mescrollRef"
@init="mescrollInit"
:top="84"
@down="downCallback"
:up="upOption"
@up="loadList"
>
<rating-item
v-for="(item, index) in list"
:key="index"
:item="item"
></rating-item>
</mescroll-body>
<mix-loading v-if="isLoading" :mask="true"></mix-loading>
</view>
</template>
<script>
import ratingItem from './components/rating-item'
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
export default {
components: {
ratingItem
},
mixins: [MescrollMixin],
data() {
return {
navs: [{name: '最新'}, {name: '好评'}, {name: '中评'}, {name: '差评'}, {name: '有图'}],
navCurrent: 0, //当前tab
upOption:{
auto: false, // 是否自动加载
page: {
num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
size: 15 // 每页数据的数量
},
noMoreSize: 5,
},
navCounts: [], //数量
list: [],
}
},
onLoad(options) {
this.id = options.id;
this.loadCount();
},
methods: {
async loadList(e){
this.mescroll && this.mescroll.removeEmpty();
const res = await this.$request('rating', 'get', {
product_id: this.id,
offset: (e.num - 1) * e.size,
limit: e.size,
type: this.navCurrent
});
const curList = res.data;
if(e.num === 1){
//第一页清空数据重载
this.list = [];
}
this.list = this.list.concat(curList); //追加新数据
this.mescroll.endSuccess(curList.length); //结束加载状态
},
async loadCount(){
const res = await this.$request('rating', 'count', {
product_id: this.id
})
this.navCounts = res;
console.log(res);
},
mescrollInit(mescroll){
this.isLoading = true;
this.mescroll = mescroll;
setTimeout(()=>{
this.mescroll.resetUpScroll(false)
}, 10)
},
//tab切换
onNavBarChange(current){
if(this.navCurrent === current){
return;
}
this.navCurrent = current;
this.isLoading = true;
this.mescroll && this.mescroll.resetUpScroll(false)
}
}
}
</script>
<style scoped lang="scss">
.app{
padding: 0 30rpx;
/deep/ {
.mescroll-body-content{
padding-top: 10rpx;
}
}
}
</style>