Преглед на файлове

Merge branch 'master' of iqiyoo:zhuishuyun_quickapp_front

xiabx преди 5 години
родител
ревизия
0bf8760b1c
променени са 6 файла, в които са добавени 203 реда и са изтрити 86 реда
  1. 58 31
      src/api/index.js
  2. 23 8
      src/assets/less/shelf.less
  3. 46 8
      src/views/Catalog/index.ux
  4. 2 2
      src/views/Detail/index.ux
  5. 39 23
      src/views/Reader/index.ux
  6. 35 14
      src/views/Shelf/index.ux

+ 58 - 31
src/api/index.js

@@ -8,73 +8,97 @@
 import fly from "./fly";
 
 // 获取首页数据
-export const getHomeList = (sex) => {
+export const getHomeList = sex => {
   console.log(sex);
   return fly.get(`/books/${sex}/index`);
 };
 
-
 //充值记录
-export const rechargeApi = (params) => {
-  return fly.get("/order/chargeRecordLists",params);
+export const rechargeApi = params => {
+  return fly.get("/order/chargeRecordLists", params);
 };
 
-
 // 获取分类
 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 chapterApi = (params) => {
-  return fly.get("/order/chapterOrderList",params);
+export const chapterApi = params => {
+  return fly.get("/order/chapterOrderList", params);
 };
 //获取全本消费记录
-export const bookApi = (params) => {
-  return fly.get("/order/bookOrderList",params);
+export const bookApi = params => {
+  return fly.get("/order/bookOrderList", params);
 };
 
-
 // 获取详情页中的目录
-export const getShortCatalog = (bid) => {
-  return fly.get(`/books/${bid}/catalog`, {
-    page_size: 10,
-    page: 1
-  }).then(r => r.list);
-}
+export const getShortCatalog = bid => {
+  return fly
+    .get(`/books/${bid}/catalog`, {
+      page_size: 10,
+      page: 1
+    })
+    .then(r => r.list);
+};
 
 // 获取充值列表
 export const getChargeList = () => {
   return fly.get("/order/chargeList");
-}
+};
+
+// 添加书籍进书架
+export const postUserShelfBooks = params => {
+  return fly.post(`/userShelfBooks`, params);
+};
 
 // 获取书架数据
 export const getUserShelfBooks = () => {
   return fly.get(`/userShelfBooks`);
 };
 
+// 获取章节
+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);
+};
+
+// 删除书架书籍
+export const deleteShelfBook = params => {
+  return fly.get(`/userShelfBooks/delete`, params);
+};
+
 // 充值
-export const getPayQuery = (params) => {
+export const getPayQuery = params => {
   return fly.get("/goToPay", params);
-}
+};
 
 //获取用户信息
 export const getUserInfo = () => {
@@ -82,16 +106,19 @@ export const getUserInfo = () => {
 };
 
 //发送短信
-export const sendCode = (params) => {
-  return fly.post(`/user/sendCode`,params);
+export const sendCode = params => {
+  return fly.post(`/user/sendCode`, params);
 };
 
 //用户绑定
-export const userBind = (params) => {
-  return fly.post(`/user/bindPhone`,params);
+export const userBind = params => {
+  return fly.post(`/user/bindPhone`, params);
 };
+<<<<<<< HEAD
+=======
 
 //用户签到
 export const userSign = () => {
   return fly.get(`/sign`);
-};
+};
+>>>>>>> b1966ec5a5d917c8387553d039eab48982d3f544

+ 23 - 8
src/assets/less/shelf.less

@@ -19,7 +19,7 @@
       }
 
       .cur {
-        color: #EF5952;
+        color: #ef5952;
         font-size: 36px;
         font-weight: bold;
       }
@@ -27,7 +27,7 @@
       .choose-bar {
         width: 38px;
         height: 4px;
-        background-color: #EF5952;
+        background-color: #ef5952;
         border-radius: 2px;
         margin-top: 10px;
       }
@@ -38,7 +38,7 @@
     height: 36px;
     background-color: #f7f7f7;
   }
-  
+
   .shelf-total {
     padding: 32px 22px;
     justify-content: space-between;
@@ -50,11 +50,11 @@
     }
 
     .manager {
-      border: 2px solid #EF5952;
+      border: 2px solid #ef5952;
       border-radius: 6px;
       background-color: #fff;
       font-size: 26px;
-      color: #EF5952;
+      color: #ef5952;
       width: 88px;
       height: 38px;
       text-align: center;
@@ -75,7 +75,7 @@
       margin-right: 50px;
 
       .book-del__wrap {
-        background-color: rgba(255, 255, 255, .6);;
+        background-color: rgba(255, 255, 255, 0.6);
         width: 200px;
         height: 264px;
         border-radius: 6px;
@@ -142,11 +142,26 @@
 
       .shelf-status {
         font-size: 24px;
-        color: #EF5952;
+        color: #ef5952;
         padding: 6px 17px;
         background-color: #f7f7f7;
         border-radius: 24px;
       }
     }
+    .book-del__item {
+      justify-content: center;
+      align-items: center;
+      flex-direction: column;
+      width: 100%;
+      background-color: rgba(255, 255, 255, 0.6);
+      image {
+        width: 40px;
+      }
+
+      text {
+        color: #4d4d4d;
+        margin-top: 20px;
+      }
+    }
   }
-}
+}

