index.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. // component.js
  2. import { ComponentWithComputed } from 'miniprogram-computed'
  3. ComponentWithComputed({
  4. options: {
  5. styleIsolation: 'apply-shared'
  6. },
  7. properties: {
  8. paging: Object,
  9. g_cdn: String
  10. },
  11. data: {
  12. },
  13. watch:{
  14. 'paging.current':function (val) {
  15. this.triggerEvent('changeCurrent', val)
  16. }
  17. },
  18. computed: {
  19. min() {
  20. return 1
  21. },
  22. max(data) {
  23. return Math.ceil(data.paging.total / data.paging.pageSize)
  24. },
  25. routineMin(data) {
  26. return data.paging.current - Math.ceil(data.paging.showSize / 2)
  27. },
  28. routineMax(data) {
  29. return data.paging.current + Math.floor(data.paging.showSize / 2)
  30. },
  31. currMin(data: any) {
  32. let c = data.max - data.routineMax
  33. if (data.routineMin <= data.min) {
  34. return data.min
  35. } else if (c >= 0) {
  36. return data.routineMin
  37. } else if (data.routineMin + c <= data.min) {
  38. return data.min
  39. } else {
  40. return data.routineMin + c
  41. }
  42. },
  43. currMax(data: any) {
  44. let c = data.min - data.routineMin
  45. if (data.routineMax >= data.max) {
  46. return data.max
  47. } else if (c <= 0) {
  48. return data.routineMax
  49. } else if (data.routineMax + c >= data.max) {
  50. return data.max
  51. } else {
  52. return data.routineMax + c
  53. }
  54. },
  55. numbers(data: any) {
  56. let total = data.currMax - data.currMin
  57. let numbers = []
  58. if (total <= 0) {
  59. numbers.push(1)
  60. } else {
  61. for (let i = 0; i <= total; i++) {
  62. numbers.push(data.currMin + i)
  63. }
  64. }
  65. return numbers
  66. }
  67. },
  68. methods: {
  69. onTap(e: any) {
  70. let { idx } = e.currentTarget.dataset;
  71. this.setData({
  72. 'paging.current': idx
  73. })
  74. },
  75. prev() {
  76. if (this.properties.paging.current - 1 < this.data.min) {
  77. return
  78. }
  79. this.setData({
  80. 'paging.current': this.properties.paging.current - 1
  81. })
  82. },
  83. next() {
  84. if (this.properties.paging.current + 1 > this.data.max) {
  85. return
  86. }
  87. this.setData({
  88. 'paging.current': this.properties.paging.current + 1
  89. })
  90. },
  91. }
  92. })