index.ux 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <import name="x-book" src="../../components/book/book.ux"></import>
  2. <template>
  3. <div class="shelf-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. <div class="shelf-total {{current === 1 ? 'shelf-total__inRecent' : ''}}">
  13. <text>共{{booksize}}本</text>
  14. <text class="manager" @click="changeMode">{{modeText}}</text>
  15. </div>
  16. <block if="current === 0">
  17. <div class="shelf-books__wrap">
  18. <block for="mockList">
  19. <div class="book-item__wrap {{(($idx + 1)%3 === 0) ? 'm0' : ''}}">
  20. <stack>
  21. <x-book book='{{$item}}' read='{{true}}'></x-book>
  22. <div class="book-del__wrap" show="{{isDelMode}}" @click='deleteBook($item)'>
  23. <image src="https://yueduyun.oss-cn-hangzhou.aliyuncs.com/xiaochengxu/img/delete.png"></image>
  24. <text>删除</text>
  25. </div>
  26. </stack>
  27. </div>
  28. </block>
  29. <div class="book-item__wrap book-item__add m0" @click="toCategory">
  30. <image class="add-cover" src="https://yueduyun.oss-cn-hangzhou.aliyuncs.com/xiaochengxu/img/bookstory.png"></image>
  31. <text>添加书籍</text>
  32. </div>
  33. </div>
  34. </block>
  35. <block else>
  36. <list class="recent-list">
  37. <block for="mockList">
  38. <list-item type="recent-item" class="recent-item">
  39. <stack>
  40. <x-book multi="{{true}}" book='{{$item}}' read='{{true}}' width="{{150}}">
  41. <div class="book-info__wrap">
  42. <text class="name">{{$item.book_name}}</text>
  43. <text class="lastest">最新 {{$item.last_chapter}}</text>
  44. <text class="last-read">{{$item.recent_reading_chapter}}</text>
  45. <!-- <text class="shelf-status">❤️ 已加入书架</text> -->
  46. </div>
  47. </x-book>
  48. <div class="book-del__item" show="{{isDelMode}}" @click='deleteBook($item)'>
  49. <image src="https://yueduyun.oss-cn-hangzhou.aliyuncs.com/xiaochengxu/img/delete.png"></image>
  50. <text>删除</text>
  51. </div>
  52. </stack>
  53. </list-item>
  54. </block>
  55. </list>
  56. </block>
  57. </div>
  58. </template>
  59. <script>
  60. import { getUserShelfBooks, deleteShelfBook } from "../../api";
  61. export default {
  62. props: {
  63. tabindex: {
  64. type: Number,
  65. default: 0
  66. },
  67. },
  68. data() {
  69. return {
  70. current: 1,
  71. isDelMode: false,
  72. modeText: "管理",
  73. mockList: [],
  74. booksize: 0,
  75. typeList: [
  76. {
  77. name: "我的书架",
  78. index: 0
  79. },
  80. {
  81. name: "最近阅读",
  82. index: 1
  83. }
  84. ],
  85. }
  86. },
  87. onInit() {
  88. console.log("tabindex:", this.tabindex);
  89. // this.getUserShelfBooks()
  90. this.$watch('isDelMode', 'listenMode')
  91. this.$watch('tabindex', 'watchPropsChange')
  92. },
  93. watchPropsChange(newV, oldV) {
  94. if (newV == 2) {
  95. this.getUserShelfBooks()
  96. }
  97. },
  98. getUserShelfBooks() {
  99. getUserShelfBooks().then(r => {
  100. r.map(m => {
  101. m.cover_url = m.cover
  102. delete m.cover
  103. })
  104. this.booksize = r.length
  105. this.mockList = r
  106. console.log(this.mockList);
  107. })
  108. },
  109. deleteBook(book) {
  110. deleteShelfBook({ bid: book.bid }).then(r => {
  111. this.getUserShelfBooks()
  112. })
  113. },
  114. changeMode() {
  115. this.isDelMode = !this.isDelMode;
  116. },
  117. listenMode(v) {
  118. this.modeText = v ? '取消' : '管理';
  119. },
  120. toCategory() {
  121. this.$emit('change');
  122. },
  123. typeChange(index) {
  124. this.current = index;
  125. },
  126. }
  127. </script>
  128. <style lang="less">
  129. @import "../../assets/less/shelf.less";
  130. </style>