index.ux 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <template>
  2. <list id="catalog" class="catalog-wrap" @scrollbottom="loadCatalog" @scrolltop="loadPrev">
  3. <block for="list">
  4. <list-item type="catalog-item" class="catalog-item" @click='jumpReader($item)'>
  5. <text class="catalog-name {{$idx == chapter_sequence_index ? 'catalog-name__check' : ''}}">{{$item.chapter_name}}</text>
  6. <div class="target-wrap">
  7. <image if='$item.chapter_is_vip==1' src="../../assets/imgs/book-vip.png"></image>
  8. <text class="border {{$idx == chapter_sequence_index ? 'border-show': ''}}"></text>
  9. </div>
  10. </list-item>
  11. </block>
  12. </list>
  13. </template>
  14. <script>
  15. import { getCatalog } from "../../api";
  16. import router from '@system.router';
  17. import prompt from '@system.prompt'
  18. export default {
  19. protected: {
  20. bid: "",
  21. chapter_sequence: ""
  22. },
  23. private: {
  24. list: [],
  25. meta: {},
  26. chapter_sequence_index: 0,
  27. startpage: 1,
  28. },
  29. onInit() {
  30. let page = 1
  31. var chapter_sequence_index = 0
  32. if (this.chapter_sequence) {
  33. var chapter_sequence = this.chapter_sequence
  34. chapter_sequence_index = chapter_sequence % 15 - 1
  35. this.chapter_sequence_index = chapter_sequence_index
  36. page = Math.ceil(chapter_sequence / 15)
  37. }
  38. this.startpage = page
  39. getCatalog({ bid: this.bid, page: page }).then(r => {
  40. this.list = r.list
  41. this.meta = r.meta
  42. this.$element('catalog').scrollTo({ index: chapter_sequence_index })
  43. })
  44. // this.list = Array(100).fill(null).map((_, k) => k);
  45. // setTimeout(() => {
  46. // this.$element('catalog').scrollTo({ index: 20 });
  47. // }, 1000);
  48. },
  49. jumpReader(info) {
  50. console.log(info)
  51. router.push({
  52. uri: "/views/Reader",
  53. params: {
  54. bid: info.bid,
  55. chapter_id: info.chapter_id
  56. }
  57. })
  58. },
  59. loadCatalog() {
  60. console.log("load data");
  61. if (this.meta.last_page < (this.meta.current_page + 1)) return prompt.showToast({ message: '已经到底啦' })
  62. getCatalog({ bid: '5pNo6A7wqQmB1WgQygDjkOM9VZn2vXeY', page: this.meta.current_page + 1 }).then(r => {
  63. console.log(...r.list)
  64. this.list.push(...r.list)
  65. this.meta = r.meta
  66. })
  67. },
  68. loadPrev() {
  69. console.log("get prev catalog");
  70. if ((this.startpage - 1) < 1) return prompt.showToast({ message: '已经到顶啦' })
  71. getCatalog({ bid: '5pNo6A7wqQmB1WgQygDjkOM9VZn2vXeY', page: this.startpage - 1 }).then(r => {
  72. console.log(...r.list)
  73. this.list.unshift(...r.list)
  74. this.startpage = r.meta.current_page
  75. })
  76. }
  77. }
  78. </script>
  79. <style lang="less">
  80. @import "../../assets/less/catalog.less";
  81. </style>