Browse Source

[client]add detail componet [serer] add where increment

charblus 5 years ago
parent
commit
b5eaf252e8

+ 8 - 0
server/controllers/bookdetail.js

@@ -0,0 +1,8 @@
+const {mysql} = require('../qcloud')
+
+module.exports = async (ctx) => {
+  const {id} = ctx.request.query
+  await mysql('books')
+          .where('id', id)
+          .increment('count', 1)
+}

+ 1 - 0
server/routes/index.js

@@ -38,5 +38,6 @@ router.get('/demo', controllers.demo)
 router.post('/addbook', controllers.addbook)
 // 获取图书列表
 router.get('/booklist', controllers.booklist)
+router.get('/bookdetail', controllers.bookdetail)
 
 module.exports = router

+ 3 - 1
src/app.json

@@ -2,7 +2,9 @@
   "pages": [
     "pages/books/main",
     "pages/comments/main",
-    "pages/me/main"
+    "pages/me/main",
+    "pages/detail/main"
+
   ],
   "window": {
     "backgroundTextStyle": "light",

+ 34 - 27
src/components/Card.vue

@@ -1,36 +1,38 @@
 <template>
-  <div class="book-card">
-    <div class="thumb">
-      <img :src="book.image" class="img" mode="aspectFit">
-    </div>
-    <div class="detail">
-      <div class="row text-primary">
-        <div class="right">
-          {{book.rate}} <Rate :value="book.rate" />
-        </div>
-        <div class="left">
-          {{book.title}}
-        </div>
+  <a :href="detailUrl">
+    <div class="book-card">
+      <div class="thumb">
+        <img :src="book.image" class="img" mode="aspectFit">
       </div>
-      <div class="row">
-        <div class="right text-primary">
-          浏览量:
+      <div class="detail">
+        <div class="row text-primary">
+          <div class="right">
+            {{book.rate}} <Rate :value="book.rate" />
+          </div>
+          <div class="left">
+            {{book.title}}
+          </div>
         </div>
-        <div class="left">
-          {{book.author}}
+        <div class="row">
+          <div class="right text-primary">
+            浏览量: {{book.count}}
+          </div>
+          <div class="left">
+            {{book.author}}
+          </div>
         </div>
-      </div>
-      <div class="row">
-         <div class="right">
-           <!-- 捐赠人 -->
-           {{book.user_info.nickName}}
-        </div>
-        <div class="left">
-         {{book.publisher}}
+        <div class="row">
+          <div class="right">
+            <!-- 捐赠人 -->
+            {{book.user_info.nickName}}
+          </div>
+          <div class="left">
+          {{book.publisher}}
+          </div>
         </div>
       </div>
     </div>
-  </div>
+  </a>
 </template>
 <script>
 import Rate from '@/components/Rate';
@@ -38,7 +40,12 @@ export default {
   components:{
     Rate
   },
-  props: ['book']
+  props: ['book'],
+  computed: {
+    detailUrl() {
+      return '/pages/detail/main?id='+ this.book.id
+    }
+  }
 
 }
 </script>

+ 4 - 2
src/pages/books/Book.vue

@@ -64,7 +64,8 @@ export default {
 
   },
   onReachBottom() {
-    if (!more) {
+    // console.log('没有更多了')
+    if (!this.more) {
       // 没有更多了
       return false;
     }
@@ -77,6 +78,7 @@ export default {
   }
 }
 </script>
-<style>
+<style lang='scss'>
+
 
 </style>

+ 26 - 0
src/pages/detail/Detail.vue

@@ -0,0 +1,26 @@
+<template>
+  <div>图书id{{bookid}}</div>
+</template>
+<script>
+import {get} from '@/util'
+export default {
+  data() {
+    return {
+      bookid: ''
+    }
+  },
+  methods: {
+    async getDetail() {
+      const info = await get('/weapp/bookdetail', {id: this.bookid})
+      console.log(info);
+   }
+  },
+  mounted() {
+    this.bookid = this.$root.$mp.query.id;
+    this.getDetail();
+  }
+}
+</script>
+<style lang="scss">
+
+</style>

+ 5 - 0
src/pages/detail/main.js

@@ -0,0 +1,5 @@
+import Vue from 'vue'
+import Detail from './Detail'
+
+const app = new Vue(Detail)
+app.$mount()