UNPKG

@opensig/opendesign

Version:

<p align="center"><img src="../docs/public/opendesign-logo-light.png"/></p> <h1 align="center">opendesign</h1> <p align="center">一个 Vue 3 组件库</p> <p align="center"><b>皮肤可定制,使用 TypeScript</b></p>

75 lines (74 loc) 1.78 kB
function getNumbers(min, max) { const arr = []; for (let i = min; i <= max; i++) { arr.push(i); } return arr; } function getPagerList(totalPage, currentPage = 1, showPageCount = 9) { const activePage = currentPage > totalPage ? totalPage : currentPage; const maxCount = showPageCount > 3 ? showPageCount : 3; const pages = []; if (totalPage <= maxCount) { for (let i = 1; i <= totalPage; i++) { pages.push({ value: i }); } return pages; } pages[0] = { value: 1 }; pages[maxCount - 1] = { value: totalPage }; if (maxCount === 3) { pages[1] = { isMore: true, value: "left", list: getNumbers(2, totalPage - 1) }; } else { const d = (maxCount - 3) / 2; let min = activePage - Math.floor(d); let max = activePage + Math.ceil(d); if (max > totalPage - 1) { min -= max - totalPage + 1; max = totalPage - 1; } if (min < 2) { max += 2 - min; min = 2; } if (min < 3) { pages[1] = { value: 2 }; min = 2; } else { pages[1] = { isMore: true, value: "left", list: getNumbers(2, min) }; } if (max > totalPage - 2) { pages[maxCount - 2] = { value: totalPage - 1 }; max = totalPage - 1; } else { pages[maxCount - 2] = { isMore: true, value: "right", list: getNumbers(max, totalPage - 1) }; } getNumbers(min + 1, max - 1).forEach((item, idx) => { pages[2 + idx] = { value: item }; }); } return pages; } function getSizeOptions(pageSizes, sufix, currentPageSize) { return pageSizes.map((item) => ({ label: item + sufix, value: item, active: currentPageSize === item })); } export { getPagerList, getSizeOptions };