书评改造

This commit is contained in:
yanwenlong
2023-09-25 00:58:01 +08:00
parent 8d78bd6636
commit 46cf912cb4
7 changed files with 1027 additions and 106 deletions

View File

@@ -0,0 +1,352 @@
<template>
<view class="container">
<view class="header">
<!-- 顶部导航栏 -->
<z-nav-bar title="书评列表" bgColor="red"></z-nav-bar>
</view>
<view class="bookInfo" v-for="(productInfo,index) in productList" :key="index">
<view class="flexbox" style="margin-bottom: 20px;">
<image :src="productInfo.bookimage" mode="aspectFill" class="imageradius bookinfoimage"></image>
<view class="bookInfo-inner">
<span class="title">{{productInfo.bookName}}</span>
<span class="author">作者{{productInfo.authorName}}</span>
<view class="description">简介{{productInfo.bookdesc}}</view>
</view>
</view>
<view class="mainContent">
<view style="display:flex;justify-content:space-between;">
<view style="font-weight: 700;margin:0rpx 0rpx 40rpx;font-size:32rpx;">热门书评</view>
<view style="font-weight: 500;margin:0rpx 0rpx 20rpx;font-size:28rpx;color:#8b8a91" @click.stop="toMore(productInfo)">查看更多</view>
</view>
<view v-if="productInfo.shupingList.length > 0">
<view class="item" @click.stop="toDetail(item)" v-for="(item,index1) in productInfo.shupingList" :key="index1">
<view class="title">{{item.title}}</view>
<image class="feng" v-if="item.image" :src="item.image" mode="aspectFill"></image>
<view class="description" v-html="item.content">
</view>
<!-- <image class="feng" v-if="item.image == ''" src="../../static/icon/home_bg.jpg" mode="aspectFill"></image> -->
<view class="btns flexbox">
<span class="time">{{item.createTime}}</span>
<span class="flexbox opbtns">
</span>
</view>
<view style="border-bottom:2rpx solid #e9e9e9;height:50rpx;" v-if="index1<productInfo.shupingList.length-1"></view>
</view>
<!-- <view class="gengduoshuping" @click.stop="toMore(productInfo)">
查看更多
</view> -->
</view>
<view class="quesheng" v-else>
暂无书评内容~
</view>
</view>
</view>
<view v-if="status==0" style="text-align: center;">
<u-loading-icon style="display: inline-block;"></u-loading-icon>
<font style='vertical-align: super;margin-left: 10px;font-size: 26rpx;color: #909399;'>努力加载中</font>
</view>
<view v-if="status==1" style="padding-bottom: 20rpx;">
<u-divider text="全部加载完成"></u-divider>
</view>
<music-play :playData="playData"></music-play>
</view>
</template>
<script>
import $http from '@/config/requestConfig.js';
import emotion from '@/bkhumor-emojiplus/components/bkhumor-emojiplus/bkhumor-emojiplus.vue';
import musicPlay from '@/components/music.vue'
import { data } from 'jquery';
import {
mapState
} from 'vuex';
export default {
data() {
return {
// loadingNow : false,
playData:{},
emojiIcon:'cuIcon-emoji',
windowWidth:0,
bookid:null,
booklistpage: 1,
productList:[],
productInfo:{},
pingjiaShow:false, //添加评价
Pform:{ // 评价表单
star:0,
comment:'',
img:[],
html:''
},
emoji:[],
Files:[],
page:1,
pageSize:10,
total:0,
status:3,
shupingList:[],
bfaid:null,
}
},
onPullDownRefresh() {
console.log('下拉刷新了')
uni.stopPullDownRefresh();
this.booklistpage=1, // 页码
this.productList = []
this.getBookList()
},
onReachBottom() {
// this.loadingNow = true
this.booklistpage++
this.getBookList()
// if(this.page < this.total){
// this.page++
// console.log('加载',this.page)
// this.status = 0
// this.getBookCom()
// }else{
// this.status = 1
// console.log('加载完成了',this.page)
// return
// }
},
onLoad(e) {
this.windowWidth = uni.getSystemInfoSync().windowWidth;
console.log(e,'onload')
// this.bookid = e.bookid
this.getBookList()
},
computed:{
...mapState(['userInfo']),
},
methods: {
// 查看本书更多书评
toMore(val){
console.log(val,'val')
uni.navigateTo({
url: '../comments/comments?bookid='+val.bookid,
});
},
// 书评详情
toDetail(val){
console.log(val,'val')
uni.navigateTo({
url:'../comments/commentsDetail?bookid='+val.bookid+'&bfa_id='+val.id
})
},
getBookList(){
// 获取商品详情
uni.showLoading({
title: '加载中'
});
this.$http
.post('forum/articles/desc/' + this.booklistpage)
.then(res => {
let list = res.descupdatelist.list
console.log(list,'list')
for(let i=0; i < list.length; i++){
let data = {
'page': 1,
'limit': 3,
'bookid' : list[i].bookid
}
this.$http
.post('forum/articles/descupdatelist', data)
.then(res => {
// this.total = res.page.totalPage
// this.shupingList = this.shupingList.concat(res.page.list)
list[i].shupingList = res.page.list
console.log(res.page.list,'评论获取成功')
console.log(list,'list')
this.productList.push(list[i])
console.log(this.productList,'productList')
// this.status = 3
}).catch((e)=>{
console.log(e,'e')
})
}
if(list.length != 2){
this.status = 1
} else {
this.status = 0
}
uni.hideLoading();
}).catch((e)=>{
console.log(e,'e')
})
},
// 显示评论
pinglun(val){
this.bfaid = val
this.pingjiaShow = true
},
// 提交评论
submitPJ(){
if(this.Pform.comment != ''){
let data={
'content':this.Pform.comment,
'userid':this.userInfo.id,
'bookid':this.bookid,
'bfaid': this.bfaid
}
// console.log(data,'data')
$http.request({
url: "forum/comment/save",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data,
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
}).then(res => {
if (res.code == 0) {
uni.showToast({
title:'评论成功!',
icon:'success'
})
this.pingjiaShow = false
this.Pform.comment = ''
this.pinglunId = null
}
})
}else{
uni.showToast({
title:'请先输入您的评价内容 ',
icon:'none'
})
}
},
},
components:{
musicPlay,
emotion
}
}
</script>
<style lang="scss" scoped>
.flexbox{display: flex;}
.container{padding: 10px;}
.star{display: inline-block; width: 20px; height: 20px; margin-right: 10rpx;}
.starGray{ background : url(../../static/icon/star_greey.png) no-repeat; background-size: contain; }
.starLight{ background : url(../../static/icon/star_light.png) no-repeat; background-size: contain;}
.cuIcon-emoji {
background : url(../../static/biaoqing.png) no-repeat; background-size: contain; display: block; margin-right: 20rpx;
width: 30px; }
.cuIcon-keyboard{background : url(../../static/biaoqing.png) no-repeat; background-size: contain; display: block;
width: 30px; }
.tanchu {
padding: 40rpx 30rpx 40rpx 30rpx;
position: relative;
.dp_title {
font-size: 32rpx;
margin-bottom: 50rpx;
color: #555;
text-align: center;
font-weight: bold;
}
.dp_add {
position: absolute;
top: 40rpx;
right: 30rpx;
font-size: 22rpx;
background-color: #fd6004;
color: #fff;
border-radius: 10rpx;
padding: 5rpx 10rpx;
.u-icon {
display: inline-block;
margin-right: 5rpx;
}
}}
.quesheng{text-align: center; margin-top: 100rpx; color: #8b8a91; padding-bottom: 20rpx; padding-top: 20rpx;}
.gengduoshuping{text-align: right; color: #0044ff; padding-bottom: 20rpx; padding-top: 20rpx;}
.bookInfo{
justify-content: space-between;
margin-bottom: 15px;
background-color: #fff;
padding:10px;
border: 1px splid #999;
box-sizing: border-box;
padding-bottom: 20rpx;
border-radius: 20rpx;
margin-bottom: 20rpx;
.imageradius{
border-radius: 20rpx;
border:1rpx solid #e9e9e9;
}
.bookInfo-inner{ padding-left: 30rpx; box-sizing: border-box; width: calc(100% - 150px);
.title{font-size: 32rpx; margin-top: 0rpx; margin-bottom: 20rpx;font-weight: 700; display: block;}
.author{font-size: 30rpx;margin-top: 0rpx;margin-bottom: 20rpx;font-weight: 500; display: block; }
.description{
font-size: 28rpx;
line-height: 20px;
width: 100%;
color:#888;
padding-left: 0;
overflow:hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 9;
display: -webkit-box;
-webkit-box-orient: vertical;
}
}
.bookinfoimage{width: 150px !important; }
}
.mainContent{
background-color: #fff;
.item{
// padding: 10px;
margin-bottom: 30rpx;
// border: 1px solid #999;
box-sizing: border-box;
padding-bottom: 20rpx;
border-radius: 20rpx;
margin-bottom: 20rpx;
}
.feng{margin:10rpx 0 0 0;height: 200rpx;width: 200rpx;float:right;border-radius: 20rpx;border:1rpx solid #e9e9e9;}
.title{font-size: 32rpx; font-weight: 500; color: #55aa00; overflow: hidden;}
.description{
overflow: hidden;
color: #666;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 5;
line-clamp: 5;
-webkit-box-orient: vertical;
font-size: 28rpx;
margin-bottom: 15px;
margin-top:5px;
min-height: 144rpx;
}
.btns{
font-size: 24rpx;
justify-content: flex-start;
align-items: center;
.time{font-size: 24rpx; color: #666; }
.opbtns{
.pingjia{margin-left: 10px;}
}
}
}
.mb30{margin-bottom: 30rpx; overflow: hidden;}
</style>