/** * 处理查询参数 * @param {Object} self - 组件实例 * @param {Object} queryParams - 额外的查询参数 * @returns {Object} 合并后的查询参数 */ function query(self, queryParams){ // 深度合并对象 return self.$utils.deepMergeObject( self.$utils.deepMergeObject(self.queryParams, (self.beforeGetData && self.beforeGetData()) || {}), queryParams) } /** * 列表数据加载混入 * 提供列表数据的加载、分页、下拉刷新、上拉加载更多等功能 */ export default { data() { return { queryParams: { pageNo: 1, pageSize: 10, }, total : 0, list : [], } }, // 下拉刷新 onPullDownRefresh() { this.getData() }, // 上拉加载更多 onReachBottom() { this.loadMoreData() }, // 页面显示时加载数据 onShow() { this.getData() }, methods: { /** * 获取列表数据 * @param {Object} queryParams - 查询参数 * @returns {Promise} 返回Promise对象 */ getData(queryParams){ return new Promise((success, error) => { if(!this.mixinsListApi){ return console.error('mixinsListApi 缺失'); } this.$api(this.mixinsListApi, query(this, queryParams), res => { uni.stopPullDownRefresh() if(res.code == 200){ success(res.result) // 更新列表数据 this[this.mixinsListKey || 'list'] = res.result.records || res.result // 更新总数 this.total = res.result.total || res.result.length // 调用数据加载完成的回调 this.getDataThen && this.getDataThen(res.result.records, res.result.total, res.result) } }) }) }, /** * 加载更多数据 */ loadMoreData(){ if(this.queryParams.pageSize < this.total){ this.queryParams.pageSize += 10 this.getData() } }, } }