class DPagination { constructor(dataName) { this.loading = false; this.finished = false; this.dataName = dataName; this.dataPath = `${dataName}`; this.pages = 0; //* 本地存储的实际页数 this.length = 0; //* 本地存储的数据条数 this.limit = 15; //* 每页显示的数量 this.loadPage = 1; //* 每次加载累加的页数 } bind(page) { this.PageThis = page; this.clean(); return this; } push(data) { const PageThis = this.PageThis["data"]; let dataLength = Object.keys(PageThis[this.dataName]).length; let pageKey = "page_"; if (dataLength > 0) { let lastPage = Object.values(PageThis[this.dataName]).pop(); if (lastPage.length >= this.limit) { pageKey += dataLength + 1; } else { pageKey += dataLength; } } else { pageKey += "1"; } let pagePath = `${this.dataPath}.${pageKey}`; const setData = {}; if (PageThis[this.dataPath][pageKey]) { let lastIndex = PageThis[this.dataPath][pageKey].length; if (Array.isArray(data)) { for (let index = 0; index < data.length; index++) { let newIndex = index + lastIndex; setData[`${pagePath}[${newIndex}]`] = data[index]; } } else { setData[`${pagePath}[${lastIndex}]`] = data; } } else { setData[pagePath] = Array.isArray(data) ? [...data] : data; } this.PageThis.setData(setData); this.length += Object.keys(data).length; this.pages++; this.loadPage++; return this; } removePage(pages) { this.PageThis.setData({ [`${this.dataPath}.page_${pages}`]: [], }); this.pages--; } removeItem(pages, index) { let pagePath = `${this.dataPath}.page_${pages}`; let pageData = this.PageThis["data"][this.dataPath]["page_" + pages]; pageData.splice(index, 1); this.PageThis.setData( { [pagePath]: pageData, }, () => { this.length--; } ); } clean() { this.pages = 0; this.length = 0; this.loading = false; this.finished = false; this.loadPage = 1; this.PageThis.setData({ [this.dataPath]: {}, }); } } export default DPagination;