123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- @extends('wap-browser.template')
- @section('head')
- <link rel="stylesheet" href="/wapbrowser/web/component.css">
- <style>
- .stock-limit{
- margin-top: .24rem;
- padding: 0 .24rem;
- font-size: .24rem;
- overflow: hidden;
- transition: height .3s;
- }
- .stock-limit__type {
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-align: start;
- -ms-flex-align: start;
- align-items: flex-start;
- -webkit-box-orient: horizontal;
- -webkit-box-direction: normal;
- -ms-flex-direction: row;
- flex-direction: row;
- -webkit-box-pack: justify;
- -ms-flex-pack: justify;
- justify-content: space-between;
- }
- .stock-limit__label {
- width: 1.2rem;
- line-height: .5rem;
- }
- .stock-limit__items {
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-orient: horizontal;
- -webkit-box-direction: normal;
- -ms-flex-direction: row;
- flex-direction: row;
- -webkit-box-pack: start;
- -ms-flex-pack: start;
- justify-content: flex-start;
- width: 5.8rem;
- -ms-flex-wrap: wrap;
- flex-wrap: wrap;
- }
- .stock-limit__item {
- width: 22%;
- box-sizing: border-box;
- border: 1px solid #999;
- color: #999;
- border-radius: .25rem;
- height: .5rem;
- line-height: .5rem;
- text-align: center;
- margin-bottom: .3rem;
- margin-right: 4%;
- }
- .stock-limit__item:nth-child(4n) {
- margin-right: 0;
- }
- .stock-limit__item.is-active {
- border-color: #ff6060;
- color: #ff6060;
- }
- .book-stock-switch {
- margin-top: -.2rem;
- background-color: #fff;
- }
- .book-stock-switch__content {
- text-align: center;
- color: #999;
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-orient: horizontal;
- -webkit-box-direction: normal;
- -ms-flex-direction: row;
- flex-direction: row;
- -webkit-box-pack: center;
- -ms-flex-pack: center;
- justify-content: center;
- height: 2.5em;
- }
- .book-stock-switch__icon {
- width: 1em;
- margin-left: .5em;
- }
- .book-stock-switch__shadow {
- width: 7.5rem;
- height: .2rem;
- background: radial-gradient(3.75rem .1rem at 50% 0,#f0f0f0,#fff);
- }
- .x-book--stock{
- margin: .36rem .24rem;
- }
- </style>
- @endsection
- @section('body')
- @component('wap-browser.component.header',['name'=> $title])
- @endcomponent
- <!-- 输入框 -->
- <!-- 输入框 -->
- <div class="stock-limit">
- <dl class="stock-limit__type">
- <dt class="stock-limit__label">频道</dt>
- <dd class="stock-limit__items stock-limit__items--channel">
- </dd>
- </dl>
- <dl class="stock-limit__type stock-limit__type--category">
- <dt class="stock-limit__label">分类</dt>
- <dd class="stock-limit__items stock-limit__items--category">
- </dd>
- </dl>
- <dl class="stock-limit__type">
- <dt class="stock-limit__label">是否完结</dt>
- <dd class="stock-limit__items stock-limit__items--status">
- </dd>
- </dl>
- </div>
- <div class="book-stock-switch">
- <div class="book-stock-switch__content">
- <span>收回筛选项</span>
- <img src="data:image/png;base64,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UmVhZHlxyWU8AAADIWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMTQgNzkuMTUxNDgxLCAyMDEzLzAzLzEzLTEyOjA5OjE1ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNkExODdBOEJFQUYxMUU3OEFFRkRCNDMwRjc1MkZBMyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNkExODdBN0JFQUYxMUU3OEFFRkRCNDMwRjc1MkZBMyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzUzRjk5NDdCRUE2MTFFN0FGNTJFQkQ3OUU5ODBEREQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzUzRjk5NDhCRUE2MTFFN0FGNTJFQkQ3OUU5ODBEREQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz52KAuAAAAAzElEQVR42mL8//8/A6WAcdAYwjJr1iyKDWEC4lVA7ECmfnuQfpAhE4B4GRC7kmgASP1yIJ4IMuQYEPsD8UIg9iDSAA+oepC+o0xQwdNA7APE84DYl4ABMHU+UH0MLEiS54DYC4i3ADErEK/DYkAgEE+GqrsAjx00RSAJNyDeCZVbhSQXCsR9QOwOxFdRohiLbdeggbYLKg8K9Cgg7oSK38BIJzj8DVLoAnWRI5TtDMS3cKUTXOAWVKMaPgPwuQQG7kET1BDJgFQxBCDAAJYiNRrFawMuAAAAAElFTkSuQmCC" class="book-stock-switch__icon"></div>
- <div class="book-stock-switch__shadow">
- </div>
- </div>
- <div class="stock-list">
- </div>
- <div class="spinner" style="heigth: 30px; overflow: hidden;">
- <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>
- </div>
- @endsection
- @section('foot')
- <script>
- var categories = @json($categories);
- categories.unshift({
- id: 0,
- name: '不限'
- })
- categories.map(function(item){
- if(item.children){
- item.children.unshift({
- id: item.id,
- name: '不限'
- })
- }
- })
- var stats = [
- { id: -1, name: '不限' },
- { id: 1, name: '完结' },
- { id: 0, name: '连载' }
- ]
- var channel = '1' , category = '1', stat = '1', page = '1', last = false
- function createItem(list,event){
- return list.map(function(v){
- var item = document.createElement('div')
- item.setAttribute('class','stock-limit__item')
- item.setAttribute('data-id',v.id)
- item.innerHTML = v.name
- addEvent(item,'click',event)
- return item
- })
- }
- function isActivbe(nodes,id){
- nodes.map(function(node){
- if(node.getAttribute('data-id') === id){
- addClass(node,'is-active')
- }else{
- removeClass(node,'is-active')
- }
- })
- }
- function setHeight(hide){
- var dom = document.querySelector('.stock-limit')
- var limit = document.querySelector('.book-stock-switch__content span')
- if(hide && dom.offsetHeight){
- dom.style.height = 0
- limit.innerHTML = '收回筛选项'
- }else{
- var h = Math.ceil(categories.length / 4)
- + (categories[channel].children ? Math.ceil(categories[channel].children.length / 4) : 0)
- + Math.ceil(stats.length / 4)
- limit.innerHTML = '展开筛选项'
- dom.style.height = h * 0.8 + "rem"
- }
- }
-
- function initChannel(channel_id){
- var dom = document.querySelector('.stock-limit__items--channel')
- var items = createItem(categories,function(e){
- var id = e.target.getAttribute('data-id')
- if(id !== channel){
- channel = id
- category = id
- page = 1
- initCategory(id)
- isActivbe(items,id)
- setHeight()
- getList()
- }
- })
- items.map(function(item,i){
- dom.appendChild(item)
- })
- isActivbe(items,channel_id)
- }
- function initCategory(channel_id){
- var dom = document.querySelector('.stock-limit__items--category')
- var parent = document.querySelector('.stock-limit__type--category')
- if(categories[channel_id].children){
- dom.innerHTML = ''
- parent.style.display = ''
- var items = createItem(categories[channel_id].children,function(e){
- var id = e.target.getAttribute('data-id')
- category = id
- page = 1
- getList()
- isActivbe(items,id)
- })
- items.map(function(item){
- dom.appendChild(item)
- })
- isActivbe(items,channel_id)
- }else{
- parent.style.display = 'none'
- }
- }
- function initStatus(){
- var dom = document.querySelector('.stock-limit__items--status')
- var items = createItem(stats,function(e){
- var id = e.target.getAttribute('data-id')
- stat = id
- page = 1
- getList()
- isActivbe(items,id)
- })
- items.map(function(item){
- dom.appendChild(item)
- })
- isActivbe(items,stat)
- }
- function createBook(book){
- var a = document.createElement('a')
- a.setAttribute('href','/detail?bid='+ book.book_id)
- a.innerHTML = '\
- <dl class="x-book x-book--multi x-book--stock">\
- <dt class="x-book__coverbox" style="width: 1.8rem;height: 2.4rem">\
- <img src="'+book.cover_url+'" class="x-book__cover" style="width: 1.8rem;height: 2.4rem">\
- </dt>\
- <dd class="x-book__text--multi" style="width: calc(100% - 1.8rem);height: 2.4rem">\
- <div class="x-book-info">\
- <p class="x-book-info__name">'+ book.book_name +'</p>\
- <p class="x-book-info__flex">\
- <span class="x-book-info__author">'+ book.book_author +'</span>\
- <span class="x-book-info__finish"> '+ (book.book_end_status ? '完结' : '连载') +' </span>\
- </p>\
- <p class="x-book-info__count">字数:'+ book.book_word_count +'</p>\
- <p class="x-book-info__flex">\
- <span class="x-book-info__lastest">\
- <span class="red">最新:'+ book.last_chapter +'</span></span>\
- '+(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">')+'\
- </p>\
- </div>\
- </dd>\
- </dl>'
- return a
- }
- function queryString(obj) {
- let str = ''
- for (k in obj){
- str = k+'='+obj.k+'&'
- }
- if(str){
- str = str.substr(0,str.length-1)
- }
- return str;
- }
- function getList(append){
- var wrap = document.querySelector('.stock-list')
- if(getList.prev) getList.prev.xhr.abort()
- if(!append) wrap.innerHTML = ''
- var params = {
- category_id: category,
- page: page
- }
- params.stat === -1 ? (params.stat = stat) : null
- var url = '/api/books/library?' + queryString(params)
- function callback(json){
- getList.loading = false
- json.data.list.map(function(book){
- wrap.appendChild(createBook(book))
- })
- if( json.data.meta.last_page === json.data.meta.current_page ) {
- last = true
- document.querySelector('.spinner').style.display = 'none'
- }else{
- last = false
- document.querySelector('.spinner').style.display = ''
- }
- }
- getList.prev = {
- params : params,
- xhr : getJSON(url,callback)
- }
- getList.loading = true
- }
- initChannel(channel)
- initCategory(channel,category)
- initStatus(stat)
- setTimeout(setHeight,0)
- getList()
-
- addEvent( document.querySelector('.book-stock-switch'),'click',function () {
- setHeight(true)
- })
- addEvent(window, 'scroll', function(e){
- if(getList.loading || last) return
- var scrollbottom = Math.max(window.pageYOffset || 0, document.documentElement.scrollTop) + document.documentElement.clientHeight
- if(scrollbottom + 50 > document.body.offsetHeight){
- page++
- getList(true)
- }
- })
- </script>
- @endsection
|