添加讲书

This commit is contained in:
@fawn-nine
2023-09-26 17:46:03 +08:00
parent d27325394c
commit 63cbc9da2f
3 changed files with 910 additions and 0 deletions

View File

@@ -0,0 +1,197 @@
<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" :src="talkBookDetail.voices" poster="../../static/icon/fengziIcon.jpg"
:name="talkBookDetail.title" :author="bookInfo.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">
<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.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>
</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: {}, // 书籍信息
talkBookDetail: {},
}
},
onLoad(e) {
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/settlementBook?type=2&list=' + this.bookId
});
},
getBookInfo() {
// 获取书本基本信息
this.$http
.post('book/book/appinfo/' + this.bookId + '/' + this.userInfo.id)
.then(res => {
if (res.code == 0) {
console.log(res, 'res')
this.bookInfo = res.book
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;
}
.title {
font-size: 30rpx;
color: #55aa7f;
font-weight: bold;
margin-bottom: 10px;
}
.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>