<!-- 详情 -->
<template>
<div class="ho-case-det">
<detailsHeader :shopData="shopInfo"></detailsHeader>
<div class="cas-details-bg">
<div class="cas-details ho-container">
<div class="text-says">
<p>
<span>{{detailsData&&detailsData.exampleName}}</span>
<img src="~/static/img/brand/br_name.png" alt="">
<span class="last">{{detailsData&&detailsData.exampleLabel}}</span>
</p>
<div class="t-say-info" v-html="detailsData&&detailsData.exampleInfo">
<img src="~/static/img/brand/pr_shang.png" class="shang consx">
<img src="~/static/img/brand/pr_xia.png" class="xia consx">
</div>
</div>
<div class="img-say">
<!--<img :src="imgUrl+(detailsData&&detailsData.examplePictureUrl)" class="example">-->
<img :src="imgUrl+(detailsData&&detailsData.jyjProductResources[0].fileShowUrl)" class="example">
<img :src="detailsData&&detailsData.companyLogo" alt="" class="logo" v-if="detailsData&&detailsData.companyLogo!=undefined">
</div>
<div class="time">
<!--<img src="~/static/img/brand/pr_time.png" alt="">-->
{{detailsData&&detailsData.createDate}}
</div>
<div class="comment ho-container">
<p class="title">
<span>评论</span>
</p>
<el-row :gutter="20" class="my-el-row">
<el-col :span="3"><div class="grid-content bg-purple">
<img :src="detailsData&&detailsData.companyLogo" alt="">
</div></el-col>
<el-col :span="18"><div class="grid-content bg-purple">
<!--<el-form ref="pageForm" :model="form" :rules="formRules">
<el-form-item>
<el-input
type="textarea"
resize="none"
:rows="3"
placeholder="说一下你的想法"
v-model="form.content">
</el-input>
</el-form-item>
</el-form>-->
<span style="position: absolute;z-index: 2;display: block;width: 35px;height: 29px;left:190px;top:3px;background: #fff;"></span>
<tin-edite :height="143" size-editor="msg" :value="inputContent" @editorChange="editorChange"></tin-edite>
<span v-show="hisShow">输入你的评论</span>
<div class="sub-com clearfix">
<!--<img src="../../static/img/case/cas_biaoq.png" alt="">-->
<span :loading="isSubmit" :disabled="isSubmit" @click="getAddHui">评论</span>
</div>
<ul class="com-list">
<li v-for="(item,index) in pinJiaList" :key="index">
<!--<img :src="imgUrl+item.headUrl" alt="" class="comment-avatar">-->
<img :src="item.icon" alt="" class="comment-avatar">
<div class="comment-info">
<span class="co-in-name" v-if="item.replyUserName!=undefined && item.replyUserName!=''">{{item.replyUserName}}</span>
<span class="co-in-name" v-else>jyj{{(Math.random() * Date.now() / 1000000).toFixed(0)}}</span>
<p v-html="item.text"></p>
<div class="reply-handle clearfix">
<span>{{item.createDate}}</span>
<img src="../../static/img/case/cas_gengduo.png" alt="">
<span @click="moreRepInfo(item,index)" style="cursor: pointer">{{item.replyCount}}条回复</span>
<img src="../../static/img/case/cas_xia.png" alt="" @click="moreRepInfo(item,index)">
<span @click="handleRepBor(item,index)" >回复</span>
</div>
<!--回复框-->
<div class="rep-bor repBor" style="display: none">
<el-form :model="form">
<el-form-item>
<el-input v-model="assayItemValue[index]" placeholder="写下你的回复" ref="noText"></el-input>
</el-form-item>
</el-form>
<div class="sub-btn-in">
<span @click="getRelp(item,index)">回复</span>
<span @click="handleRepBor(item,index)">取消</span>
</div>
</div>
<!--更多回复展示-->
<div class="more-rep-show moreRepShow" style="display: none">
<ul class="com-list">
<li v-for="(itemRelp,index) in item.nodes" :key="index" v-if="item&&item.replyCount>0">
<img :src="itemRelp.icon" alt="" class="comment-avatar">
<div class="comment-info" style="width: 680px">
<span class="co-in-name">{{itemRelp.replyUserName}}</span>
<p>{{itemRelp.text}}</p>
<div class="reply-handle clearfix">
<span>{{itemRelp.createDate}}</span>
<!--<span>回复</span>-->
<!--<span @click="getDelRepList(itemRelp)">删除</span>-->
</div>
</div>
</li>
<li v-if="item&&item.replyCount==0">
暂无回复
</li>
</ul>
</div>
</div>
</li>
<li v-if="pinJiaListNo=='评价列表查询成功 无数据.'">
暂无评论
</li>
</ul>
</div></el-col>
<el-col :span="3"><div class="grid-content bg-purple"></div></el-col>
</el-row>
</div>
</div>
</div>
</div>
</template>
<script>
import detailsHeader from '~/components/detailsHeader'
/*import reply from '~/components/case/reply'
import replyList from '~/components/case/replyList'*/
import tinEdite from '~/components/module/editor.vue'
import {findProductExampleById,saveJYJEvaluate,findJYJEvaluatePage,fiJEvaluateTree,delJYJEvaluate} from '~/api/case'
import {getShopInfoByCreateUserId} from '~/api/productCenter'
import { needLogin } from '~/api/method'
export default {
layout:'details',
validate ({ params }) {
return /^\d+$/.test(params.id)
},
head () {
return {
title: this.detailsData.exampleName+'',
meta: [
{ hid: 'description', name: 'description', content: '' }
]
}
},
data (){
return {
imgUrl:this.$store.state.serFileUrl,
form:{},
hideInfo:false , //更多回复显示隐藏
hideRepBor:false , //回复框显示隐藏
detailsData:[], //
shopInfo:{}, //
formRules:{
content: [
{required: true, message: '请输入您的评论', trigger: 'blur'}
],
},
pinJiaList:[],
pinJiaListNo:'',
pinJiaListChdiren:[],
noPingjia:'',
assayItemValue:{}, //操作自己input
isSubmit: false, // 防止用户多次点击
hisShow: false, // 防止用户多次点击
inputContent:''
}
},
components:{
//reply,
detailsHeader,
//replyList
tinEdite
},
asyncData({params, error}){
return findProductExampleById(params).then((res) => {
if(res.data.code>0){
return {detailsData : res.data.data}
}
}).catch((error) => {
error({ statusCode: 500, message: '请求发生错误' })
})
},
mounted(){},
methods:{
editorChange(str) {
this.inputContent = str
},
getShopInfo () {
getShopInfoByCreateUserId({ 'userId': this.detailsData.createUserId }).then(res => {
if (res.data.code >0) {
this.shopInfo = res.data.data
}else{
this.$message.error(res.data.msg)
}
}).catch(() => {
this.$message.error('请求发生错误 -- 获取店铺菜单')
})
},
getAddHui() { //评论
this.isSubmit = true
if(this.$store.state.code!=''){
if(this.inputContent==''){
this.$message('请输入您的评论');
} else{
let param = {
evaluateContent:this.inputContent,
sonid:this.$route.params.id,
parentId:'',
sonidName:this.detailsData.exampleName,
}
saveJYJEvaluate(param).then((res) => {
this.isSubmit = false
this.inputContent = ''
this.getPinJiaList()
}).catch((error) => {
})
}
} else {
needLogin(this)
}
},
getRelp(item,index){ //回复评论
if(this.$store.state.code!=''){
console.log('sssss',this.assayItemValue[index])
if(this.assayItemValue[index] == ''||this.assayItemValue[index]==undefined){
this.$message('请输入您的回复');
} else {
let param = {
evaluateContent:this.assayItemValue[index],
sonid:this.$route.params.id,
parentId:item.id,
sonidName:this.detailsData.exampleName,
}
saveJYJEvaluate(param).then((res) => {
this.getPinJiaList()
this.assayItemValue[index] = ''
}).catch((error) => {
})
}
} else {
needLogin(this)
}
},
getPinJiaList () { //父级评价列表
let param = {
evaluatetype:'CASE',
sonid:this.$route.params.id,
node:''
}
fiJEvaluateTree(param).then((res) => {
if(res.data.code>0){
this.pinJiaList = res.data.data
this.pinJiaListNo = res.data.msg
}
}).catch((error) => {
})
},
getDelRepList (itemRelp) { //删除回复
if(this.$store.state.code!=''){
if(this.shopInfo.createUserId == this.$store.state.userInfo.chinabimUserId){
delJYJEvaluate(itemRelp.id).then((res) => {
this.getPinJiaList()
}).catch((error) => {
})
} else {
this.$message('没有权限删除');
}
} else {
needLogin(this)
}
},
async storLisr () {
await this.getPinJiaList()
},
moreRepInfo(item,index){
let sub_menu = this.$el.querySelectorAll('.moreRepShow');
for(let j = 0,len=sub_menu.length; j < len; j++){
if(index==j){
if(sub_menu[j].style.display == "none") {
sub_menu[j].style.display = "block";
} else {
sub_menu[j].style.display = "none";
}
} else if (sub_menu[j].style.display == "block"){
sub_menu[j].style.display = "none";
}
}
},
handleRepBor(item,index){
let sub_menu = this.$el.querySelectorAll('.repBor');
for(let j = 0,len=sub_menu.length; j < len; j++){
if(index==j){
if(sub_menu[j].style.display == "none") {
sub_menu[j].style.display = "block";
} else {
sub_menu[j].style.display = "none";
}
} else if (sub_menu[j].style.display == "block"){
sub_menu[j].style.display = "none";
}
}
},
},
created (){
this.storLisr()
this.getShopInfo()
console.log('22222',this.detailsData)
},
mounted(){
window.parent.scrollTo(0, 0);
}
}
</script>
<style lang="scss">
/*.head-nav{*/
/*display: none;*/
/*}*/
.ho-case-det{
border-top: 1px solid $borderGreen;
.cs-de-header{
padding: 20px 0;
.bg-purple{
img,div{
display: inline-block;
vertical-align: bottom;
}
img{
margin-right: 20px;
width: 50px;
height: 50px;
/*border: 1px solid #ccc;*/
}
h5{
font-size: $default-font-size;
padding-bottom: 10px;
}
}
.bg-purple-light{
text-align: right;
p{
margin: 5px 10px;
}
a{
color:$orange;
}
img{
margin-right: 10px;
margin-top: -2px;
}
}
}
.del-banner{
img{
display: block;
width: 100%;
height: 120px;
}
}
.case-nav{
background: $orange;
a{
display: inline-block;
padding: 10px 20px;
color: $white;
font-size: 16px;
}
}
.cas-details-bg{
padding-top: 10px;
background: $bgGreen;
.cas-details{
position: relative;
padding: 0 40px 0 20px;
width: 1140px;
background: $white;
.text-says{
width: 785px;
padding: 30px 25px 30px 20px;
background: $white;
p{
margin-bottom: 35px;
span{
font-size: 36px;
}
img{
margin: 0 10px 0 30px;
}
.last{
font-size: $mid-font-size;
}
}
.t-say-info{
position: relative;
margin-bottom: 30px;
padding-left: 30px;
/*height: 60px;*/
text-indent: 2em;
line-height: 30px;
font-size: $mid-font-size;
.consx{
position: absolute;
}
.shang{
top:0;
left: 0;
}
.xia{
bottom: -10px;
right: 0;
}
p{
img{
width: 100%;
}
}
}
}
.img-say{
position: absolute;
right: 70px;
top:42px;
img{
display: block;
}
.example{
width: 270px;
height: 165px;
//border:1px solid #ccc;
}
.logo{
position: relative;
top:-207px;
right: -209px;
width: 130px;
height: 110px;
//border: 1px solid #ccc;
}
}
.sac-info-say{
padding-left: 80px;
font-size: $mid-font-size;
color: $orange;
span:nth-child(2){
margin: 0 20px;
}
}
/*.detaile-info{
padding: 35px 35px 70px 35px;
}*/
.time{
text-align: right;
padding-bottom: 30px;
}
}
.comment{
margin-top: 10px;
padding-bottom: 70px;
background: $white;
.title{
margin-bottom: 30px;
border-bottom: 1px solid $bgBorder;
span{
display: block;
width: 80px;
height: 42px;
line-height: 42px;
text-align: center;
border-bottom: 2px solid $orange;
}
}
.my-el-row{
.el-col-3{
img{
margin-left: 40px;
display: block;
width: 72px;
height: 72px;
border-radius: 36px;
//background: #ccc;
}
}
.el-col-18{
.sub-com{
margin-top: 20px;
margin-bottom: 20px;
span{
float: right;
display: block;
width: 100px;
height: 30px;
text-align: center;
line-height: 30px;
background:$orange;
color: $white;
cursor: pointer;
}
}
.com-list{
padding: 0 15px;
border: 1px solid $borderGreen;
background: $bgGreen;
li{
padding: 15px 0;
border-bottom: 1px solid #e8e8e8;
.comment-avatar,.comment-info{
display: inline-block;
vertical-align: top;
}
.comment-avatar{
margin-right: 15px;
width: 30px;
height: 30px;
border-radius: 15px;
// background: #ccc;
}
.comment-info{
width: 770px;
.co-in-name{
margin-top: 10px;
}
p{
margin-bottom: 10px;
line-height: 24px;
}
.reply-handle{
color: $wordGreen;
span:first-child{
margin-right: 25px;
}
>span+img{
margin-top: -2px;
}
span+img+span{
margin: 0 5px;
}
span+img+span+img+span{
float: right;
cursor: pointer;
}
span+img+span+img+span:hover{
color: $orange;
}
}
.rep-bor{
margin-top: 10px;
padding: 15px 20px;
background: #f1f1f1;
.sub-btn-in{
text-align: right;
span{
display: inline-block;
margin-left: 10px;
width: 58px;
height: 28px;
text-align: center;
line-height: 28px;
border: 1px solid $bgBorder;
cursor: pointer;
color: $wordGreen;
}
span:hover{
background:$orange ;
border: 1px solid $orange;
color: $white;
}
}
}
/*更多回复*/
.more-rep-show{
margin-top: 10px;
.com-list{
background: $white;
}
.comment-info{
width: 735px;
}
.reply-handle{
span+span{
float: right;
margin-left: 10px;
cursor: pointer;
}
span+span:hover{
color: $orange;
}
}
}
}
}
li:last-child{
border-bottom: none;
}
}
}
}
}
}
}
</style>
![](https://i-blog.csdnimg.cn/blog_migrate/005b4db251b806b3de031004c9379978.png)