提交 112fcad1 编写于 作者: KK's avatar KK

上拉加载触发机制

上级 6b1379fc
......@@ -164,7 +164,11 @@
</@ibizindent>
</#if>
</div>
<div class="scrollToTop" @click="scrollToTop" ref="scroll" v-show="isEnableScrollTop && showScrollButton"> <van-icon name="back-top" /></div>
<div class="scrollToTop" @click="scrollToTop" ref="scroll" v-show="isEnableScrollTop && showScrollButton"> <van-icon name="back-top" /></div>
<div v-show="bottomLoadding && !allLoaded" class="loadding" >
<span>加载中</span>
<ion-spinner name="dots"></ion-spinner>
</div>
</div>
</div>
</template>
\ No newline at end of file
......@@ -309,30 +309,6 @@
return ((this.pageNumber + 1) * this.pageSize) >= this.pageTotal ? true : false;
}
/**
* 底部状态
*
* @type {String}
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
// public bottomStatus: String = "";
/**
* 顶部状态
*
* @type {String}
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
// public topStatus: String = "";
/**
*
*
* @type {Number}
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
// public moveTranslate: Number = 0;
/**
* searchKey 搜索关键字
*
......@@ -405,24 +381,6 @@
*/
public sort: any = { <#if ctrl.isNoSort?? && ctrl.isNoSort()??><#if ctrl.getMinorSortPSAppDEField?? && ctrl.getMinorSortPSAppDEField()??><#assign sortableField = ctrl.getMinorSortPSAppDEField() /><#if sortableField.getName?? && sortableField.getName()??>sort:'${sortableField.getName()?lower_case},<#if ctrl.getMinorSortDir?? && ctrl.getMinorSortDir()??>${ctrl.getMinorSortDir()?lower_case}</#if>'</#if></#if></#if>};
/**
* 底部改变状态
*
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
public handleBottomChange(status: String) {
// this.bottomStatus = status;
}
/**
* 顶部改变状态
*
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
public handleTopChange(status: String) {
// this.moveTranslate = 1;
// this.topStatus = status;
}
/**
* 上拉加载更多数据
......@@ -430,7 +388,7 @@
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
public async loadBottom(): Promise<any> {
if (((this.pageNumber + 1) * this.pageSize) >= this.pageTotal) {
if (this.allLoaded) {
return;
}
this.pageNumber++;
......@@ -439,7 +397,7 @@
Object.assign(params, this.viewparams);
}
Object.assign(params, { query: this.searchKey, page: this.pageNumber, size: this.pageSize });
let response: any = await this.load(params, 'bottom');
let response: any = await this.load(params, 'bottom',false);
let loadmoreBottom: any = this.$refs.loadmoreBottom;
if (loadmoreBottom) {
loadmoreBottom.complete();
......@@ -557,7 +515,7 @@
* @returns {Promise<any>}
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
private async load(data: any = {}, type: string = ""): Promise<any> {
private async load(data: any = {}, type: string = "",isloadding = this.showBusyIndicator): Promise<any> {
if (!data.page) {
Object.assign(data, { page: this.pageNumber });
}
......@@ -578,7 +536,8 @@
let tempViewParams:any = parentdata.viewparams?parentdata.viewparams:{};
Object.assign(tempViewParams,JSON.parse(JSON.stringify(this.viewparams)));
Object.assign(data,{viewparams:tempViewParams});
const response: any = await this.service.search(this.fetchAction, this.context, data, this.showBusyIndicator);
const response: any = await this.service.search(this.fetchAction, this.context, data, isloadding);
this.bottomLoadding = false;
if (!response || response.status !== 200) {
this.$notify({ type: 'danger', message: response.error.message });
return response;
......@@ -850,6 +809,7 @@
this.$store.commit('setPopupStatus',true)
}, false)
list.addEventListener('scroll', (e:any) => {
this.scroll(e);
if (scroll && list) {
if (list.scrollTop >= 500) {
this.showScrollButton = true;
......@@ -860,6 +820,33 @@
}
}
/**
* 滚动条事件(计算是否到底部)
*
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
public scroll(e:any){
let list:any = this.$refs.mdctrl;
if(list){
let scrollTop = list.scrollTop;
let clientHeight = list.clientHeight;
let scrollHeight = list.scrollHeight;
if(scrollHeight > clientHeight && scrollTop + clientHeight === scrollHeight){
if(!this.allLoaded){
this.bottomLoadding = true;
this.loadBottom();
}
}
}
}
/**
* 底部加载状态
*
* @memberof ${srfclassname('${ctrl.codeName}')}
*/
public bottomLoadding = false;
/**
* vue 生命周期
*
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册