书评列表完成
This commit is contained in:
@@ -2,83 +2,49 @@
|
||||
<view class="container">
|
||||
<view class="header">
|
||||
<!-- 顶部导航栏 -->
|
||||
<z-nav-bar title="书评" bgColor="red"></z-nav-bar>
|
||||
<z-nav-bar title="书评列表" bgColor="red"></z-nav-bar>
|
||||
</view>
|
||||
<view class="bookInfo flexbox">
|
||||
<image :src="productInfo.images" mode="aspectFill"></image>
|
||||
<view>
|
||||
<span class="title">{{productInfo.name}}</span>
|
||||
<view class="description">{{productInfo.description}}</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="mainContent">
|
||||
<view v-if="shupingList.length > 0">
|
||||
<view class="item" @click.stop="toDetail(item)" v-for="(item,index) in shupingList" :key="index">
|
||||
<image class="feng" v-if="item.image == ''" src="../../static/icon/home_bg.jpg" mode="scaleToFill" style="width: 100%;"></image>
|
||||
<image class="feng" v-else :src="item.image" mode="scaleToFill" style="width: 100%;"></image>
|
||||
<text class="title">{{item.title}}</text>
|
||||
<!-- <view class="description" v-html="item.content">
|
||||
{{item.content}}
|
||||
</view> -->
|
||||
<view class="btns flexbox">
|
||||
<span class="time">{{item.updateTime}}</span>
|
||||
<span class="flexbox opbtns">
|
||||
<!-- <span class="flexbox" @click="dianzan('1')">
|
||||
<u-icon name="heart" color="#55aa00" size="26"></u-icon>
|
||||
<text>2656</text>
|
||||
</span> -->
|
||||
<span class="flexbox pingjia" @click.stop="pinglun(item.id)">
|
||||
<u-icon name="chat" color="#55aa00" size="26"></u-icon>
|
||||
<!-- <text>2656</text> -->
|
||||
</span>
|
||||
</span>
|
||||
<view class="bookInfo" v-for="(productInfo,index) in productList" :key="index">
|
||||
<view class="flexbox" style="margin-bottom: 20px;">
|
||||
<image :src="productInfo.bookimage" mode="aspectFill"></image>
|
||||
<view class="bookInfo-inner">
|
||||
<span class="title">{{productInfo.bookName}}</span>
|
||||
<span class="title">作者:{{productInfo.authorName}}</span>
|
||||
<view class="description">简介:{{productInfo.content}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="quesheng" v-else>
|
||||
暂无书评内容~
|
||||
</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 class="mainContent">
|
||||
<view v-if="productInfo.shupingList.length > 0">
|
||||
<view class="item" @click.stop="toDetail(item)" v-for="(item,index1) in productInfo.shupingList" :key="index1">
|
||||
<image class="feng" v-if="item.image == ''" src="../../static/icon/home_bg.jpg" mode="scaleToFill" style="width: 100%;"></image>
|
||||
<image class="feng" v-else :src="item.image" mode="scaleToFill" style="width: 100%;"></image>
|
||||
<text class="title">{{item.title}}</text>
|
||||
<!-- <view class="description" v-html="item.content">
|
||||
{{item.content}}
|
||||
</view> -->
|
||||
<view class="btns flexbox">
|
||||
<span class="time">{{item.updateTime}}</span>
|
||||
<span class="flexbox opbtns">
|
||||
</span>
|
||||
</view>
|
||||
</view>
|
||||
<view class="gengduoshuping" @click.stop="toMore(productInfo)">
|
||||
查看更多
|
||||
</view>
|
||||
</view>
|
||||
<view class="quesheng" v-else>
|
||||
暂无书评内容~
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 评价对话框 -->
|
||||
<u-popup :show="pingjiaShow" :round="10" @close="closePingjia">
|
||||
<view class="tanchu">
|
||||
<view class="dp_title">添加评论</view>
|
||||
<view style="max-height: 1000rpx;overflow-y: scroll;">
|
||||
<uni-forms :modelValue="Pform">
|
||||
<!-- 评价图片 -->
|
||||
<!-- end -->
|
||||
<!-- <uni-forms-item name="comment" label-width="0">
|
||||
<uni-easyinput type="textarea" v-model="Pform.comment" placeholder="请输入您的商品评价" />
|
||||
</uni-forms-item> -->
|
||||
</uni-forms>
|
||||
<!-- <u-button type="success" @click="submitPJ">提交评价</u-button> -->
|
||||
<!-- 提交 -->
|
||||
<view class="padding-bottom-sm flex padding-lr-sm" style="border-bottom: 1px solid #EEEEEE;">
|
||||
|
||||
<view class="flex-sub flexbox">
|
||||
<i @click="showEmj()" :class="emojiIcon" ></i>
|
||||
<!-- <input type="text" @focus="InputFocus" @blur="InputBlur" v-model="message" @input="textareaBInput" placeholder-style="font-size:24rpx;color:#aaaaaa;" placeholder="请输入您要发送的内容"></input> -->
|
||||
<textarea class="textarea" v-model="Pform.comment" @focus="InputFocus" @blur="InputBlur" @input="textareaBInput" placeholder-style="font-size:24rpx;color:#aaaaaa;" placeholder="请输入您要发送的内容"></textarea>
|
||||
</view>
|
||||
<view class="">
|
||||
<u-button type="success" @click="submitPJ">提交</u-button>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view style="position: relative;">
|
||||
<emotion @emotion="handleEmj" :height="220" v-if="isShowEmj" :windowWidth="windowWidth"></emotion>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
<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>
|
||||
@@ -94,51 +60,14 @@ import { data } from 'jquery';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loadingNow : false,
|
||||
// loadingNow : false,
|
||||
playData:{},
|
||||
isShowEmj: false,
|
||||
emojiIcon:'cuIcon-emoji',
|
||||
windowWidth:0,
|
||||
bookid:null,
|
||||
productInfo:{
|
||||
"id": 199,
|
||||
"name": "华阳经",
|
||||
"authorId": "3",
|
||||
"description": "",
|
||||
"title": "",
|
||||
"isSale": 0,
|
||||
"isVip": 0,
|
||||
"freeChapterCount": 3,
|
||||
"content": "",
|
||||
"type": "1",
|
||||
"price": null,
|
||||
"salePrice": null,
|
||||
"flag": false,
|
||||
"istop": null,
|
||||
"publisherId": "8",
|
||||
"images": "https://ehh-private-01.oss-cn-beijing.aliyuncs.com/2023/09/01/5f0c27571e2544908954f61a31fc3534华阳经-封面_00.png",
|
||||
"imagesList": null,
|
||||
"pid": null,
|
||||
"level": "",
|
||||
"chapterStatus": "2",
|
||||
"contentStatus": "0",
|
||||
"voicesStatus": "0",
|
||||
"splits": "0",
|
||||
"createTime": "2023-09-01 11:18:10",
|
||||
"updateTime": "2023-09-08 14:37:51",
|
||||
"sort": null,
|
||||
"state": 1,
|
||||
"novel": "https://ehh-private-01.oss-cn-beijing.aliyuncs.com/2023/09/01/c19a41e6a88e450cafd9848e611d5b8a华阳经.docx",
|
||||
"delFlag": 0,
|
||||
"publisherName": "辽宁科学技术出版社",
|
||||
"authorName": "吴雄志",
|
||||
"chapterId": null,
|
||||
"chapterName": null,
|
||||
"chapterNum": null,
|
||||
"isBuy": 0,
|
||||
"canListen": true,
|
||||
"clockIn": null
|
||||
},
|
||||
booklistpage: 1,
|
||||
productList:[],
|
||||
productInfo:{},
|
||||
pingjiaShow:false, //添加评价
|
||||
Pform:{ // 评价表单
|
||||
star:0,
|
||||
@@ -152,21 +81,7 @@ import { data } from 'jquery';
|
||||
pageSize:10,
|
||||
total:0,
|
||||
status:3,
|
||||
shupingList:[
|
||||
{
|
||||
"id": 18,
|
||||
"title": "华阳经-书评",
|
||||
"userid": 8,
|
||||
"content": "<p>华山之南,复有奇山,名不高山。山不甚高,然不可攀也。其山之下,岷水之滨,有云阳氏,感金光之道,大圣之业,撰用内难伤寒,阴符道经,汇通百家,旁参古今,演绎真言,凡三百六十五条,命之曰《华阳经》,保承圣道,传于无穷,穷于无极也。</p><p><br></p><p>呜呼,上士求道,中士明理,下士困于方术之中。神用无方者,合于道乎?今诸凡夫,妄谈天人,引鬼神群嘲。道外求道,是为不道。云阳子乃生大悲心,出于定中,道其道,名其名,强为之言。然须弥诸境,亦阳气所化。阳气者,自虚无中来。故凡所有象,皆是空华。既是空华,不当强言。虽言非其言,然一言难尽者,一言以蔽之。</p>",
|
||||
"image": "https://ehh-private-01.oss-cn-beijing.aliyuncs.com/2023/09/11/a77d9304c7e04695a78c77988163e576ed346ee47d8e65c913d9987f9214367.jpg",
|
||||
"imagelist": null,
|
||||
"bookid": 199,
|
||||
"createTime": "2023-09-11 09:02:35",
|
||||
"updateTime": "2023-09-11 09:02:35",
|
||||
"contlike": null,
|
||||
"delflag": 0
|
||||
}
|
||||
],
|
||||
shupingList:[],
|
||||
bfaid:null,
|
||||
}
|
||||
},
|
||||
@@ -174,196 +89,93 @@ import { data } from 'jquery';
|
||||
console.log('下拉刷新了')
|
||||
uni.stopPullDownRefresh();
|
||||
|
||||
this.page=1, // 页码
|
||||
this.shupingList = []
|
||||
this.getBookCom()
|
||||
this.booklistpage=1, // 页码
|
||||
this.productList = []
|
||||
this.getBookList()
|
||||
|
||||
},
|
||||
onReachBottom() {
|
||||
this.loadingNow = true
|
||||
if(this.page < this.total){
|
||||
this.page++
|
||||
console.log('加载',this.page)
|
||||
this.status = 0
|
||||
this.getBookCom()
|
||||
// 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
|
||||
}
|
||||
// }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.getProDetail(e)
|
||||
this.getBookCom()
|
||||
// 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:'./commentsDetail?bookid='+this.bookid+'&bfa_id='+val.id
|
||||
url:'../comments/commentsDetail?bookid='+val.bookid+'&bfa_id='+val.id
|
||||
})
|
||||
},
|
||||
getProDetail(e){
|
||||
getBookList(){
|
||||
// 获取商品详情
|
||||
// uni.showLoading({
|
||||
// title: '加载中'
|
||||
// });
|
||||
//console.log(e.id,'e.id')
|
||||
// this.$http
|
||||
// .post('book/book/appinfo/' + this.bookid + '/' + this.userInfo.id)
|
||||
// .then(res => {
|
||||
// console.log(res,'res')
|
||||
// this.productInfo = res.book
|
||||
// uni.hideLoading();
|
||||
// }).catch((e)=>{
|
||||
// console.log(e,'e')
|
||||
// })
|
||||
},
|
||||
// 获得书评
|
||||
getBookCom(){
|
||||
let data = {
|
||||
'page': this.page,
|
||||
'limit': this.pageSize,
|
||||
'bookid' : this.bookid
|
||||
}
|
||||
console.log(data,'data')
|
||||
// this.$http
|
||||
// .post('forum/articles/descupdatelist', data)
|
||||
// .then(res => {
|
||||
// console.log(res,'获取成功')
|
||||
// this.total = res.page.totalPage
|
||||
// this.shupingList = this.shupingList.concat(res.page.list)
|
||||
// // console.log(res,'已购买')
|
||||
// this.status = 3
|
||||
// }).catch((e)=>{
|
||||
// console.log(e,'e')
|
||||
// })
|
||||
},
|
||||
// 获得输入的表情数组
|
||||
handleEmj(i) {
|
||||
console.log(i,'i---------');
|
||||
this.inputValue = i
|
||||
// console.log(this.inputValue);
|
||||
if(i.emotioni == '[em_98]') {
|
||||
//匹配最后一个表情符号并删除11。
|
||||
this.Pform.comment = this.Pform.comment.replace(/(\[[^\]]+\]|[\s\S])$/, '');
|
||||
if(this.emoji.length > 0){
|
||||
this.emoji = this.emoji.slice(0,-1)
|
||||
}
|
||||
} else {
|
||||
this.emoji.push({'tag' : i.emotion, 'name':i.emotioni})
|
||||
// console.log(this.emoji,'this.emoji')
|
||||
this.Pform.comment += i.emotioni;
|
||||
/// this.Pform.html += i.emotion
|
||||
}
|
||||
},
|
||||
textareaBInput(e) {
|
||||
console.log(e,'e')
|
||||
this.Pform.comment = e.detail.value
|
||||
/// this.Pform.html = e.detail.value
|
||||
},
|
||||
showEmj() {
|
||||
let bool = !this.isShowEmj;
|
||||
if(bool) {
|
||||
this.emojiIcon = 'cuIcon-keyboard';
|
||||
} else {
|
||||
this.emojiIcon = 'cuIcon-emoji';
|
||||
}
|
||||
|
||||
this.isShowEmj = bool;
|
||||
this.$emit('show')
|
||||
},
|
||||
InputBlur(e){
|
||||
|
||||
},
|
||||
InputFocus(e){
|
||||
this.isShowEmj = false;
|
||||
this.emojiIcon = 'cuIcon-emoji';
|
||||
this.$emit('foc')
|
||||
},
|
||||
|
||||
// end
|
||||
deleteImg(e){
|
||||
// var arr = this.Pform.img.slice(0,-1)
|
||||
this.Pform.img.pop()
|
||||
// console.log('删除文件',arr)
|
||||
console.log(this.Pform)
|
||||
},
|
||||
getStar(i){
|
||||
this.Pform.star = i
|
||||
},
|
||||
select(e){
|
||||
console.log('选择文件:',e)
|
||||
let arr = e.tempFiles.map(item => {
|
||||
return {'url':item.url,'name':item.name}
|
||||
})
|
||||
this.Pform.img = this.Pform.img.concat(...arr)
|
||||
//this.Pform.img = arr
|
||||
console.log(this.Pform,'img')
|
||||
},
|
||||
upSuccess(e){
|
||||
console.log(e)
|
||||
},
|
||||
// 获取html格式的评论1
|
||||
getHtmlComment(){
|
||||
// 格式化html
|
||||
var ss = this.Pform.comment
|
||||
if(this.emoji.length> 0){
|
||||
for (var i = 0; i<this.emoji.length; i++){
|
||||
if(this.Pform.comment.indexOf(this.emoji[i].name) !== -1 ){
|
||||
//var re = new RegExp(this.emoji[0].name,"g"); //定义正则表达式
|
||||
//第一个参数是要替换掉的内容,第二个参数"g"表示替换全部(global)。
|
||||
// ss = ss.replace(re, ); //第一个参数是正则表达式。
|
||||
ss = ss.replace(this.emoji[i].name, this.emoji[i].tag)
|
||||
// console.log(ss)
|
||||
}
|
||||
}
|
||||
this.Pform.html = ss
|
||||
}else{
|
||||
this.Pform.html = this.Pform.comment
|
||||
}
|
||||
//console.log(this.Pform.html,'this.Pform.html')
|
||||
},
|
||||
deletePic() {
|
||||
let that = this
|
||||
that.Pform.img.splice(0, 1)
|
||||
//console.log(that.Pform.img)
|
||||
},
|
||||
afterRead(e) {
|
||||
//console.log(e)
|
||||
let that = this
|
||||
for (var i=0; i< e.file.length; i++) {
|
||||
//console.log(i,e.file[i].url)
|
||||
uni.uploadFile({
|
||||
url: this.$baseUrl + 'oss/fileoss',
|
||||
filePath: e.file[i].url,
|
||||
//files:e.file,
|
||||
name: 'file',
|
||||
formData: {},
|
||||
success: (res) => {
|
||||
that.Pform.img.push({
|
||||
url: JSON.parse(res.data).url
|
||||
})
|
||||
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')
|
||||
})
|
||||
},
|
||||
closePingjia(){
|
||||
this.pingjiaShow = false
|
||||
this.Pform.comment = ''
|
||||
this.Pform.html = ''
|
||||
this.emoji = []
|
||||
},
|
||||
// 点赞
|
||||
dianzan(val){},
|
||||
|
||||
// 显示评论
|
||||
pinglun(val){
|
||||
@@ -455,6 +267,7 @@ import { data } from 'jquery';
|
||||
}}
|
||||
|
||||
.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;
|
||||
@@ -465,17 +278,36 @@ import { data } from 'jquery';
|
||||
padding-bottom: 20rpx;
|
||||
border-radius: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
|
||||
view{ padding-left: 30rpx; box-sizing: border-box; width: calc(100% - 150px);
|
||||
.bookInfo-inner{ padding-left: 30rpx; box-sizing: border-box; width: calc(100% - 150px);
|
||||
.title{font-size: 38rpx; margin-top: 20rpx; font-weight: blod; margin-bottom: 20rpx; display: block;
|
||||
}
|
||||
.description{line-height: 20px; width: 100%; color:#888; padding-left: 0;}
|
||||
.description{
|
||||
line-height: 20px;
|
||||
width: 100%;
|
||||
color:#888;
|
||||
padding-left: 0;
|
||||
overflow:hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-line-clamp: 7;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
}
|
||||
image{width: 150px !important; }
|
||||
|
||||
}
|
||||
.mainContent{background-color: #fff;
|
||||
.item{padding: 10px; margin-bottom: 30rpx;}
|
||||
.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-bottom: 15px; overflow: hidden;}
|
||||
.title{font-size: 38rpx; font-weight: blod; color: #55aa00; overflow: hidden;}
|
||||
.description{ overflow: hidden; color: #666;
|
||||
|
||||
Reference in New Issue
Block a user