search.blade.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. @extends('wap-browser.template')
  2. @section('head')
  3. <link rel="stylesheet" href="/wapbrowser/web/component.css">
  4. <style>
  5. .book-search {
  6. padding: .24rem;
  7. display: -webkit-box;
  8. display: -ms-flexbox;
  9. display: flex;
  10. -webkit-box-align: center;
  11. -ms-flex-align: center;
  12. align-items: center;
  13. -webkit-box-orient: horizontal;
  14. -webkit-box-direction: normal;
  15. -ms-flex-direction: row;
  16. flex-direction: row;
  17. -webkit-box-pack: justify;
  18. -ms-flex-pack: justify;
  19. justify-content: space-between;
  20. }
  21. .x-input--search2 {
  22. width: 5.4rem;
  23. height: .6rem;
  24. border-radius: .06rem;
  25. position: relative;
  26. border: 1px solid #b3b3b3;
  27. }
  28. .x-input--search2 .x-input__icon {
  29. position: absolute;
  30. top: .13rem;
  31. left: .2rem;
  32. width: .34rem;
  33. height: .34rem;
  34. }
  35. .x-input--search2 .x-input__inner {
  36. width: 100%;
  37. height: 100%;
  38. box-sizing: border-box;
  39. padding: 0 .6rem;
  40. border: none;
  41. background-color: transparent;
  42. }
  43. input[type=button], input[type=reset], input[type=submit] {
  44. -webkit-appearance: none;
  45. }
  46. .x-input--button {
  47. background-color: #32a1ff;
  48. border-radius: .06rem;
  49. height: .6rem;
  50. line-height: .6rem;
  51. padding: 0 .4rem;
  52. border: none;
  53. font-size: .26rem;
  54. color: #fff;
  55. }
  56. .x-book--search{
  57. margin: .36rem .24rem;
  58. }
  59. </style>
  60. @endsection
  61. @section('body')
  62. @component('wap-browser.component.header',['name'=> $title,'link'=>'/'])
  63. @endcomponent
  64. <div class="book-search">
  65. <div class="x-input--search2">
  66. <img src="data:image/png;base64,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UmVhZHlxyWU8AAADIWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMTQgNzkuMTUxNDgxLCAyMDEzLzAzLzEzLTEyOjA5OjE1ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkI5OTAxOTE3QkVBOTExRTc4RjcyODI1RUJCREY5ODMyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkI5OTAxOTE4QkVBOTExRTc4RjcyODI1RUJCREY5ODMyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6Qjk5MDE5MTVCRUE5MTFFNzhGNzI4MjVFQkJERjk4MzIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6Qjk5MDE5MTZCRUE5MTFFNzhGNzI4MjVFQkJERjk4MzIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7WWk5fAAADcUlEQVR42sSYaUhUURiGr0tRVmTRQvtGtqdB2QISlUERrYSQW/tYSUH9sf600B8V+hHRMhNFphUUYQWtQkFFZET7IkX5w7QiESMqE8fp/eK9cbvN3HvuzFzmg4dzvPc6953vfOec90yc1+vVFKIrWAQyQSoYApLBL9AMasBdcAVUaw7C4/H883eizfODQBFYDZKC3E8i/cFssBO8BKWgArRrDiM+xPU4sA28AoV86TWwCUwGvUEHZm4gmAP2gQdgHChjpsY7FRQsQ13AGbCQf0u/BDwN8mwb+A7qwU1eW0+mUJRk92y4GZJM3KCYD2AZyA4iJgXkgVmgo+neUZDOLCXxC60LJ0MyTKfADApYCmpNz88Ee8E0FrRkZlKIz14FWkABOALqwHUnGdoKloCPzIxRTCd+6C2QAd6BJvCNLw0VG4APJIBy0FdVkMymPexLEb83PNOT9VHALIqwsZz6UicBm3fI/53nRChRFbSdM0bGu9JUU7K2TAdPOGs2KogwRxFbqbtRdoK6cbwlik3394Op4BFYwDUmnJAhPsb3FdoJWsxMXAXPTAW8lv0c0KBFFgfZZlmsf39uZLJ/0XRvN/CDQ9waIo3H/MJS2BOsBKWyb9yDxoCh4LZdih2GPgITrQQNZr/OcD2Z9/pp0Q199g6zWhi7s//VlN76MGaTXfw0zN6QglpBZ24BbbzewhXbrQhYDVkT+z0096MP2y9WgmoMhex2pLB9YyXoHvvzXBaTwMVVTNt9K0GX2c9wWVAOWzFxjVaCqukM0534ljAil+1xlc21VPfcLokRBzmX20+FiiB56CHtxIkoixFrs4v9HYa1yFKQn973B1gJDkdJTC9QBQaASzRpyo7xBYcsQKfnjVCMnEbu0P808wsHnAjS6KnXMGMi7hwYHmbNyGwazS1J9sYDnPqOz2VSQ/O5mi6nuRJfnKawzuRyiHzcmC+AEXSicno5aScq1Mm1ihahhC/Rz1rPaWVrDcUp/mYkFz09GljA5RymPF7PZpvPUVAWJPGJBV7ME2sWjVUoc9XONa2MGE8jflVRiQr18BpsBlsoJo3mTbcQn8FbbgeNFp+jJCpO8dePaO9pMpQrwGkR5fF4/HY/NrgZeqb+FrrP50uIpSBLUYla7OK/moKo/FgKCiaqNT7GgjQWdB4Lvfm3AAMAspXMV/h2SqgAAAAASUVORK5CYII="
  67. class="x-input__icon">
  68. <input placeholder="请输入书名" type="text" class="x-input__inner">
  69. </div>
  70. <div class="book-search__btn">
  71. <input type="button" value="搜索" class="x-input--button">
  72. </div>
  73. </div>
  74. <div class="search-list">
  75. </div>
  76. <div class="spinner" style="heigth: 30px; overflow: hidden; display: none">
  77. <div class="mint-spinner-snake" style="margin: 0 auto;border-top-color: rgb(38, 162, 255); border-left-color: rgb(38, 162, 255); border-bottom-color: rgb(38, 162, 255); height: 28px; width: 28px;"></div>
  78. </div>
  79. @endsection
  80. @section('foot')
  81. <script>
  82. function createBook(book){
  83. var a = document.createElement('a')
  84. a.setAttribute('href','/detail?bid='+ book.book_id)
  85. a.innerHTML = '\
  86. <dl class="x-book x-book--multi x-book--search">\
  87. <dt class="x-book__coverbox" style="width: 1.8rem;height: 2.4rem">\
  88. <img src="'+book.cover_url+'" class="x-book__cover" style="width: 1.8rem;height: 2.4rem">\
  89. </dt>\
  90. <dd class="x-book__text--multi" style="width: calc(100% - 1.8rem);height: 2.4rem">\
  91. <div class="x-book-info">\
  92. <p class="x-book-info__name">'+ book.book_name +'</p>\
  93. <p class="x-book-info__flex">\
  94. <span class="x-book-info__author">'+ book.book_author +'</span>\
  95. <span class="x-book-info__finish"> '+ (book.book_end_status ? '完结' : '连载') +' </span>\
  96. </p>\
  97. <p class="x-book-info__count">字数:'+ book.book_word_count +'</p>\
  98. <p class="x-book-info__flex">\
  99. <span class="x-book-info__lastest">\
  100. <span class="red">最新:'+ book.last_chapter +'</span></span>\
  101. '+(book.last_chapter_is_vip ? '<img src="/wapbrowser/web/vip.png" class="x-book-info__vip">' : '<img src="/wapbrowser/web/vip.png" class="x-book-info__vip">')+'\
  102. </p>\
  103. </div>\
  104. </dd>\
  105. </dl>'
  106. return a
  107. }
  108. getList(true);
  109. function getList(append){
  110. var wrap = document.querySelector('.search-list')
  111. var key = document.querySelector('.x-input__inner').value
  112. //if(!key) return
  113. if(getList.prev && getList.prev.params.key === key && page === 1) return
  114. if(getList.prev) getList.prev.xhr.abort()
  115. if(!append) wrap.innerHTML = ''
  116. document.querySelector('.spinner').style.display = ''
  117. var params = {
  118. page: page,
  119. key: key
  120. }
  121. var url = '/api/books/library?' + queryString(params)
  122. function callback(json){
  123. getList.loading = false
  124. json.data.list.map(function(book){
  125. wrap.appendChild(createBook(book))
  126. })
  127. if( json.data.meta.last_page === json.data.meta.current_page ) {
  128. last = true
  129. document.querySelector('.spinner').style.display = 'none'
  130. }else{
  131. last = false
  132. document.querySelector('.spinner').style.display = ''
  133. }
  134. }
  135. function queryString(obj) {
  136. console.log(obj)
  137. var str = ''
  138. for (k in obj){
  139. str += k+'='+obj[k]+'&'
  140. }
  141. if(str){
  142. str = str.substr(0,str.length-1)
  143. }
  144. return str;
  145. }
  146. getList.prev = {
  147. params : params,
  148. xhr : getJSON(url,callback)
  149. }
  150. getList.loading = true
  151. }
  152. var page = 1,last = false
  153. addEvent(window, 'scroll', function(e){
  154. if(getList.loading || last) return
  155. var scrollbottom = Math.max(window.pageYOffset || 0, document.documentElement.scrollTop) + document.documentElement.clientHeight
  156. if(scrollbottom + 50 > document.body.offsetHeight){
  157. page++
  158. getList(true)
  159. }
  160. })
  161. addEvent( document.querySelector('.x-input--button'), 'click', function(){
  162. getList()
  163. })
  164. </script>
  165. @endsection