index.ux 4.7 KB

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