page.html 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <ul aria-label="Page navigation" id="pages"></ul>
  2. <script type="text/javascript">
  3. let totalPage = "<%= pages.total %>";
  4. let current ="<%= pages.current %>";
  5. let pageArray = getPageArray(parseInt(totalPage),2,parseInt(current));
  6. let options = {
  7. bootstrapMajorVersion: 3,
  8. currentPage: "<%= pages.current %>",
  9. totalPages: "<%= pages.total %>",
  10. numberOfPages:"<%= pages.total %>",
  11. size: "normal",
  12. itemContainerClass: function(type, page, current) {
  13. let className = 'page-item';
  14. this.currentPage = parseInt(this.currentPage);
  15. this.totalPages = parseInt(this.totalPages);
  16. switch (type) {
  17. case "prev":
  18. className = this.currentPage === 1 ? className + ' disabled' : className;
  19. break;
  20. case "next":
  21. className = this.currentPage === this.totalPages ? className + ' disabled' : className;
  22. break;
  23. case "page":
  24. className = page === this.currentPage ? className + ' active' : className;
  25. break;
  26. }
  27. return className;
  28. },
  29. itemContentClass: function(type, page, current) {
  30. return 'page-link';
  31. },
  32. itemTexts: function(type, page, current) {
  33. switch (type) {
  34. case "first":
  35. return "&laquo;";
  36. case "prev":
  37. return "上一页";
  38. case "next":
  39. return "下一页";
  40. case "last":
  41. return "&raquo;";
  42. case "page":
  43. return page;
  44. }
  45. },
  46. shouldShowPage: function (type, page, current) {
  47. let result = true;
  48. switch (type) {
  49. case "first":
  50. result = (current !== 1);
  51. break;
  52. case "prev":
  53. result = false;
  54. break;
  55. case "next":
  56. result = false;
  57. break;
  58. case "last":
  59. result = (current != this.totalPages);
  60. break;
  61. case "page":
  62. result = pageArray.indexOf(page)!=-1;
  63. break;
  64. }
  65. return result;
  66. },
  67. pageUrl: function(type, page, current){
  68. let queryData = JSON.parse('<%- pages.queryData %>');
  69. // 如果没有附带查询条件则直接返回
  70. if (Object.keys(queryData).length <= 0) {
  71. return "?page=" + page;
  72. }
  73. // 有其它数据则重新赋值page,然后组合字符串
  74. queryData.page = page;
  75. let queryArray = [];
  76. for(let tmp in queryData) {
  77. let tempString = tmp + '=' + queryData[tmp];
  78. queryArray.push(tempString);
  79. }
  80. let firstQuery = queryArray.shift();
  81. let queryString = queryArray.join('&');
  82. return queryString === '' ? '?' + firstQuery : '?' + firstQuery + '&' + queryString;
  83. }
  84. };
  85. if (options.totalPages > 0) {
  86. $("#pages").bootstrapPaginator(options);
  87. }
  88. function getPageArray(totalPage,offset,current) {
  89. let showPageArray = [current];
  90. let pre_fix = current - offset;
  91. let tai_fix = current + offset;
  92. if(pre_fix<=0){
  93. for(let p =1;p <= Math.abs(pre_fix)+1;p++){
  94. showPageArray.push(current + offset +p)
  95. }
  96. }
  97. if(tai_fix > totalPage){
  98. for(let t=1;t < (tai_fix - totalPage)+1;t++){
  99. showPageArray.push(current - offset - t)
  100. }
  101. }
  102. for(let i=1;i<= offset;i++){
  103. let pre = current - i;
  104. let next = current + i;
  105. if(pre > 0){
  106. showPageArray.push(pre);
  107. }
  108. if(next <= totalPage){
  109. showPageArray.push(next);
  110. }
  111. }
  112. return showPageArray;
  113. }
  114. </script>