UNPKG

@deepjs/uni-pull

Version:

封装 uni-app 上拉加载 && 下拉刷新

174 lines (139 loc) 5.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _qs = require("@deepjs/qs"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } // TODO: 有一个warn 未排查出原因 var _default = { data: function data() { return { scrollTop: 0, isLoading: true, // 页面是否在load 默认页面在loading pullLoading: false, // 翻页load finished: false, // 是否到底部 显示提示 scrollCheck: false, // 是否初始化完成后调用 loadingTip: '加载中...', // 翻页加载提示 finishedTip: '已经到底了', // 到底提示 noDataTip: '暂无数据!', listData: [], // pullParamsDefault: { // 默认参数 page_num: 1, // 当前页 page_limit: 20, // 没页条数 need_pagination: 1, page_serial: '' }, pullParams: {} // 参数 }; }, methods: { // 初始化参数 initPullList: function initPullList() { // console.log('init....') this.pullParams.page_serial = ''; // 分页序列号 this.pullParams.page_num = 1; this.finished = false; // 是否到底 this.pullLoading = false; this.listData = []; }, // 刷新 onRefresh: function onRefresh() { this.initPullList(); // window.scrollTo(0, 10) }, onScroll: function onScroll() { console.log('scroll'); }, // 加载下一页 onScrollToLower: function onScrollToLower() { var _this = this; console.log('reach bottom...'); if (this.pullLoading) return; // 翻页是否还在load // 已到底部 if (this.finished) { this.pullLoading = false; console.log('没有更多数据了'); return; } // 显示loading if (this.pullParams.page_num > 1) { this.pullLoading = true; } // console.log('ajax...start'); var params = _objectSpread(_objectSpread(_objectSpread({}, this.pullParamsDefault), this.pullParams), {}, { hideLoading: true, isLoading: false }); // console.log(params) this.pullModel(params, function (res) { _this.$hideLoading(); console.log('ajax...end'); _this.isLoading = false; _this.pullLoading = false; if (typeof _this.afterPull === 'function') { _this.afterPull(res); } _this.dealData(res); }, function (err) { // console.log(err); _this.$hideLoading(); _this.pullLoading = false; }, this); }, // 统一api // 需要外部重写 pullModel: function pullModel() {// api.getItem.apply(this, rest) }, // 处理数据业务逻辑 dealData: function dealData() { var res = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; this.$hideLoading(); this.isLoading = false; this.pullLoading = false; if (typeof this.preDealList === 'function') { this.preDealList(res); } var _this$pullParams$page = this.pullParams.page_num, pageNum = _this$pullParams$page === void 0 ? 1 : _this$pullParams$page; var _res$data = res.data, data = _res$data === void 0 ? {} : _res$data; this.pullParams.page_serial = data.page_serial || ''; // 分页序列号 var newList = data.list || []; // list 数据 // 后台返回 是否还有下一页 var hasMore = (data.total_page || data.totalPage) > pageNum; // 如果第一页没有数据 默认已经到达最底部 if (pageNum === 1 && !newList.length) { hasMore = false; } if (pageNum === 1) { this.listData = []; } if (hasMore) { this.pullParams.page_num += 1; // 页数加一 } this.finished = !hasMore; // dealList 方法 外部重写 if (typeof this.dealList === 'function') { var temp = this.dealList(newList) || []; if (!temp) { this.$showToast('处理数据返回格式有问题'); return; } newList = (0, _qs.deepCopy)(temp); } // 数组去重 this.listData = this.listData.concat(newList); // console.log(this.listData) // console.log(typeof this.afterPullData) if (typeof this.afterPullData === 'function') { this.afterPullData(res); } } } }; exports.default = _default;