Browse Source

新书推荐页面

master
x_ying 2 years ago
parent
commit
8144c94840
  1. 1
      src/main.js
  2. 13
      src/views/digitalResource.vue
  3. 31
      src/views/module/bookList.vue
  4. 36
      src/views/newBook.vue

1
src/main.js

@ -20,6 +20,7 @@ Vue.prototype.$axios = axios
// 馆代码 1201为东西湖馆代码 / 本地测试用FTZN // 馆代码 1201为东西湖馆代码 / 本地测试用FTZN
Vue.prototype.libcode = 'FTZN' Vue.prototype.libcode = 'FTZN'
// Vue.prototype.libcode = '1201'
// 引入echart // 引入echart
import echarts from 'echarts' import echarts from 'echarts'

13
src/views/digitalResource.vue

@ -1,5 +1,7 @@
<template> <template>
<div id="bookshelf"> <div id="bookshelf">
<HeaderTop />
<!-- <div class="top-bg" /> -->
<div class="bookshelf-header" style="height:120px"> <div class="bookshelf-header" style="height:120px">
<router-link to="/"> <router-link to="/">
<span class="icon iconfont icon-l">&#xe631;</span> <span class="icon iconfont icon-l">&#xe631;</span>
@ -7,6 +9,7 @@
<h2>数字资源</h2> <h2>数字资源</h2>
</div> </div>
<div class="main"> <div class="main">
<!-- <div v-for="item in srcList" :key="item" class="book-rack"> -->
<div v-for="(item,index) in srcList" :key="index" class="main-item" @click="jump(item.nrsUrl)"> <div v-for="(item,index) in srcList" :key="index" class="main-item" @click="jump(item.nrsUrl)">
<img :src="'data:image/png;base64,' + item.nrsImages"> <img :src="'data:image/png;base64,' + item.nrsImages">
<div class="title"> <div class="title">
@ -19,10 +22,13 @@
</template> </template>
<script> <script>
import HeaderTop from '@/views/module/headerTop.vue'
import { initNumberResoures } from '@/api/bookshelf' import { initNumberResoures } from '@/api/bookshelf'
// import data1 from './data1.json'
export default { export default {
name: 'DigitalResource', name: 'DigitalResource',
components: { components: {
HeaderTop
}, },
data() { data() {
return { return {
@ -30,12 +36,13 @@ export default {
} }
}, },
created() { created() {
this.getResoures()
// this.srcList = data1.srcList
this.getInfo()
}, },
methods: { methods: {
getResoures() {
getInfo() {
initNumberResoures({ libcode: this.libcode }).then(data => { initNumberResoures({ libcode: this.libcode }).then(data => {
this.srcList = data
this.rankingList = data
}) })
}, },
jump(url) { jump(url) {

31
src/views/module/bookList.vue

@ -2,8 +2,7 @@
<div class="hotbook-box"> <div class="hotbook-box">
<div class="most-book"> <div class="most-book">
<div class="most-book-img"> <div class="most-book-img">
<img :src="bookdata[0].img">
<img :src="bookdata[0].cover" :onerror="defaultImg">
</div> </div>
<div class="most-book-txt book-rack"> <div class="most-book-txt book-rack">
<div class="txt"> <div class="txt">
@ -15,17 +14,20 @@
</div> </div>
</div> </div>
<ul class="hotbook-list"> <ul class="hotbook-list">
<li v-for="(item,index) in bookdata" :key="index">
<img :src="item.img">
<li v-for="(item,index) in bookList" :key="index" @click="handleDetails(index)">
<img :src="item.cover" :onerror="defaultImg">
<p>{{ item.title }}</p> <p>{{ item.title }}</p>
</li> </li>
</ul> </ul>
<BookDetails ref="detailDom" />
</div> </div>
</template> </template>
<script> <script>
import BookDetails from './bookDetails.vue'
export default { export default {
name: 'BookList', name: 'BookList',
components: { BookDetails },
props: { props: {
bookdata: { bookdata: {
type: Array, type: Array,
@ -36,7 +38,19 @@ export default {
}, },
data() { data() {
return { return {
defaultImg: 'this.src="' + require('@/assets/images/default-img.png') + '"'
}
},
computed: {
bookList() {
const arr = this.bookdata.slice(1)
return arr
}
},
methods: {
handleDetails(index) {
this.$refs.detailDom.bookData = this.bookdata[index]
this.$refs.detailDom.dialogVisible = true
} }
} }
@ -61,9 +75,12 @@ export default {
position: absolute; position: absolute;
left: 90px; left: 90px;
bottom: 20px; bottom: 20px;
width: 318px;
height: 382px;
overflow: hidden;
img{ img{
width: 318px;
height: 382px;
width: 100%;
vertical-align: middle;
} }
} }
.txt{ .txt{

36
src/views/newBook.vue

@ -1,5 +1,7 @@
<template> <template>
<div id="bookshelf"> <div id="bookshelf">
<HeaderTop />
<!-- <div class="top-bg" /> -->
<div class="bookshelf-header" style="height:120px"> <div class="bookshelf-header" style="height:120px">
<router-link to="/"> <router-link to="/">
<span class="icon iconfont icon-l">&#xe631;</span> <span class="icon iconfont icon-l">&#xe631;</span>
@ -11,18 +13,44 @@
</template> </template>
<script> <script>
import HeaderTop from '@/views/module/headerTop.vue'
import BookList from '@/views/module/bookList.vue' import BookList from '@/views/module/bookList.vue'
import data1 from './data1.json'
import { FetchNewBookRecommend, FetchCoverByISBN } from '@/api/bookshelf'
// import data1 from './data1.json'
export default { export default {
name: 'NewBook', name: 'NewBook',
components: { BookList },
components: { HeaderTop, BookList },
data() { data() {
return { return {
bookData: []
} }
}, },
created() { created() {
this.bookData = data1.bookList
// this.bookData = data1.bookList
this.getBookData()
},
methods: {
getBookData() {
FetchNewBookRecommend().then(res => {
console.log(res, 'res')
let data = []
data = res
data.forEach(item => {
this.getCoverByISBN(item.isbn.replace(/\-/g, ''), item)
})
}).catch(() => {
this.$message.error('接口错误')
})
},
getCoverByISBN(isbn, item) {
const params = {
isbn: isbn
}
FetchCoverByISBN(params).then((res) => {
item.cover = window.URL.createObjectURL(res)
this.bookData.push(item)
})
}
} }
} }
</script> </script>

Loading…
Cancel
Save