Files
nuttyreading-html/pages/talkBook/talkBookDetail.vue
2023-10-13 13:41:59 +08:00

239 lines
5.3 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view>
<z-nav-bar :title="bookInfo.name+'-讲书'"></z-nav-bar>
<view class="mainContent">
<view class="title">{{talkBookDetail.title}}</view>
<view class="voices" v-if="talkBookDetail.voices != '' && audioShow">
<audio style="text-align: left; overflow: hidden;" :src="talkBookDetail.voices"
poster="../../static/icon/home_icon_0.png" :name="talkBookDetail.title"
:author="bookInfo.author.authorName" :action="audioAction" controls></audio>
</view>
<view class="content" v-if="talkBookDetail.content != ''" v-html="talkBookDetail.content"></view>
<view class="content" v-else></view>
<view class="time">
<text>{{talkBookDetail.createTime}}</text>
</view>
<view class="tuijin" v-if="!isBuy && bookInfo.productId != null">
<p>觉得这本书还不错</p>
<view class="flexbox"
style="justify-content: space-between; border: 1px solid #55aa7f; padding: 10rpx; border-radius: 10rpx;">
<view class="flexbox">
<view class="img">
<image v-if="bookInfo.images != ''" :src="bookInfo.images" mode="aspectFit"></image>
<image v-else src="../../static/icon/wufeng.jpg" mode="aspectFit"></image>
</view>
<view>
<text style=" display: inline-block; margin-top: 40rpx;">{{bookInfo.name}}</text><br />
<text>作者{{bookInfo.author.authorName}}</text>
</view>
</view>
<view class="btn" @click="gotoBuy()">
<text>立即购买</text>
</view>
</view>
</view>
<!-- <view class="opbtn flexbox">
<view class="">上一章</view>
<view class="">下一章</view>
</view> -->
</view>
<music-play :playData="playData"></music-play>
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
</view>
</template>
<script>
import musicPlay from '@/components/music.vue'
import {
mapState,
mapMutations
} from 'vuex';
export default {
data() {
return {
audioAction: {
method: 'pause'
},
audioShow: false,
voicesImg: '',
isBuy: false,
playData: {},
teachId: null, // 讲书id
bookId: null, // 书籍id
bookInfo: {
author: {
authorName: ''
}
}, // 书籍信息
talkBookDetail: {},
windowWidth: 0,
}
},
onLoad(e) {
this.windowWidth = uni.getSystemInfoSync().windowWidth;
console.log(e, 'onLoad')
this.bookId = e.bookId
this.teachId = e.teachId
},
onShow() {
this.getBookInfo()
this.getTalkBookDetail()
},
computed: {
...mapState(['userInfo'])
},
methods: {
...mapMutations(['setUserInfo']),
// 购买
gotoBuy() {
uni.navigateTo({
url: '../bookShop/commodityDetail?id=' + this.bookInfo.productId
});
},
getBookInfo() {
// 获取书本基本信息
this.$http
.post('book/book/getBookInfo', {
'bookId': this.bookId,
'userId': this.userInfo.id
})
.then(res => {
if (res.code == 0) {
console.log(res, 'res')
this.bookInfo = res.book
if (!this.bookInfo.author || this.bookInfo.author == null) {
this.bookInfo.author = {
'authorName': '未知'
}
console.log(this.bookInfo.author.authorName, 'this.bookInfo.author.authorName')
}
//console.log(this.bookInfo.author.authorName,'this.bookInfo.author.authorName')
this.voicesImg = res.book.images
// this.bookInfo.name = res.book.name
this.isBuy = res.book.isBuy
console.log(this.voicesImg, 'this.voicesImg')
// this.freeChapterCount = res.book.freeChapterCount
} else {
console.log(res.msg)
}
console.log(res, '书籍基本信息')
}).catch((error) => {
console.log(error)
})
},
// 获取讲书详情
getTalkBookDetail() {
this.audioShow = false
this.$http
.post('book/teach/getTeachDetail', {
'teachId': this.teachId
})
.then(res => {
if (res.code == 0) {
console.log(res, 'res')
this.talkBookDetail = res.bookTeach
// this.isBuy = res.book.isBuy
// this.freeChapterCount = res.book.freeChapterCount
} else {
console.log(res.msg)
}
this.audioShow = true
console.log(res, '讲书信息')
}).catch((error) => {
console.log(error)
this.audioShow = true
})
},
},
components: {
musicPlay
},
}
</script>
<style scoped lang="scss">
.mainContent {
margin: 20rpx 10rpx;
padding: 20rpx;
background-color: #fff;
border-radius: 10rpx;
}
.flexbox {
display: flex;
}
.voices {
margin: 10rpx auto;
text-align: center;
}
/deep/ .uni-audio-name {
// white-space: wrap !important;
width: 340rpx;
}
.title {
font-size: 30rpx;
color: #55aa7f;
font-weight: bold;
margin: 40rpx 0;
}
.time {
text-align: right;
font-size: 24rpx;
margin-top: 20rpx;
color: #999;
}
.content {
font-size: 28rpx;
text-align: justify;
color: #666;
line-height: 48rpx;
}
.tuijin {
font-size: 26rpx;
margin-top: 20rpx;
.img {
width: 150rpx;
height: 150rpx;
overflow: hidden;
}
image {
height: 150rpx;
width: 100%;
}
p {
font-size: 28rpx;
margin-bottom: 20rpx;
color: #55aa7f;
}
}
.btn {
margin-right: 20rpx;
text {
display: inline-block;
margin-top: 52rpx;
font-size: 30rpx;
padding: 5px 8px;
background: #55aa7f;
color: #fff;
border-radius: 5px;
}
}
// .opbtn{font-size: 14rpx;}
</style>