Browse Source

热门图书/作者推荐

master
x_ying 2 years ago
parent
commit
947af56b6d
  1. 22
      src/api/bookshelf.js
  2. 23
      src/views/authorRecommend.vue
  3. 18
      src/views/hotBook.vue
  4. 12
      src/views/module/bookList.vue
  5. 4
      src/views/newBook.vue

22
src/api/bookshelf.js

@ -19,6 +19,15 @@ export function FetchNewBookRecommend(params) {
})
}
// 热门图书
export function FetchHotBookRecommend(params) {
return request({
url: '/dxhtsg/hotBookRecommend',
method: 'get',
params: params
})
}
// 通过isbn获取图书封面
export function FetchCoverByISBN(params) {
return request({
@ -56,11 +65,22 @@ export function FetchInitBookshelfDetails(params) {
})
}
// 作者推荐
export function FetchProposeAuthor(params) {
return request({
url: '/dxhtsg/proposeAuthor',
method: 'get',
params: params
})
}
export default {
FetchNewBookRecommend,
FetchCoverByISBN,
initNumberResoures,
getBookDetailsByISBN,
initSmartBookshelf,
FetchInitBookshelfDetails
FetchInitBookshelfDetails,
FetchHotBookRecommend,
FetchProposeAuthor
}

23
src/views/authorRecommend.vue

@ -10,8 +10,8 @@
<div v-for="(item,index) in authorList" :key="index" class="book-rack">
<span class="author-index">{{ index+1 }}</span>
<div class="author-brief">
<h3>{{ item.name }}</h3>
<p>{{ item.brief }}</p>
<h3>{{ item.paAuthor }}</h3>
<p>{{ item.paExplain }}</p>
</div>
</div>
</div>
@ -19,7 +19,8 @@
</template>
<script>
import data1 from './data1.json'
import { FetchProposeAuthor } from '@/api/bookshelf'
export default {
name: 'AuthorRecommend',
components: {
@ -30,7 +31,21 @@ export default {
}
},
created() {
this.authorList = data1.authors
this.getAuthor()
},
methods: {
getAuthor() {
const params = {
libcode: this.libcode,
pageNo: 1,
pageSize: 22
}
FetchProposeAuthor(params).then(res => {
this.authorList = res.proposeAuthorList
}).catch(() => {
this.$message.error('接口错误')
})
}
}
}
</script>

18
src/views/hotBook.vue

@ -1,6 +1,5 @@
<template>
<div id="bookshelf">
<!-- <HeaderTop /> -->
<div class="bookshelf-header" style="height:120px">
<router-link to="/">
<span class="icon iconfont icon-l">&#xe631;</span>
@ -12,11 +11,10 @@
</template>
<script>
// import HeaderTop from '@/views/module/headerTop.vue'
import BookList from '@/views/module/bookList.vue'
import { FetchNewBookRecommend, FetchCoverByISBN } from '@/api/bookshelf'
import { FetchHotBookRecommend, FetchCoverByISBN } from '@/api/bookshelf'
export default {
name: 'NewBook',
name: 'HotBook',
components: { BookList },
data() {
return {
@ -28,11 +26,13 @@ export default {
},
methods: {
getBookData() {
FetchNewBookRecommend().then(res => {
console.log(res, 'res')
let data = []
data = res
data.forEach(item => {
const params = {
libcode: this.libcode,
pageNo: 1,
pageSize: 22
}
FetchHotBookRecommend(params).then(res => {
res.hotbookList.forEach(item => {
this.getCoverByISBN(item.isbn.replace(/\-/g, ''), item)
})
}).catch(() => {

12
src/views/module/bookList.vue

@ -6,17 +6,17 @@
</div>
<div class="most-book-txt book-rack">
<div class="txt">
<h3>书名{{ bookdata[0].nbName }}</h3>
<p>作者{{ bookdata[0].nbAuthor }}</p>
<p>出版社{{ bookdata[0].nbAuthor }}</p>
<p>出版时间{{ bookdata[0].nbPublisherdate }}</p>
<h3>书名{{ bookdata[0].nbName || bookdata[0].hbName }}</h3>
<p>作者{{ bookdata[0].nbAuthor || bookdata[0].hbAuthor }}</p>
<p>出版社{{ bookdata[0].nbAuthor || bookdata[0].hbAuthor }}</p>
<p>出版时间{{ bookdata[0].nbPublisherdate || bookdata[0].hbPublisherdate }}</p>
</div>
</div>
</div>
<ul class="hotbook-list">
<li v-for="(item,index) in bookList" :key="index" @click="handleDetails(index+1)">
<img :src="item.cover ? item.cover : ''" :onerror="defaultImg">
<p class="book-name">{{ item.nbName }}</p>
<p class="book-name">{{ item.nbName || item.hbName }}</p>
</li>
</ul>
<BookDetails ref="detailDom" />
@ -54,6 +54,7 @@ export default {
isbn: this.bookdata[index].isbn.replace(/\-/g, '')
}
getBookDetailsByISBN(params).then(res => {
console.log(res)
this.$refs.detailDom.bookData = res
this.$refs.detailDom.dialogVisible = true
})
@ -126,6 +127,7 @@ export default {
}
.book-name{
width: 100%;
text-align: center;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;

4
src/views/newBook.vue

@ -32,10 +32,9 @@ export default {
const params = {
libcode: this.libcode,
pageNo: 1,
pageSize: 10
pageSize: 22
}
FetchNewBookRecommend(params).then(res => {
console.log(res, 'res')
res.newbookList.forEach(item => {
this.getCoverByISBN(item.isbn.replace(/\-/g, ''), item)
})
@ -49,7 +48,6 @@ export default {
}
FetchCoverByISBN(params).then((res) => {
item.cover = window.URL.createObjectURL(res)
console.log(res, 'res')
this.bookData.push(item)
})
}

Loading…
Cancel
Save