gdy96 5 år sedan
förälder
incheckning
55a2181fe8
4 ändrade filer med 119 tillägg och 46 borttagningar
  1. 26 12
      src/api/index.js
  2. 46 8
      src/views/Catalog/index.ux
  3. 39 23
      src/views/Reader/index.ux
  4. 8 3
      src/views/Shelf/index.ux

+ 26 - 12
src/api/index.js

@@ -8,41 +8,55 @@
 import fly from "./fly";
 
 // 获取首页数据
-export const getHomeList = (sex) => {
+export const getHomeList = sex => {
   console.log(sex);
   return fly.get(`/books/${sex}/index`);
 };
 
-
 // 获取分类
 export const getCategory = () => {
   return fly.get("/books/getCategory");
-}
+};
 
 // 获取书库
-export const getBooksList = (params) => {
+export const getBooksList = params => {
   return fly.get("/books/library", params);
-}
+};
 
 // 获取图书详情
-export const getBooksInfo = (bid) => {
+export const getBooksInfo = bid => {
   return fly.get(`/book/${bid}`);
-}
+};
 
 // 获取详情页相似数据
 export const getSimilarBooks = (category_id, bid) => {
   return fly.get("/books/similar", {
     category_id,
     bid
-  })
-}
+  });
+};
 
 // 获取充值列表
 export const getChargeList = () => {
   return fly.get("/order/chargeList");
-}
+};
 
 // 获取书架数据
