城阳工作端公众号前端代码
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.

77 lines
2.2 KiB

<template>
<div class='pages' ref="scroll">
<div class="scroll-box" ref="scroll-content">
<van-tabs :active="active" sticky>
<van-tab title="待接单">
<card></card>
</van-tab>
<van-tab title="待处理">内容 2</van-tab>
<van-tab title="已完成">内容 3</van-tab>
</van-tabs>
</div>
</div>
</template>
<script>
import card from './card.vue'
import throttle from 'lodash/debounce'
import { getServiceList } from '@/api/service'
export default {
data() {
return {
active: 0,
clientHeight: false,
scroll: null,
pageNo: 1,
pageSize: 10,
list: [],
total:0
};
},
created() {
this.getTableList()
},
mounted() {
this.clientHeight = document.documentElement.clientHeight; //可视高度
console.log(this.clientHeight);
this.$nextTick(() => {
this.scroll = this.$refs.scroll;
this.scroll.addEventListener('scroll', this.bottomScroll); //监听底部加载
})
},
methods: {
//滚动加载
bottomScroll: throttle(function () {
let scrollTop = this.scroll.scrollTop; //滚动条距离顶部的高度
let scrollHeight = this.scroll.scrollHeight; //滚动条的高度
let clientHeight = this.scroll.clientHeight; //可视区域的高度
if (scrollTop + clientHeight >= scrollHeight) {
console.log('到底了');
this.pageNo++;
this.getTableList();
}
}, 500),
getTableList(){
getServiceList({
pageNo: this.pageNo,
pageSize: this.pageSize
}).then(res => {
console.log(res);
this.total = res.total;
this.list = this.list.concat(...this.list,...res.list);
}).catch(err=>{
})
}
},
destroyed() {
this.scroll.removeEventListener('scroll', this.bottomScroll);//移除滚动监听
},
components: { card },
computed: {},
watch: {}
}
</script>
<style lang='less' scoped></style>