Files
nuttyreading-html/pages/yian/yianDetail.vue
2023-11-30 22:24:34 +08:00

577 lines
16 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="productInfo.title"></z-nav-bar>
</view>
<view class="bookInfo">
<!-- <image :src="productInfo.images" mode="aspectFill"></image> -->
<view>
<!-- <span class="title">{{productInfo.title}}</span> -->
<!-- <view class="description">{{productInfo.content}}</view> -->
<view class="content" v-html="productInfo.content"></view>
</view>
<!-- <view class="flexbox" style="margin-bottom: 20px;">
<image :src="productInfo.images" mode="aspectFill" class="imageradius bookinfoimage"></image>
<view class="bookInfo-inner">
<span class="title">{{productInfo.name}}</span>
<span class="author">作者{{productInfo.authorName}}</span>
<view class="description" v-if="productInfo.description == ''">暂无简介内容</view>
<view class="description" v-else>简介{{productInfo.description}}</view>
</view>
</view> -->
</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 emojiList1 from '../../bkhumor-emojiplus/emoji/biaoqin.js'
import {
mapState
} from 'vuex';
export default {
data() {
return {
playData:{},
isShowEmj: false,
emojiIcon:'cuIcon-emoji',
windowWidth:0,
bookid:null,
bfa_id:null, //书评id
productInfo:{},
status:3,
pingjiaShow:false, //添加评价
Pform:{ // 评价表单
//star:0,
comment:'',
//img:[],
html:''
},
emoji:[],
Files:[],
commentInfo:{},
pPage:1,
pTotal:0, // 评论的总条数
// pinglunId:null,
plList:[], // 书评的评论list
}
},
onLoad(e) {
this.windowWidth = uni.getSystemInfoSync().windowWidth;
console.log(e,'onload')
this.medicalRecordsId = e.medicalRecordsId
this.bfa_id = e.bfa_id
},
onShow() {
this.getProDetail()
},
onReachBottom() {
},
computed:{
...mapState(['userInfo']),
},
methods: {
formatTimeDifferenceFromT(dateTimeT) {
const now = new Date();
const t = new Date(dateTimeT);
const differenceInSeconds = Math.floor((now - t) / 1000);
if (differenceInSeconds <= 3600) {
const minutes = Math.floor(differenceInSeconds / 60);
return `${minutes} 分钟前`;
} else if (differenceInSeconds <= 86400) {
const hours = Math.floor(differenceInSeconds / 3600);
return `${hours} 小时前`;
} else if (differenceInSeconds <= 2592000) {
const days = Math.floor(differenceInSeconds / 86400);
return `${days} 天前`;
} else {
const currentYear = now.getFullYear();
const tYear = t.getFullYear();
if (currentYear === tYear) {
const month = t.getMonth() + 1;
const day = t.getDate();
return `${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
} else {
const year = t.getFullYear();
const month = t.getMonth() + 1;
const day = t.getDate();
return `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
}
}
},
clickLikeshuping(item){
this.$http
.post("forum/articles/chickForumContlike?forum_id=" + item.id,)
.then(res => {
if (res.code == 0) {
uni.showToast({
title:'点赞成功!',
icon:'success'
})
item.contlike++
}
}).catch((e)=>{
console.log(e,'e')
})
},
clickLikehuifu(item){
let data = {
comment_id: item.id
}
this.$http
.post("forum/articles/chickCommentConlike", data)
.then(res => {
if (res.code == 0) {
uni.showToast({
title:'点赞成功!',
icon:'success'
})
item.contlike++
}
}).catch((e)=>{
console.log(e,'e')
})
},
getProDetail(){
// 获取商品详情
uni.showLoading({
title: '加载中'
});
//console.log(e.id,'e.id')
this.$http
.post('book/bookMedicalRecords/getById?medicalRecordsId=' + this.medicalRecordsId )
.then(res => {
console.log(res,'res')
this.productInfo = res.entity
uni.hideLoading();
}).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(comment){
// 格式化html
// console.log(comment,'comment')
// 这里处理 链接 换行符
let replacedStr = comment.replace(/\[([^(\]|\[)]*)\]/g, (item, index) => {
// console.log(item, index)
var indexss = emojiList1.findIndex(item1 => item1.alt === item)
// console.log(indexss, 'indexss')
return '<img src="https://www.nuttyreading.com/emojis/emojis/qq/' + emojiList1[indexss].url + '" width="18rpx">';
});
// console.log(replacedStr,'replacedStr')
return replacedStr.replace(/(\r\n)|(\n)/g, '<br>');
},
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
})
}
});
}
},
closePingjia(){
this.pingjiaShow = false
this.Pform.comment = ''
this.Pform.html = ''
this.emoji = []
},
// 点赞
dianzan(val){},
// 放大图片
previewImage(url) {
console.log(url)
uni.previewImage({
urls: [url]
});
},
// 显示评论框
pinglun(val){
console.log('pinglun-val', val)
if(val && val.user && val.user.id && val.puser && val.puser.id){
this.Pform.name = val.user.name || ''
this.Pform.pid = val.pid
this.Pform.puserId = val.user.id || ''
}else if(val && val.user && val.user.id){
this.Pform.name = val.user.name || ''
this.Pform.pid = val.id
this.Pform.puserId = val.user.id || ''
}else {
// this.pinglunId = val || null
this.Pform.pid = ''
this.Pform.puserId = ''
}
this.pingjiaShow = true
},
},
components:{
musicPlay,
emotion
}
}
</script>
<style lang="scss" scoped>
.addPl{padding-top: 0rpx; margin-bottom: 0rpx;}
.pinglunMain{
.pl-item{
margin: 0 0 14rpx 0;
padding: 0 0 14rpx 0;
border-bottom: 1px solid #f0f0f0;
.pl-son{
margin: 14rpx 0 14rpx 60rpx;
padding: 0 14rpx 14rpx 14rpx;
background-color: #f0f0f0;
border-radius: 10rpx;
.pl-son-item{
font-size: 26rpx;
padding-top: 28rpx;
.pl-son-item-content{
}
.pl-son-atob{
color: #a1a1a1;
}
}
}
}
.plusername{
font-size: 26rpx;
color: #a1a1a1;
}
.content{
margin: 30rpx 0rpx;
line-height: 40rpx;
color: #000;
font-size: 30rpx;
}
background-color: #fff; padding: 10px;
// h4{color: #55aa00; font-size: 40rpx; margin:30rpx 0 ; text-align: center;}
.time{color: #888; font-size: 24rpx;}
.btns{
font-size: 22rpx;
justify-content: space-between;
align-items: center;
.left{
width: 300rpx;
color: #a1a1a1;
}
.right{
width: 300rpx;
display: flex;
justify-content: flex-end;
align-items: center;
}
.gzicon{
margin:0 0 0 20rpx;
height: 40rpx;
width: 40rpx;
// float:left;
// border-radius: 20rpx;
// border:1rpx solid #e9e9e9;
}
.opbtns{
.pingjia{margin-left: 10px;}
}
}
}
// .mbtns{padding: 5px; background-color: #f4fff5; border-radius: 10px; font-size: 34rpx; color: #8b8a91; margin:15px 0; justify-content: space-between;}
/deep/.zhengwen{
line-height: 50rpx;
font-size: 28rpx;
margin-top: 20rpx;
img{
width: 100% !important;
}
}
.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;}
// .bookInfo{justify-content: space-between; margin-bottom: 15px; background-color: #fff; padding:10px; border: 1px splid #999;
// view{ padding-left: 30rpx;width: calc(100% - 150rpx); box-sizing: border-box;
// .title{font-size: 38rpx; margin-top: 20rpx; margin-bottom: 20rpx; display: block;}
// .description{line-height: 20px; width: 100%; color:#888; padding-left: 0;}
// text{margin-left: 10px; line-height: 20px; color: #888; padding-left: 0;}
// }
// image{width: 150px; height: 150px;}
// }
.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; }
// view{ 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;}
// }
// image{width: 150px !important; }
.btns{
font-size: 22rpx;
justify-content: space-between;
align-items: center;
.left{
width: 300rpx;
color: #a1a1a1;
}
.right{
width: 300rpx;
display: flex;
justify-content: flex-end;
align-items: center;
}
.gzicon{
margin:0 0 0 20rpx;
height: 40rpx;
width: 40rpx;
// float:left;
// border-radius: 20rpx;
// border:1rpx solid #e9e9e9;
}
.opbtns{
.pingjia{margin-left: 10px;}
}
}
.feng{
// margin:10rpx 0 0 0;
// height: 670rpx;
// width: 670rpx;
// border-radius: 20rpx;
// border:1rpx solid #e9e9e9;
margin:10rpx 20rpx 0 0;
height: 360rpx;
width: 280rpx;
// float:left;
border-radius: 20rpx;
border:1rpx solid #e9e9e9;
}
.item{
// padding: 10px;
margin-bottom: 30rpx;
}
// .title{font-size: 38rpx; font-weight: blod; color: #55aa00; overflow: hidden;}
.title{font-size: 32rpx; font-weight: 700; color: #000; overflow: hidden;padding-top: 20rpx;padding-bottom: 10rpx;}
.description{
overflow: hidden;
color: #666;
font-size: 28rpx;
margin-bottom: 30rpx;
margin-top:10rpx;
}
}
.mainContent{
background-color: #fff;
padding: 20rpx;
border-radius: 20rpx;
.item{
// padding: 10px;
margin-bottom: 30rpx;
}
.feng{
// margin:10rpx 0 0 0;
// height: 670rpx;
// width: 670rpx;
// border-radius: 20rpx;
// border:1rpx solid #e9e9e9;
margin:10rpx 20rpx 0 0;
height: 160rpx;
width: 140rpx;
float:left;
border-radius: 20rpx;
border:1rpx solid #e9e9e9;
}
// .title{font-size: 38rpx; font-weight: blod; color: #55aa00; overflow: hidden;}
.title{font-size: 32rpx; font-weight: 500; color: #55aa00; overflow: hidden;padding-top: 20rpx;}
.description{
overflow: hidden;
color: #666;
font-size: 28rpx;
margin-bottom: 15px;
margin-top:5px;
// 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: 186rpx;
}
}
.mb30{margin-bottom: 30rpx; overflow: hidden;}
</style>