+ 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 = 1
+    this.startpage = page
+    getCatalog({ bid: this.bid, 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>

+ 2 - 2
src/views/Detail/index.ux

@@ -23,7 +23,7 @@
         <text class="toggle" @click="toggleTextStatus">{{showLongText ? '收起' : '展开'}}</text>
       </stack>
     </div>
-    <text class="lastest-chapter" @click="toRead(book.lastest_id)">最新章节:{{book.last_chapter}}</text>
+    <text class="lastest-chapter" @click="toRead(book.last_cid)">最新章节:{{book.last_chapter}}</text>
     <div class="box-wrap short-chapter__list">
       <div class="small-title">
         <div class="wrap-left">
@@ -87,7 +87,7 @@ export default {
       uri: "/views/Reader",
       params: {
         bid: this.book.book_id,
-        cid: chapter_id
+        chapter_id: chapter_id
       }
     })
   },

+ 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, postUserShelfBooks } 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 ? '' : postUserShelfBooks({ 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>

+ 35 - 14
src/views/Shelf/index.ux

@@ -19,8 +19,8 @@
         <block for="mockList">
           <div class="book-item__wrap {{(($idx + 1)%3 === 0) ? 'm0' : ''}}">
             <stack>
-              <x-book></x-book>
-              <div class="book-del__wrap" show="{{isDelMode}}">
+              <x-book book='{{$item}}'></x-book>
+              <div class="book-del__wrap" show="{{isDelMode}}" @click='deleteBook($item)'>
                 <image src="https://yueduyun.oss-cn-hangzhou.aliyuncs.com/xiaochengxu/img/delete.png"></image>
                 <text>删除</text>
               </div>
@@ -37,14 +37,20 @@
       <list class="recent-list">
         <block for="mockList">
           <list-item type="recent-item" class="recent-item">
-            <x-book multi="{{true}}" width="{{150}}">
-              <div class="book-info__wrap">
-                <text class="name">爱的邂逅</text>
-                <text class="lastest">最新 第2556章 又来了一个张老三</text>
-                <text class="last-read">上次阅读:第23章 张老三是个蓝精灵</text>
-                <text class="shelf-status">❤️ 已加入书架</text>
+            <stack>
+              <x-book multi="{{true}}" book='{{$item}}' width="{{150}}">
+                <div class="book-info__wrap">
+                  <text class="name">{{$item.book_name}}</text>
+                  <text class="lastest">最新 {{$item.last_chapter}}</text>
+                  <text class="last-read">上次阅读:{{$item.recent_reading_chapter}}</text>
+                  <text class="shelf-status">❤️ 已加入书架</text>
+                </div>
+              </x-book>
+              <div class="book-del__item" show="{{isDelMode}}" @click='deleteBook($item)'>
+                <image src="https://yueduyun.oss-cn-hangzhou.aliyuncs.com/xiaochengxu/img/delete.png"></image>
+                <text>删除</text>
               </div>
-            </x-book>
+            </stack>
           </list-item>
         </block>
       </list>
@@ -53,16 +59,16 @@
 </template>
 
 <script>
-import { getUserShelfBooks } from "../../api";
+import { getUserShelfBooks, deleteShelfBook } from "../../api";
 
 export default {
   props: {},
   data() {
     return {
-      current: 0,
+      current: 1,
       isDelMode: false,
       modeText: "管理",
-      mockList: [0, 1, 2, 3, 4],
+      mockList: [],
       typeList: [
         {
           name: "我的书架",
@@ -76,10 +82,24 @@ export default {
     }
   },
   onInit() {
+    this.getUserShelfBooks()
+    this.$watch('isDelMode', 'listenMode')
+  },
+  getUserShelfBooks() {
+    console.log(1)
     getUserShelfBooks().then(r => {
-      console.log(r)
+      r.map(m => {
+        m.cover_url = m.cover
+        delete m.cover
+      })
+      this.mockList = r
+    })
+  },
+  deleteBook(book) {
+    console.log(book)
+    deleteShelfBook({ bid: book.bid }).then(r => {
+      this.getUserShelfBooks()
     })
-    this.$watch('isDelMode', 'listenMode')
   },
   changeMode() {
     this.isDelMode = !this.isDelMode;
@@ -89,6 +109,7 @@ export default {
   },
   toCategory() {
     this.$emit('change');
+
   },
   typeChange(index) {
     this.current = index;