export default { onPullDownRefresh() { this.store && this.store.reload(); this.store.loadedCallback = () => { uni.stopPullDownRefresh(); }; }, onReachBottom() { if (this.store.status != 'noMore') { this.store.next && this.store.next(); } }, data() { return { store: {}, }; }, methods: { DataSource(url) { var me = this; return { data: [], status: 'more', empty: false, total: 0, header: { 'Content-Type': 'application/json;charset=UTF-8', }, params: { pageNum: 1, pageSize: 20, }, reload() { this.data = []; this.status = 'loading'; this.empty = false; this.params.pageNum = 1; this.next(); }, callBack: null, firstCallBack: null, loadedCallback: null, next() { me.$request({ url: url, data: this.params, header: this.header, method: 'POST', }).then((res) => { console.warn(res); let resultData = res.data?.list || res.data?.records || []; if (this.params.pageNum == 1) { this.data = resultData; if (resultData.length == 0 || resultData == 0) { this.empty = true; } else if ( resultData.length < this.params.pageSize ) { this.status = 'noMore'; } else if (res.total == resultData.length) { this.status = 'noMore'; } } else { this.data.push(...resultData); if (resultData.length < this.params.pageSize) { this.status = 'noMore'; } } if (this.params.pageNum == 1) { this.firstCallBack && this.firstCallBack(); } this.loadedCallback && this.loadedCallback(); this.params.pageNum++; this.total = res.total; this.loading = false; }); }, }; }, }, };