index.ux 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <import name="book-list" src="./book-list"></import>
  2. <import name="search-input-bar" src="../search-book/search-input-bar"></import>
  3. <template>
  4. <div class="page-container">
  5. <search-input-bar onsearch="search" is-click="{{ true }}"></search-input-bar>
  6. <!-- <book-list
  7. list="{{library.list}}"
  8. show-load="{{library.load}}"
  9. onload-more="queryLibraryList"
  10. rank-list="{{rankList}}"
  11. > -->
  12. <book-list
  13. list="{{library.list}}"
  14. show-load="{{library.load}}"
  15. onload-more="queryLibraryList"
  16. rank-list="{{rankList}}"
  17. >
  18. <div class="sub-container">
  19. <!-- <swiper autoplay="true" class="swiper">
  20. <image
  21. class="swiper-image"
  22. src="{{$item.swiper}}"
  23. for="swiperList"
  24. onclick="goToDetail($item)"
  25. ></image>
  26. </swiper> -->
  27. <swiper autoplay="true" class="swiper">
  28. <image
  29. class="swiper-image"
  30. src="{{$item.novelImg}}"
  31. for="bannerList"
  32. onclick="goToDetail($item)"
  33. ></image>
  34. </swiper>
  35. </div>
  36. </book-list>
  37. </div>
  38. </template>
  39. <script>
  40. import fetch from '@system.fetch'
  41. import { bookListData } from '../../assets/data/book-list.js'
  42. import ad from '@service.ad'
  43. export default {
  44. props: [],
  45. data: {
  46. library: {
  47. list: [],
  48. pageNo: 1,
  49. pageSize: 10,
  50. total: null,
  51. load: true,
  52. },
  53. swiperList: bookListData,
  54. rankList: [],//bookListData.slice(0, 3),
  55. content: '', // 存储文本内容
  56. bannerList:[],
  57. hotList:[], // 热门图书
  58. bookList:[],// 图书列表
  59. bannerAd: null,
  60. adUnitId: "278eae7418b04abbb5926847ed42271e", // 这个id是vivo的com.quickapp.center创建的,需要修改manifest的package才能预览出效果
  61. },
  62. search(info) {
  63. let searchText = info.detail
  64. this.toSearch(searchText)
  65. },
  66. toSearch(text) {
  67. // $utils.route2theUrl('pages/search', { initValue: text })
  68. $utils.route2theUrl('pages/search-book', { initValue: text })
  69. },
  70. initAd() {
  71. try {
  72. this.bannerAd = ad.createBannerAd({ // 使用require方式避免在不支持广告接口的厂商运行时报错
  73. adUnitId: this.adUnitId
  74. })
  75. this.bannerAd.onLoad(() => { // 监听广告加载
  76. console.log('onLoad event emit')
  77. this.bannerAd.show()
  78. })
  79. this.bannerAd.onError((err) => { // 监听广告出错
  80. console.log('onError event emit', err)
  81. })
  82. this.bannerAd.onClose((res) => { // 监听广告关闭
  83. console.log('onClose event emit', res)
  84. })
  85. } catch (e) {
  86. console.log('initAd',e)
  87. }
  88. },
  89. async onInit() {
  90. console.log(ad.getProvider())
  91. this.initAd()
  92. this.queryLibraryList(1)
  93. const res = await $apis.common.novelBanner({bannerType: 8, pageNum: 1,pageSize: 10})
  94. this.bannerList = res.data.result.list
  95. const res1 = await $apis.common.novelModulePage({moduleType: 8, pageNum: 1,pageSize: 10,statu:1})
  96. // this.hotList = res1.data.result.list
  97. this.rankList = res1.data.result.list.slice(0, 3)
  98. // 国内
  99. const res2 = await $apis.common.novelModulePage({moduleType: 8, ageNum: 1,pageSize: 10})
  100. this.library.list = res2.data.result.list
  101. this.library.total = res2.data.result.total
  102. this.library.pageSize = res2.data.result.pageSize
  103. },
  104. /* -------------------SelfCustomEvent------------------ */
  105. queryLibraryList(pageNo) {
  106. if (!isNaN(pageNo) && pageNo !== this.library.pageNo) {
  107. return
  108. }
  109. if (
  110. this.library.total &&
  111. (this.library.pageNo - 1) * this.library.pageSize >= this.library.total
  112. ) {
  113. this.library.load = false
  114. return
  115. }
  116. this.queryFn()
  117. },
  118. async queryFn() {
  119. /*
  120. 开发时,根据pageNo和pageSize查询列表
  121. 返回total和对应pageNo的list
  122. */
  123. console.log('queryFn',this.library)
  124. // this.library.total = 5
  125. // 模拟查询
  126. let total = this.library.pageNo * this.library.pageSize
  127. let end = this.library.total < total ? this.library.total : total
  128. let start = total - this.library.pageSize
  129. const res = await $apis.common.novelModulePage({moduleType: 8, pageNum: this.library.pageNo,pageSize: 10}) //bookListData.slice(start, end)
  130. let concatList = res.data.result.list
  131. // 更新列表
  132. this.library.list = this.library.list.concat(concatList)
  133. this.library.pageNo++
  134. console.log('3333-----',total,end,start,concatList)
  135. },
  136. goToDetail(item) {
  137. console.log(item)
  138. // 根据id查询详情
  139. $utils.route2theUrl('pages/book-detail', { info: JSON.stringify(item) })
  140. }
  141. }
  142. </script>
  143. <style lang="less">
  144. @import '../../assets/styles/index.less';
  145. .sub-container {
  146. width: 100%;
  147. .flex-box-mixins(column, flex-start, flex-start);
  148. }
  149. .swiper {
  150. indicator-selected-color: rgba(255, 255, 255, 1);
  151. indicator-color: rgba(255, 255, 255, 0.5);
  152. indicator-size: 12.5px;
  153. width: 100%;
  154. height: 400px;
  155. margin: @gap-4 0;
  156. .swiper-image {
  157. border-radius: 10px;
  158. }
  159. }
  160. </style>