Files
nuttyreading-html/pages/comments/commentsList-old.vue
2025-06-12 14:46:28 +08:00

353 lines
9.5 KiB
Vue
Raw 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 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>