index.ux 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <import name="x-book" src="../../components/book/book.ux"></import>
  2. <template>
  3. <div class="home-wrap">
  4. <div class="type-bar">
  5. <block for="type in typeList">
  6. <div class="type-item" @click="typeChange(type.index)">
  7. <text class="{{type.index === current ? 'cur' : ''}}">{{type.name}}</text>
  8. <text class="choose-bar" show="{{type.index === current}}"></text>
  9. </div>
  10. </block>
  11. </div>
  12. <list class="list-content">
  13. <list-item type="search" class="search-bar">
  14. <div class="search-bar__wrap">
  15. <image src="https://yueduyun.oss-cn-hangzhou.aliyuncs.com/xiaochengxu/img/search.png"></image>
  16. <text @click="toCategory">书名</text>
  17. </div>
  18. </list-item>
  19. <list-item type="swipe">
  20. <swiper class="swipe-bar" autoplay="true" indicator="false">
  21. <block for="b in banner.books">
  22. <div class="swipe-item">
  23. <image class="cover" src="{{b.cover_url}}"></image>
  24. </div>
  25. </block>
  26. </swiper>
  27. </list-item>
  28. <block for="bookObj in list">
  29. <list-item type="simple" class="book-list__wrap" if="$idx % 2 === 0">
  30. <div class="book-list__title">
  31. <text>{{bookObj.lable}}</text>
  32. </div>
  33. <div class="book-list">
  34. <block for="book in bookObj.books">
  35. <x-book multi="{{false}}" book="{{book}}"></x-book>
  36. </block>
  37. </div>
  38. </list-item>
  39. <list-item type="multi" class="book-list__wrap book-list__wrap--multi" else>
  40. <div class="book-list__title">
  41. <text class="border"></text>
  42. <text>{{bookObj.lable}}</text>
  43. </div>
  44. <div class="book-list__line">
  45. <block for="book in bookObj.books.slice(0, 4)">
  46. <x-book multi="{{false}}" width="{{150}}" lines="{{true}}" book="{{book}}"></x-book>
  47. </block>
  48. </div>
  49. <div class="book-list__multi">
  50. <block for="book in bookObj.books.slice(4)">
  51. <div class="book-item">
  52. <x-book multi="{{true}}" width="{{150}}" book="{{book}}">
  53. <div class="book-info__multi">
  54. <text class="name">{{book.book_name}}</text>
  55. <text class="intro">{{book.book_summary}}</text>
  56. </div>
  57. </x-book>
  58. </div>
  59. </block>
  60. </div>
  61. </list-item>
  62. </block>
  63. </list>
  64. </div>
  65. </template>
  66. <script>
  67. import { getHomeList } from "../../api";
  68. import storage from '@system.storage';
  69. export default {
  70. props: {},
  71. data() {
  72. return {
  73. typeList: [
  74. {
  75. name: "男生",
  76. index: 0
  77. },
  78. {
  79. name: "女生",
  80. index: 1
  81. }
  82. ],
  83. banner: [],
  84. list: [],
  85. current: 0
  86. }
  87. },
  88. onInit() {
  89. this.getCityListByTabChange();
  90. this.$watch('current', 'getCityListByTabChange')
  91. },
  92. typeChange(index) {
  93. this.current = index;
  94. },
  95. toCategory() {
  96. this.$emit('change');
  97. },
  98. async getCityListByTabChange(index) {
  99. await storage.set({ key: "sex", value: index || 0 });
  100. let sex = index ? "female" : "male";
  101. let ret = await getHomeList(sex);
  102. this.banner = ret.slice(0, 1)[0];
  103. this.list = ret.slice(1);
  104. }
  105. }
  106. </script>
  107. <style lang="less">
  108. @import "../../assets/less/home.less";
  109. </style>