-export const getUserShelfBooks = () => {
-  return fly.get(`/userShelfBooks`);
+export const getUserShelfBooks = params => {
+  return fly.get(`/userShelfBooks`, params);
+};
+
+// 获取章节
+export const getCatalog = params => {
+  return fly.get(`/books/${params.bid}/catalog`, params);
+};
+
+// 获取章节内容
+export const getChapters = params => {
+  return fly.get(`/books/${params.bid}/chapters/${params.chapter_id}`);
+};
+
+// 获取书籍是否在书架
+export const getIsonshelf = params => {
+  return fly.get(`/userShelfBooks/isonshelf`, params);
 };

+ 46 - 8
src/views/Catalog/index.ux

@@ -1,10 +1,10 @@
 <template>
   <list id="catalog" class="catalog-wrap" @scrollbottom="loadCatalog" @scrolltop="loadPrev">
     <block for="list">
-      <list-item type="catalog-item" class="catalog-item">
-        <text class="catalog-name {{$idx === 0 ? 'catalog-name__check' : ''}}">第{{$idx + 1}}章</text>
+      <list-item type="catalog-item" class="catalog-item" @click='jumpReader($item)'>
+        <text class="catalog-name {{$idx === 0 ? 'catalog-name__check' : ''}}">{{$item.chapter_name}}</text>
         <div class="target-wrap">
-          <image src="../../assets/imgs/book-vip.png"></image>
+          <image if='$item.chapter_is_vip==1' src="../../assets/imgs/book-vip.png"></image>
           <text class="border {{$idx === 0 ? 'border-show': ''}}"></text>
         </div>
       </list-item>
@@ -13,21 +13,59 @@
 </template>
 
 <script>
+import { getCatalog } from "../../api";
+import router from '@system.router';
+import prompt from '@system.prompt'
+
 export default {
+  protected: {
+    bid: ""
+  },
   private: {
-    list: []
+    list: [],
+    meta: {},
+    startpage: 1
   },
   onInit() {
-    this.list = Array(100).fill(null).map((_, k) => k);
-    setTimeout(() => {
-      this.$element('catalog').scrollTo({ index: 20 });
-    }, 1000);
+    let page = 2
+    this.startpage = page
+    getCatalog({ bid: '5pNo6A7wqQmB1WgQygDjkOM9VZn2vXeY', page: page }).then(r => {
+      console.log(r)
+      this.list = r.list
+      this.meta = r.meta
+    })
+    // this.list = Array(100).fill(null).map((_, k) => k);
+    // setTimeout(() => {
+    //   this.$element('catalog').scrollTo({ index: 20 });
+    // }, 1000);
+  },
+  jumpReader(info) {
+    console.log(info)
+    router.push({
+      uri: "/views/Reader",
+      params: {
+        bid: info.bid,
+        chapter_id: info.chapter_id
+      }
+    })
   },
   loadCatalog() {
     console.log("load data");
+    if (this.meta.last_page < (this.meta.current_page + 1)) return prompt.showToast({ message: '已经到底啦' })
+    getCatalog({ bid: '5pNo6A7wqQmB1WgQygDjkOM9VZn2vXeY', page: this.meta.current_page + 1 }).then(r => {
+      console.log(...r.list)
+      this.list.push(...r.list)
+      this.meta = r.meta
+    })
   },
   loadPrev() {
     console.log("get prev catalog");
+    if ((this.startpage - 1) < 1) return prompt.showToast({ message: '已经到顶啦' })
+    getCatalog({ bid: '5pNo6A7wqQmB1WgQygDjkOM9VZn2vXeY', page: this.startpage - 1 }).then(r => {
+      console.log(...r.list)
+      this.list.unshift(...r.list)
+      this.startpage = r.meta.current_page
+    })
   }
 }
 </script>

+ 39 - 23
src/views/Reader/index.ux

@@ -1,39 +1,45 @@
 <template>
-  <div class="reader-wrap">
-    <div class="reader-title">
-      <text class="title">第一章 冲头一次吧</text>
+  <list class="reader-wrap" id='list'>
+    <list-item type='title' class="reader-title">
+      <text class="title">{{bookinfo.chapter_name}}</text>
       <!-- <text class="add-shelf" @click="addShelf">加入书架</text> -->
-    </div>
-    <div class="reader-content">
-      <text class="chapter-text">一念的执着,倾世的阑珊。——笛音</text>
-      <text class="chapter-text">H市</text>
-      <text class="chapter-text">晨曦的阳光透过落地窗洒在地板上,卧室内,一室的凌乱,空气中还弥漫着欢-爱之后残余的气息,蚕丝被盖住了床上女人的娇躯,外露的肩头上有着密密匝匝的吻痕,绯色娇嫩美丽的脸蛋上还泛着红晕,此时美丽的容颜上呈现出一分妩媚性感。</text>
-      <text class="chapter-text">但仔细一看,还能够看到女人眼角滑落过泪水的痕迹。</text>
-      <text class="chapter-text">浴室传出哗啦啦的水声,惊扰了正在睡梦中的女人,余阑珊漂亮的眉心紧拧着,缓缓睁开了眼睛,刺眼的光芒直射在她的眼球上,让她抬手挡了一下从窗外照射进来的光线。</text>
-      <text class="chapter-text">身下的酸痛,让她脑海中的记忆纷至沓来。</text>
-      <text class="chapter-text">“顾先生,我们约定的期限到了。”阑珊的声音很轻很轻,轻到她自己都差点没有听清。</text>
-      <text class="chapter-text">男人一双深邃犀利的眸子紧锁在女人垂下脑袋的容颜上,从的视角看不全她的面部,视线落在她光洁的额头、长卷翘的睫毛上,瞬间,一股薄怒从心底滋生,伸手钳住女孩的下颌,逼迫她看着自己,阑珊的下颌被他捏的生疼,眼泪差点奔泻出去,紧咬着自己的唇瓣,不让在自己眼眶中盘旋的泪水滑落。</text>
-      <text class="chapter-text">“再说一遍?”顾念琛低沉带着盛怒的声音在余阑珊的耳边响起。</text>
-      <text class="chapter-text">余阑珊一双染上泪花的水眸对上顾念琛那双淡漠清冷的眸子,艰难的道出:“顾先生,我们约定的期限到了。”</text>
-      <text class="chapter-text">顾念琛带着薄怒连点了几个头,余阑珊以为他同意了,正准备说什么。</text>
-      <text class="chapter-text">便听到顾念琛狠绝伤人的话语从她的头顶砸下来,重重砸在她的心窝上,“余阑珊,很好,既然要离婚,浪费了你三年的青春,今晚我还给你。”</text>
-      <text class="chapter-text">余阑珊惊愕的看着顾念琛那双波澜不惊的眸子,没有明白他话中的意思。</text>
-      <text class="chapter-text">还在错愕之中的人,被嘴唇上传来的疼痛惊醒,熟悉的气息扑鼻而来,看着他近在咫尺的俊脸,余阑珊瞳孔放大,伸手推着身前的人,手却被他一把握住高举过头顶,霸道带着惩罚的吻肆意的掠夺着她的唇。</text>
-    </div>
-    <div class="reader-operator">
+    </list-item>
+    <list-item type='content' class="reader-content">
+      <text class="chapter-text" for='content'>{{$item}}</text>
+    </list-item>
+    <list-item type='button' class="reader-operator">
       <text class="operator prev" @click="getPrevChapter">上一章</text>
       <text class="operator catalog" @click="toCatalog">目录</text>
       <text class="operator next" @click="getNextChapter">下一章</text>
-    </div>
-  </div>
+    </list-item>
+  </list>
 </template>
 
 <script>
 import router from "@system.router";
+import { getChapters, getIsonshelf, getUserShelfBooks } from "../../api";
 
 export default {
+  protected: {
+    bid: '',
+    chapter_id: ''
+  },
+  private: {
+    bookinfo: {},
+    content: []
+  },
+  onInit() {
+    getChapters({ bid: this.bid, chapter_id: this.chapter_id }).then(r => {
+      this.content = r.chapter_content.trim().split(/\n/)
+      this.bookinfo = r
+    })
+    this.addShelf()
+  },
   addShelf() {
     console.log("add shelf");
+    getIsonshelf({ bid: this.bid }).then(r => {
+      r.is_on ? '' : getUserShelfBooks({ bid: this.bid })
+    })
   },
   toCatalog() {
     router.push({
@@ -42,9 +48,19 @@ export default {
   },
   getPrevChapter() {
     console.log("get prev chapter");
+    getChapters({ bid: this.bookinfo.bid, chapter_id: this.bookinfo.prev_cid }).then(r => {
+      this.content = r.chapter_content.trim().split(/\n/)
+      this.bookinfo = r
+      this.$element('list').scrollTo({ index: 0 })
+    })
   },
   getNextChapter() {
     console.log("get next chapter");
+    getChapters({ bid: this.bookinfo.bid, chapter_id: this.bookinfo.next_cid }).then(r => {
+      this.content = r.chapter_content.trim().split(/\n/)
+      this.bookinfo = r
+      this.$element('list').scrollTo({ index: 0 })
+    })
   }
 }
 </script>

+ 8 - 3
src/views/Shelf/index.ux

@@ -19,7 +19,7 @@
         <block for="mockList">
           <div class="book-item__wrap {{(($idx + 1)%3 === 0) ? 'm0' : ''}}">
             <stack>
-              <x-book></x-book>
+              <x-book book='{{$item}}'></x-book>
               <div class="book-del__wrap" show="{{isDelMode}}">
                 <image src="https://yueduyun.oss-cn-hangzhou.aliyuncs.com/xiaochengxu/img/delete.png"></image>
                 <text>删除</text>
@@ -62,7 +62,7 @@ export default {
       current: 0,
       isDelMode: false,
       modeText: "管理",
-      mockList: [0, 1, 2, 3, 4],
+      mockList: [],
       typeList: [
         {
           name: "我的书架",
@@ -77,7 +77,12 @@ export default {
   },
   onInit() {
     getUserShelfBooks().then(r => {
-      console.log(r)
+      r.map(m => {
+        m.cover_url = m.cover
+        delete m.cover
+      })
+      console.log(1)
+      this.mockList = r
     })
     this.$watch('isDelMode', 'listenMode')
   },