|
|
@@ -0,0 +1,1340 @@
|
|
|
+<script type="text/x-template" id="ms-comment">
|
|
|
+ <div class="comment-container">
|
|
|
+ <!--评论开始-->
|
|
|
+ <div class="article-comment">
|
|
|
+ <a style="width: 50px;height: 50px;margin-right: 10px;">
|
|
|
+ <img src="/upload/1/people/icon/1872457333638361088.png" alt="icon">
|
|
|
+ </a>
|
|
|
+ <!--输入框-start-->
|
|
|
+ <el-form ref="form" :model="form" :rules="rules" style="width:100%;margin-top: 5px;">
|
|
|
+ <el-form-item prop="commentContent" style="margin-top: -5px">
|
|
|
+ <el-input type="textarea" placeholder="快来评论吧~" v-model="form.commentContent">
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button style="margin-left: 40px" type="primary" plain @click="send()" :disabled="!form.commentContent">提交评论</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+
|
|
|
+ <!--输入框-end-->
|
|
|
+ </div>
|
|
|
+ <!--评论结束-->
|
|
|
+ <!--评论回复列表-start-->
|
|
|
+ <div class="messages" v-if="total>0">
|
|
|
+ <div class="w-commentlist-header">
|
|
|
+ <div class="w-commentlist-total">{{total}}条评论</div>
|
|
|
+ </div>
|
|
|
+ <!--评论列表-start-->
|
|
|
+ <div class="messages-item">
|
|
|
+ <div class="w-comment-list">
|
|
|
+ <!-- 评论模型 -->
|
|
|
+ <div v-show="flag" v-for="(item,index) in commentDataList" :key="item.id + item.parentName"
|
|
|
+ style="margin-bottom: 20px;">
|
|
|
+ <!-- 父级评论start -->
|
|
|
+ <div class="w-comment-item" style="display:flex">
|
|
|
+ <!--头像默认用一个图标替代-start-->
|
|
|
+ <a class="w-comment-userpic" style="margin-right: 10px;">
|
|
|
+ <img class="w-user-pic" v-if="item.puIcon"
|
|
|
+ :src="item.puIcon" />
|
|
|
+ <img class="w-user-pic" v-else
|
|
|
+ src="/upload/1/people/icon/1872457333638361088.png" />
|
|
|
+ </a>
|
|
|
+ <!--头像默认用一个图标替代-end-->
|
|
|
+ <!--评论内容-start-->
|
|
|
+ <div class="w-comment-item-box">
|
|
|
+ <!-- 评论用户名start -->
|
|
|
+ <div class="w-comment-item-box-head">
|
|
|
+ <a class="w-comment-item-username">
|
|
|
+ {{item.peopleName?item.peopleName:'游客'}}
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ <!-- 评论用户名end -->
|
|
|
+ <!--具体评论内容-start-->
|
|
|
+ <div class="w-comment-item-box-content">
|
|
|
+ <p> {{item.commentContent}} </p>
|
|
|
+ <!--图片-->
|
|
|
+<!-- <div v-if="item.commentPicture">-->
|
|
|
+<!-- <template v-for="picture in JSON.parse(item.commentPicture)">-->
|
|
|
+<!-- <el-image-->
|
|
|
+<!-- style="width: 100px; height: 100px;margin: 0 10px 10px 0px"-->
|
|
|
+<!-- :src="`{ms:global.contextPath/}`+picture.path"-->
|
|
|
+<!-- :preview-src-list="item.pictureList"-->
|
|
|
+<!-- >-->
|
|
|
+<!-- </el-image>-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <!–视频–>-->
|
|
|
+<!-- <div v-if="item.commentFileJson">-->
|
|
|
+<!-- <template v-for="file in JSON.parse(item.commentFileJson)">-->
|
|
|
+<!-- <video class="video-demo">-->
|
|
|
+<!-- <source :src="file.path" type="video/mp4"/>-->
|
|
|
+<!-- </video>-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- </div>-->
|
|
|
+ </div>
|
|
|
+ <!--具体评论内容-start-->
|
|
|
+ <!-- 评论底部交互start -->
|
|
|
+ <div class="w-comment-item-box-bottom">
|
|
|
+ <span class="w-comment-time">{{item.commentTime}} IP 属地:{{item.commentIp}} </span>
|
|
|
+ <div class="w-comment-interaction">
|
|
|
+ <button class="w-comment-reply-btn">
|
|
|
+ <i class="iconfont icon-pinglun label"></i>
|
|
|
+ <label :for="'reply-input'+index" class="value" @click="switchShowComment(item)">
|
|
|
+ 回复
|
|
|
+ </label>
|
|
|
+ </button>
|
|
|
+ <button class="w-comment-like-btn" @click="like(item)" :class="{checked:item.likeLabel=='取消'}">
|
|
|
+ <i class="iconfont icon-zan label"></i>
|
|
|
+ <span v-if="!item.likeTotal">赞</span>
|
|
|
+ <span class="value" v-else>
|
|
|
+ {{item.likeTotal}}
|
|
|
+ </span>
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 评论底部交互end -->
|
|
|
+ <!-- 回复框start -->
|
|
|
+ <div class="w-comment-reply" v-show="item.showChildComment">
|
|
|
+ <el-input style="width: 98%;margin-right: 10px" type="text" :placeholder="'请输入回复内容'" v-model="form.replyContent"
|
|
|
+ :id="'reply-input'+index">
|
|
|
+ </el-input>
|
|
|
+ <el-button @click="reply(item)" :disabled="!form.replyContent" type="primary">发送</el-button>
|
|
|
+ </div>
|
|
|
+ <!-- 回复框end -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 父级评论end -->
|
|
|
+ <!-- 子评论列表start -->
|
|
|
+ <div
|
|
|
+ v-for="child,index in (showChildComment?item.childCommentDataLists:item.childCommentDataLists.slice(0,2))"
|
|
|
+ :key="child.id+child.parentName">
|
|
|
+ <div class="w-comment-item w-child-reply" style="display:flex">
|
|
|
+ <!--头像默认用一个图标替代-start-->
|
|
|
+ <a class="w-comment-userpic" style="margin-right: 10px;">
|
|
|
+ <img class="w-user-pic" v-if="child.puIcon"
|
|
|
+ :src="child.puIcon" />
|
|
|
+ <img class="w-user-pic" v-else
|
|
|
+ src="https://pic2.zhimg.com/v2-abed1a8c04700ba7d72b45195223e0ff_xl.jpg?source=32738c0c" />
|
|
|
+ </a>
|
|
|
+ <!--头像默认用一个图标替代-end-->
|
|
|
+ <!--评论内容-start-->
|
|
|
+ <div class="w-comment-item-box">
|
|
|
+ <!-- 评论用户名start -->
|
|
|
+ <div class="w-comment-item-box-head">
|
|
|
+ <a class="w-comment-item-username">
|
|
|
+ {{child.peopleName?child.peopleName:'游客'}}
|
|
|
+ </a>
|
|
|
+ <i class="el-icon-caret-right"
|
|
|
+ style="font-size: 12px;color:rgb(153, 153, 153);margin: 0px 4px;"></i>
|
|
|
+ <a class="w-comment-item-replyname">{{child.parentName?child.parentName:'游客'}}</a>
|
|
|
+ </div>
|
|
|
+ <!-- 评论用户名end -->
|
|
|
+ <!--具体评论内容-start-->
|
|
|
+ <div class="w-comment-item-box-content">
|
|
|
+ <p> {{child.commentContent}} </p>
|
|
|
+ </div>
|
|
|
+ <!--具体评论内容-start-->
|
|
|
+ <!-- 评论底部交互start -->
|
|
|
+ <div class="w-comment-item-box-bottom">
|
|
|
+ <span class="w-comment-time">{{child.commentTime}} IP 属地:{{item.commentIp}} </span>
|
|
|
+ <div class="w-comment-interaction">
|
|
|
+ <button class="w-comment-reply-btn">
|
|
|
+ <i class="iconfont icon-pinglun label"></i>
|
|
|
+ <label class="value" :for="'child-reply'+index" @click="switchShowComment(child)">
|
|
|
+ 回复
|
|
|
+ </label>
|
|
|
+ </button>
|
|
|
+ <button class="w-comment-like-btn" @click="like(child)"
|
|
|
+ :class="{checked:child.likeLabel=='取消'}">
|
|
|
+ <i class="iconfont icon-zan label"></i>
|
|
|
+ <span v-if="!child.likeTotal">赞</span>
|
|
|
+ <span class="value" v-else>
|
|
|
+ {{child.likeTotal}}
|
|
|
+ </span>
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 评论底部交互end -->
|
|
|
+ <!-- 回复框start -->
|
|
|
+ <div class="w-comment-reply" v-show="child.showChildComment">
|
|
|
+ <el-input style="width: 98%;margin-right: 10px" type="text" :placeholder="'请输入回复内容'" v-model="form.replyContent"
|
|
|
+ :id="'child-reply'+index">
|
|
|
+ </el-input>
|
|
|
+ <el-button @click="reply(child)" :disabled="!form.replyContent" type="primary">发送</el-button>
|
|
|
+ </div>
|
|
|
+ <!-- 回复框end -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 子评论列表end -->
|
|
|
+ <!-- 当子列表大于2时出现start -->
|
|
|
+ <button class="w-show-other-childcomment"
|
|
|
+ v-if="item.childCommentDataLists.length > 2 && item.childCommentDataLists.length <= 5 && !showChildComment"
|
|
|
+ @click="showOtherchildComment(item)">
|
|
|
+ 展开其他 {{item.childCommentDataLists.length - 2}} 条回复<i class="el-icon-arrow-right"></i>
|
|
|
+ </button>
|
|
|
+ <button class="w-show-other-childcomment" v-else-if="item.childCommentDataLists.length > 5"
|
|
|
+ @click="showAllChildComment(item)">
|
|
|
+ 查看全部 {{item.childCommentDataLists.length}} 条回复<i class="el-icon-arrow-right"></i>
|
|
|
+ </button>
|
|
|
+ <!-- 当子列表大于2时出现end -->
|
|
|
+ </div>
|
|
|
+ <!-- -->
|
|
|
+ <el-dialog title="评论回复" :visible.sync="dialogTableVisible" v-if="currentComment" class="w-dialog-container"
|
|
|
+ :lock-scroll="false">
|
|
|
+ <div class="w-dialog-reply">
|
|
|
+ <div class="current-comment">
|
|
|
+ <div class="w-comment-item" style="display:flex">
|
|
|
+ <!--头像默认用一个图标替代-start-->
|
|
|
+ <a class="w-comment-userpic" style="margin-right: 10px;">
|
|
|
+ <img class="w-user-pic" v-if="currentComment.puIcon"
|
|
|
+ :src="currentComment.puIcon" />
|
|
|
+ <img class="w-user-pic" v-else
|
|
|
+ src="https://pic2.zhimg.com/v2-abed1a8c04700ba7d72b45195223e0ff_xl.jpg?source=32738c0c" />
|
|
|
+ </a>
|
|
|
+ <!--头像默认用一个图标替代-end-->
|
|
|
+ <!--评论内容-start-->
|
|
|
+ <div class="w-comment-item-box">
|
|
|
+ <!-- 评论用户名start -->
|
|
|
+ <div class="w-comment-item-box-head">
|
|
|
+ <a class="w-comment-item-username">
|
|
|
+ {{currentComment.peopleName?currentComment.peopleName:'游客'}}
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ <!-- 评论用户名end -->
|
|
|
+ <!--具体评论内容-start-->
|
|
|
+ <div class="w-comment-item-box-content">
|
|
|
+ <p> {{currentComment.commentContent}} </p>
|
|
|
+ </div>
|
|
|
+ <!--具体评论内容-start-->
|
|
|
+ <!-- 评论底部交互start -->
|
|
|
+ <div class="w-comment-item-box-bottom">
|
|
|
+ <span class="w-comment-time">{{currentComment.commentTime}} IP 属地:{{item.commentIp}} </span>
|
|
|
+ <div class="w-comment-interaction">
|
|
|
+ <button class="w-comment-reply-btn">
|
|
|
+ <i class="iconfont icon-pinglun label"></i>
|
|
|
+ <label class="value" :for="'dialog-reply'+currentComment.puNickname"
|
|
|
+ @click="switchShowComment(currentComment)">
|
|
|
+ 回复
|
|
|
+ </label>
|
|
|
+ </button>
|
|
|
+ <button class="w-comment-like-btn" @click="like(currentComment)"
|
|
|
+ :class="{checked:currentComment.likeLabel=='取消'}">
|
|
|
+ <i class="iconfont icon-zan label"></i>
|
|
|
+ <span v-if="!currentComment.likeTotal">赞</span>
|
|
|
+ <span class="value" v-else>
|
|
|
+ {{currentComment.likeTotal}}
|
|
|
+ </span>
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 评论底部交互end -->
|
|
|
+ <div class="w-comment-reply" v-show="currentComment.showChildComment">
|
|
|
+ <el-input style="width: 98%" type="text" :placeholder="'请输入回复内容'" v-model="form.replyContent"
|
|
|
+ :id="'dialog-reply'+currentComment.puNickname">
|
|
|
+ </el-input>
|
|
|
+ <el-button @click="reply(currentComment)" :disabled="!form.replyContent" type="primary">发送
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="w-reply-list">
|
|
|
+ <div class="w-commentlist-header">
|
|
|
+ <div class="w-commentlist-total">{{currentComment.childCommentDataLists.length}}条回复</div>
|
|
|
+ </div>
|
|
|
+ <div class="w-reply-list-container">
|
|
|
+ <div class="w-reply-item" v-for="childReply,index in currentComment.childCommentDataLists"
|
|
|
+ :key="childReply.id">
|
|
|
+ <div class="w-comment-item w-child-reply" style="display:flex">
|
|
|
+ <!--头像默认用一个图标替代-start-->
|
|
|
+ <a class="w-comment-userpic" style="margin-right: 10px;">
|
|
|
+ <img class="w-user-pic" v-if="childReply.puIcon"
|
|
|
+ :src="childReply.puIcon" />
|
|
|
+ <img class="w-user-pic" v-else="childReply.puIcon"
|
|
|
+ src="https://pic2.zhimg.com/v2-abed1a8c04700ba7d72b45195223e0ff_xl.jpg?source=32738c0c" />
|
|
|
+ </a>
|
|
|
+ <!--头像默认用一个图标替代-end-->
|
|
|
+ <!--评论内容-start-->
|
|
|
+ <div class="w-comment-item-box">
|
|
|
+ <!-- 评论用户名start -->
|
|
|
+ <div class="w-comment-item-box-head">
|
|
|
+ <a class="w-comment-item-username">
|
|
|
+ {{childReply.peopleName?childReply.peopleName:'游客'}}
|
|
|
+ </a>
|
|
|
+ <i class="el-icon-caret-right"
|
|
|
+ style="font-size: 12px;color:rgb(153, 153, 153);margin: 0px 4px;"></i>
|
|
|
+ <a class="w-comment-item-replyname">{{childReply.parentName?childReply.parentName:'游客'}}</a>
|
|
|
+ </div>
|
|
|
+ <!-- 评论用户名end -->
|
|
|
+ <!--具体评论内容-start-->
|
|
|
+ <div class="w-comment-item-box-content">
|
|
|
+ <p> {{childReply.commentContent}} </p>
|
|
|
+ </div>
|
|
|
+ <!--具体评论内容-start-->
|
|
|
+ <!-- 评论底部交互start -->
|
|
|
+ <div class="w-comment-item-box-bottom">
|
|
|
+ <span class="w-comment-time">{{childReply.commentTime}} IP 属地:{{item.commentIp}} </span>
|
|
|
+ <div class="w-comment-interaction">
|
|
|
+ <button class="w-comment-reply-btn" @click="switchShowComment(childReply)">
|
|
|
+ <i class="iconfont icon-pinglun label"></i>
|
|
|
+ <label class="value" :for="'dialog-reply'+index">
|
|
|
+ 回复
|
|
|
+ </label>
|
|
|
+ </button>
|
|
|
+ <button class="w-comment-like-btn" @click="like(childReply)"
|
|
|
+ :class="{checked:reply.likeLabel=='取消'}">
|
|
|
+ <i class="iconfont icon-zan label"></i>
|
|
|
+ <span v-if="!reply.likeTotal">赞</span>
|
|
|
+ <span class="value" v-else>
|
|
|
+ {{childReply.likeTotal}}
|
|
|
+ </span>
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 评论底部交互end -->
|
|
|
+ <!-- 回复框start -->
|
|
|
+ <div class="w-comment-reply" v-show="childReply.showChildComment">
|
|
|
+ <el-input style="width: 98%" type="text" :placeholder="'请输入回复内容'" v-model="form.replyContent"
|
|
|
+ :id="'dialog-reply'+index">
|
|
|
+ </el-input>
|
|
|
+ <el-button @click="reply(childReply)" :disabled="!form.replyContent" type="primary">发送
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <!-- 回复框end -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!--评论列表-end-->
|
|
|
+ <!-- 当子列表大于2时出现start -->
|
|
|
+ <button class="w-show-other-comment"
|
|
|
+ :style="loadMoreStyle"
|
|
|
+ @click="showNextComment()"
|
|
|
+ :disabled="isMoreDisabled"
|
|
|
+ >
|
|
|
+ {{moreText}}<i class="el-icon-arrow-right"></i>
|
|
|
+ </button>
|
|
|
+ <!-- 当子列表大于2时出现end -->
|
|
|
+ </div>
|
|
|
+ <div v-else class="emptyText">
|
|
|
+ <span>{{emptyText}}</span>
|
|
|
+ </div>
|
|
|
+ <!--评论回复列表-end-->
|
|
|
+ </div>
|
|
|
+</script>
|
|
|
+<script>
|
|
|
+ Vue.component('ms-comment',{
|
|
|
+ template: "#ms-comment",
|
|
|
+ name: "ms-comment",
|
|
|
+ props:{
|
|
|
+ // 业务编号
|
|
|
+ dataId:{
|
|
|
+ type: String
|
|
|
+ },
|
|
|
+ // 当前页
|
|
|
+ pageNo:{
|
|
|
+ type: String
|
|
|
+ },
|
|
|
+ // 业务名称(文章标题)
|
|
|
+ dataTitle:{
|
|
|
+ type: String
|
|
|
+ },
|
|
|
+ // 业务类型
|
|
|
+ dataType: {
|
|
|
+ type: String
|
|
|
+ },
|
|
|
+ },
|
|
|
+ data: function(){
|
|
|
+ return{
|
|
|
+ // 加载更多控制
|
|
|
+ loadMoreStyle:'',
|
|
|
+ // 控制加在更多按钮的禁用
|
|
|
+ isMoreDisabled: false,
|
|
|
+ // 加载更多文本
|
|
|
+ moreText: '加载更多',
|
|
|
+ // 已弃用web接口,默认移除验证码校验
|
|
|
+ verifCode: ms.base + "/code?t=" + (new Date).getTime(),//ms.base + "/code?t=" + new Date().getTime()
|
|
|
+ windowScrollStyle: '',
|
|
|
+ flag: true,
|
|
|
+ commentDataList: [], //评论表列表
|
|
|
+ pageSize: 10, //页面数量
|
|
|
+ currentPage: 1, //初始页,
|
|
|
+ emptyText: '',
|
|
|
+ //总记录数量
|
|
|
+ total: 0,
|
|
|
+ form: {
|
|
|
+ //评论内容
|
|
|
+ commentContent: '',
|
|
|
+ //文章商品id
|
|
|
+ dataId: this.dataId,
|
|
|
+ //业务链接
|
|
|
+ collectionDataUrl: window.location.href,
|
|
|
+ //业务类型
|
|
|
+ dataType: this.dataType,
|
|
|
+ // 业务名称
|
|
|
+ dataTitle: this.dataTitle,
|
|
|
+ //回复内容
|
|
|
+ replyContent: '',
|
|
|
+ // 评论图片
|
|
|
+ commentPicture: [],
|
|
|
+ // 附件JSON
|
|
|
+ commentFileJson: [],
|
|
|
+ // 评论打分
|
|
|
+ commentPoints: 0
|
|
|
+ },
|
|
|
+ rules: {
|
|
|
+ commentContent: [{
|
|
|
+ // "required": true,
|
|
|
+ // "message": "请输入评论"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ isVisitor: 'false', //是否开启游客
|
|
|
+ // likeLabel: '点赞', //评论点赞label
|
|
|
+ dialogTableVisible: false,
|
|
|
+ showChildComment: false, //是否展开其他的子评论
|
|
|
+ dialogTableVisible: false,
|
|
|
+ // 展示当前评论的所有子评论
|
|
|
+ currentComment: null,
|
|
|
+ // 评价颜色
|
|
|
+ commentPointsColor: ['#99A9BF', '#F7BA2A', '#FF9900'],
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ //表格最大高度 用来自适应
|
|
|
+ tableHeight: function () {
|
|
|
+ return document.documentElement.clientHeight - 171;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 加载更多
|
|
|
+ showNextComment: function () {
|
|
|
+ this.pageNo = this.pageNo+1
|
|
|
+ // 默认返回了所有数据,此方法弃用
|
|
|
+ // this.list()
|
|
|
+ },
|
|
|
+ //初始化评论数据
|
|
|
+ initCommentItem: function(data) {
|
|
|
+ //回复框的显示与隐藏
|
|
|
+ data.showChildComment = false
|
|
|
+ //初始化评论点赞总数
|
|
|
+ data.likeTotal = 0
|
|
|
+ //初始化评论点赞的状态
|
|
|
+ data.likeLabel = "点赞"
|
|
|
+ //初始化子评论列表
|
|
|
+ data.childCommentDataLists = []
|
|
|
+ // 查询当前评论的点赞数
|
|
|
+ ms.http.post( ms.base + "/attention/collectionLog/count.do", {
|
|
|
+ dataId: data.id,
|
|
|
+ dataType: '评论点赞'
|
|
|
+ }).then(function (res) {
|
|
|
+ // 将点赞数添加到data中
|
|
|
+ if (res.result) {
|
|
|
+ data.likeTotal = res.data;
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //展开其他的子评论列表
|
|
|
+ showOtherchildComment: function(item) {
|
|
|
+ this.showChildComment = true
|
|
|
+ this.childCommentList = item.childCommentDataLists
|
|
|
+ },
|
|
|
+ //展示所有的子评论列表
|
|
|
+ showAllChildComment: function(item) {
|
|
|
+ this.dialogTableVisible = true
|
|
|
+ this.currentComment = item
|
|
|
+ },
|
|
|
+ //转换时间
|
|
|
+ dateHandler: function(millisecond) {
|
|
|
+ var timdedetail = millisecond; //假如是10位毫秒需要乘1000
|
|
|
+ //获取年份
|
|
|
+ var year = new Date(timdedetail).getFullYear();
|
|
|
+ //获取月份,获取的月份比实际小1,所以在使用的时候需要+1
|
|
|
+ var month = new Date(timdedetail).getMonth() + 1;
|
|
|
+ //获取日
|
|
|
+ var date = new Date(timdedetail).getDate();
|
|
|
+ //获取时
|
|
|
+ var hours = new Date(timdedetail).getHours();
|
|
|
+ //获取分
|
|
|
+ var minutes = new Date(timdedetail).getMinutes();
|
|
|
+ //获取秒
|
|
|
+ var seconds = new Date(timdedetail).getSeconds();
|
|
|
+ //组合格式为年-月-日 时:分:秒(2021-7-5 21:21:21)
|
|
|
+ var time = year + "-" + month + "-" + date + " " + hours + ":" + minutes + ":" + seconds;
|
|
|
+ return time
|
|
|
+ },
|
|
|
+ // 回复评论
|
|
|
+ reply: function (item) {
|
|
|
+ var that = this;
|
|
|
+ ms.http.post( ms.base + '/people/comment/save.do', {
|
|
|
+ commentId: item.id,
|
|
|
+ dataId: that.form.dataId,
|
|
|
+ commentContent: that.form.replyContent,
|
|
|
+ dataType: that.dataType, //业务类型
|
|
|
+ dataTitle: that.dataTitle,
|
|
|
+ }).then(function (res) {
|
|
|
+ if (res.result) {
|
|
|
+ that.form.replyContent = ""
|
|
|
+ item.showChildComment = false
|
|
|
+ that.$notify({
|
|
|
+ title: '成功',
|
|
|
+ type: 'success',
|
|
|
+ message: '回复成功!',
|
|
|
+ duration: 1000,
|
|
|
+ onClose: function () {
|
|
|
+ that.$refs.form.resetFields()
|
|
|
+ location.reload();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ that.clearForm();
|
|
|
+ that.$message.error(res.msg);
|
|
|
+ }
|
|
|
+ }).catch(function (err) {
|
|
|
+ that.clearForm();
|
|
|
+ that.$notify({
|
|
|
+ title: '提示',
|
|
|
+ dangerouslyUseHTMLString: true,
|
|
|
+ message: '需要安装评论插件才能使用,请先进入后台MStore安装评论插件使用。<span style="color: #409EFF; text-decoration: underline;">'
|
|
|
+ +'<a href="http://store.mingsoft.net/#/detail?id=268&type=plugin" target="_blank">点击查看评论插件</a></span>',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ console.log(err);
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ // 评论点赞
|
|
|
+ like: function (item) {
|
|
|
+ var that = this
|
|
|
+ ms.http.post( ms.base + "/people/attention/collection/save.do", {
|
|
|
+ dataId: item.id,
|
|
|
+ dataType: '评论点赞',
|
|
|
+ collectionDataTitle: item.commentContent,
|
|
|
+ }).then(function (res) {
|
|
|
+ if (res.data){
|
|
|
+ that.$message({
|
|
|
+ message: '点赞成功',
|
|
|
+ type: 'success'
|
|
|
+ });
|
|
|
+ item.likeLabel = '取消'
|
|
|
+ } else {
|
|
|
+ that.$message('取消点赞');
|
|
|
+ item.likeLabel = '点赞'
|
|
|
+ }
|
|
|
+ that.likeTotals(item)
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 评论点赞数
|
|
|
+ likeTotals: function (item) {
|
|
|
+ var that = this;
|
|
|
+ //用户-关注接口
|
|
|
+ ms.http.post( ms.base + "/attention/collection/queryCollectionCount.do", {
|
|
|
+ dataIds: item.id,
|
|
|
+ dataType: "评论点赞"
|
|
|
+ }).then((res) => {
|
|
|
+ item.likeTotal = 0;
|
|
|
+ if (res.data && res.data.rows.length > 0) {
|
|
|
+ item.likeTotal = res.data.rows[0].dataCount;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 判断是否开启游客
|
|
|
+ // 已弃用,开发者可以自由扩展游客功能
|
|
|
+ enableVisitor: function () {
|
|
|
+ var that = this;
|
|
|
+ ms.http.get( ms.base + '/mdiy/config/get.do', {
|
|
|
+ configName: '评论配置',
|
|
|
+ key: 'enableVisitor'
|
|
|
+ }).then(function (res) {
|
|
|
+ if (res.result) {
|
|
|
+ that.isVisitor = res.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ hide: function (arr) {
|
|
|
+ var that = this
|
|
|
+ arr.forEach(function (x) {
|
|
|
+ let e = that.$el.querySelector("#key_" + x)
|
|
|
+ if (e) {
|
|
|
+ e.style.display = 'none'
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //vue方法异步请求评论保存接口
|
|
|
+ send: function () {
|
|
|
+ var that = this;
|
|
|
+ that.form.dataType = that.dataType;
|
|
|
+ ms.http.post( ms.base + '/people/comment/save.do', that.form).then(function (res) {
|
|
|
+ if (res.result) {
|
|
|
+ that.$notify({
|
|
|
+ title: '成功',
|
|
|
+ type: 'success',
|
|
|
+ message: '评论成功!',
|
|
|
+ duration: 1000,
|
|
|
+ onClose: function () {
|
|
|
+ that.$refs.form.resetFields()
|
|
|
+ location.reload();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ that.clearForm();
|
|
|
+ that.$message.error(res.msg);
|
|
|
+ }
|
|
|
+ }).catch(function (err) {
|
|
|
+ that.clearForm();
|
|
|
+ that.$notify({
|
|
|
+ title: '提示',
|
|
|
+ dangerouslyUseHTMLString: true,
|
|
|
+ message: '需要安装会员插件才能使用,请先进入后台MStore安装会员插件使用。<span style="color: #409EFF; text-decoration: underline;">' +
|
|
|
+ '<a href="http://store.mingsoft.net/#/detail?id=269&type=plugin" target="_blank">点击查看会员插件</a></span>',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ //查询所有评论
|
|
|
+ list: function () {
|
|
|
+ var that = this;
|
|
|
+ ms.http.post( ms.base + '/comment/list.do', {
|
|
|
+ dataId: that.dataId,
|
|
|
+ dataType: that.dataType,
|
|
|
+ //当前页数
|
|
|
+ pageNo: that.pageNo,
|
|
|
+ //每页文章条数
|
|
|
+ pageSize: 9999,
|
|
|
+ }).then(function (res) {
|
|
|
+ if (res.result) {
|
|
|
+ // 所有评论
|
|
|
+ var allComment = res.data.rows;
|
|
|
+ if (allComment.length <= 0) {
|
|
|
+ that.emptyText = '还没有评论,发表第一个评论吧'
|
|
|
+ } else {
|
|
|
+ // 控制 加载更多按钮是否显示
|
|
|
+ if (allComment.length < 10){
|
|
|
+ // 按钮添加禁用
|
|
|
+ that.loadMoreStyle = "background:none #1214191a;cursor: not-allowed;"
|
|
|
+ // 按钮禁用
|
|
|
+ that.isMoreDisabled = true
|
|
|
+ // 更改提示信息
|
|
|
+ that.moreText = '已加载全部'
|
|
|
+ }
|
|
|
+ ms.http.get( ms.base + '/comment/count.do', {
|
|
|
+ dataId: that.dataId,
|
|
|
+ dataType: that.dataType
|
|
|
+ }).then(function (res) {
|
|
|
+ that.total = res.data;
|
|
|
+ });
|
|
|
+ var commentDataIds = [];
|
|
|
+ // 取出dataId
|
|
|
+ allComment.forEach(function (data) {
|
|
|
+ commentDataIds.push(data.id);
|
|
|
+ })
|
|
|
+ var allCommentCount = [];
|
|
|
+ // 先请求一遍点赞数据
|
|
|
+ ms.http.post( ms.base + "/attention/collection/queryCollectionCount.do", {
|
|
|
+ dataIds: commentDataIds.toString(),
|
|
|
+ dataType: '评论点赞'
|
|
|
+ }).then(function (res) {
|
|
|
+ allCommentCount = res.data;
|
|
|
+ allComment.forEach(function (comment) {
|
|
|
+ comment.likeTotal = 0;
|
|
|
+ comment.likeLabel = '点赞';
|
|
|
+ allCommentCount.rows.forEach(function (item) {
|
|
|
+ if (comment.id == item.dataId) {
|
|
|
+ comment.likeTotal = item.dataCount;
|
|
|
+ comment.likeLabel = item.isLike ? '取消' : '点赞';
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ // 评论数据处理
|
|
|
+ that.commentDataFormat(allComment);
|
|
|
+ }).catch(function (err) {
|
|
|
+ console.log(err);
|
|
|
+ // 异常处理,抛异常且处理评论数据格式
|
|
|
+ that.commentDataFormat(allComment);
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } else{
|
|
|
+ that.$notify({
|
|
|
+ title: '失败',
|
|
|
+ message: res.msg,
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }).catch(function (err){
|
|
|
+ that.$notify({
|
|
|
+ title: '提示',
|
|
|
+ dangerouslyUseHTMLString: true,
|
|
|
+ message: '需要安装评论插件才能使用,请先进入后台MStore安装评论插件使用。<span style="color: #409EFF; text-decoration: underline;">' +
|
|
|
+ '<a href="http://store.mingsoft.net/#/detail?id=268&type=plugin" target="_blank">点击查看评论插件</a></span>',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //
|
|
|
+ commentDataFormat: function (allComment) {
|
|
|
+ var that = this;
|
|
|
+ // 第一级评论
|
|
|
+ var topComment = allComment.filter(c => !c.topId || c.topId==0)
|
|
|
+
|
|
|
+ // 遍历所有评论,设置层级关系
|
|
|
+ topComment.forEach(function (data) {
|
|
|
+ // 如果有peopleInfo 取出头像
|
|
|
+ if (data.peopleInfo && data.peopleInfo!='{}'){
|
|
|
+ var peopleInfo = JSON.parse(data.peopleInfo)
|
|
|
+ data.puIcon = peopleInfo.puIcon;
|
|
|
+ }
|
|
|
+ // 处理ip
|
|
|
+ if (data.commentIp){
|
|
|
+ data.commentIp = JSON.parse(data.commentIp).addr;
|
|
|
+ }
|
|
|
+ //回复框的显示与隐藏
|
|
|
+ data.showChildComment = false
|
|
|
+ //初始化子评论列表
|
|
|
+ data.childCommentDataLists = [];
|
|
|
+ // 当前遍历到评论的所有子评论
|
|
|
+ var childComments = allComment.filter(item => item.topId && item.topId==data.id)
|
|
|
+
|
|
|
+ childComments.forEach(function (childData) {
|
|
|
+ // 子评论头像
|
|
|
+ if (childData.peopleInfo && childData.peopleInfo!='{}'){
|
|
|
+ var peopleInfo = JSON.parse(childData.peopleInfo)
|
|
|
+ childData.puIcon = peopleInfo.puIcon;
|
|
|
+ }
|
|
|
+ // 处理ip
|
|
|
+ if (childData.commentIp){
|
|
|
+ childData.commentIp = JSON.parse(childData.commentIp).addr;
|
|
|
+ }
|
|
|
+ //回复框的显示与隐藏
|
|
|
+ childData.showChildComment = false
|
|
|
+ // 如果父评论为顶级评论则直接赋值
|
|
|
+ if (childData.commentId == data.id){
|
|
|
+ childData.parentName = data.peopleName;
|
|
|
+ } else {
|
|
|
+ // 找到当前遍历子评论的父评论
|
|
|
+ var parentComment = childComments.find(function (item) {
|
|
|
+ return item.id == childData.commentId;
|
|
|
+ })
|
|
|
+ if (parentComment){
|
|
|
+ childData.parentName = parentComment.peopleName;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 将处理完的数据push到顶级评论的子集中
|
|
|
+ data.childCommentDataLists.push(childData);
|
|
|
+ });
|
|
|
+ // 存放顶级评论
|
|
|
+ that.commentDataList.push(data)
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 清理评论表单数据
|
|
|
+ clearForm: function () {
|
|
|
+ var that = this;
|
|
|
+ that.$refs.form.resetFields();
|
|
|
+ },
|
|
|
+ show: function (arr) {
|
|
|
+ var that = this
|
|
|
+ arr.forEach(function (x) {
|
|
|
+ let e = that.$el.querySelector("#key_" + x)
|
|
|
+ if (e) {
|
|
|
+ e.style.display = 'flex'
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //切换回复框
|
|
|
+ switchShowComment: function(comment) {
|
|
|
+ if (comment.showChildComment) comment.showChildComment = !comment.showChildComment
|
|
|
+ else {
|
|
|
+ this.commentDataList.forEach((item) => {
|
|
|
+ item.showChildComment = false;
|
|
|
+ item.childCommentDataLists.forEach((child) => {
|
|
|
+ child.showChildComment = false;
|
|
|
+ })
|
|
|
+ })
|
|
|
+ comment.showChildComment = true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ switchShow: function (arr) {
|
|
|
+ var that = this
|
|
|
+ arr.forEach(function (x) {
|
|
|
+ let e = that.$el.querySelector("#key_" + x)
|
|
|
+ if (e) {
|
|
|
+ e.style.display = e.style.display == 'none' ? 'flex' : 'none'
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ windowScroll: function() {
|
|
|
+ // 滚动条距离页面顶部的距离
|
|
|
+ // 以下写法原生兼容
|
|
|
+ let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
|
|
|
+ if (scrollTop > 200) {
|
|
|
+ this.windowScrollStyle = "rgba(255, 255, 255, 1)"
|
|
|
+ } else {
|
|
|
+ this.windowScrollStyle = "rgba(255, 255, 255, 0.4)"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 验证码 看不清换一张
|
|
|
+ code: function () {
|
|
|
+ this.verifCode = ms.base + "/code?t=" + (new Date).getTime();//
|
|
|
+ },
|
|
|
+ // 移除图片交互效果
|
|
|
+ commentPictureHandRemove: function (file, files) {
|
|
|
+ var index = -1;
|
|
|
+ index = this.form.commentPicture.findIndex(function (text) {
|
|
|
+ return text == file;
|
|
|
+ });
|
|
|
+
|
|
|
+ if (index != -1) {
|
|
|
+ this.form.commentPicture.splice(index, 1);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //上传超过限制
|
|
|
+ commentPictureHandExceed: function (files, fileList) {
|
|
|
+ this.$notify({
|
|
|
+ title: '失败',
|
|
|
+ message: '当前最多上传5张图片',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 上传图片成功后
|
|
|
+ successImg: function (response, file, fileList) {
|
|
|
+ var that = this;
|
|
|
+ if(response.result){
|
|
|
+ that.form.commentPicture.push({
|
|
|
+ url: response.data,
|
|
|
+ name: file.name,
|
|
|
+ uid: file.uid,
|
|
|
+ });
|
|
|
+ }else {
|
|
|
+ this.$notify({
|
|
|
+ title: '失败',
|
|
|
+ message: response.msg,
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 附件上传
|
|
|
+ // 点击已上传文件
|
|
|
+ fileHandlePreview: function (file){
|
|
|
+ console.log(file);
|
|
|
+ },
|
|
|
+ // 移除附件前
|
|
|
+ beforeRemove: function (file, fileList){
|
|
|
+ return this.$confirm(`确定移除 ${ file.name }?`);
|
|
|
+ },
|
|
|
+ // 移除附件
|
|
|
+ handleRemove: function (file,fileList){
|
|
|
+ var fileJsonList = this.form.commentFileJson;
|
|
|
+ this.form.commentFileJson = fileJsonList.filter(function (fileJson){
|
|
|
+ return fileJson.uid != file.uid;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 超出限制
|
|
|
+ fileHandleExceed: function (files, fileList){
|
|
|
+ this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
|
|
|
+ },
|
|
|
+ // 上传附件成功后
|
|
|
+ successFile: function (response, file, fileList) {
|
|
|
+ var that = this;
|
|
|
+ if(response.result){
|
|
|
+ that.form.commentFileJson.push({
|
|
|
+ url: response.data,
|
|
|
+ name: file.name,
|
|
|
+ uid: file.uid,
|
|
|
+ });
|
|
|
+ }else {
|
|
|
+ this.$notify({
|
|
|
+ title: '失败',
|
|
|
+ message: response.msg,
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 视频播放
|
|
|
+ playVideo: function (){
|
|
|
+ var myVideo = document.getElementsByClassName("video-demo");
|
|
|
+ if (myVideo.paused)
|
|
|
+ myVideo.play();
|
|
|
+ else
|
|
|
+ myVideo.pause();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created: function () {
|
|
|
+ this.list();
|
|
|
+ this.enableVisitor();
|
|
|
+ },
|
|
|
+ mounted: function () {
|
|
|
+ window.addEventListener('scroll', this.windowScroll)
|
|
|
+ },
|
|
|
+ beforeDestroy: function () {
|
|
|
+ window.removeEventListener('scroll', this.windowScroll)
|
|
|
+ }
|
|
|
+ })
|
|
|
+</script>
|
|
|
+<style scoped>
|
|
|
+ .thumbsUpchecked {
|
|
|
+ color: #06f;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-show-other-comment{
|
|
|
+ width: 50%;
|
|
|
+ display: inline-block;
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 32px;
|
|
|
+ text-align: center;
|
|
|
+ cursor: pointer;
|
|
|
+ background: none rgba(133, 144, 166, 0.1);
|
|
|
+ border: 1px solid transparent;
|
|
|
+ border-radius: 3px;
|
|
|
+ margin: 10px 0px 10px 150px;
|
|
|
+ padding: 0px 6px 0px 12px;
|
|
|
+ height: 32px;
|
|
|
+ color: rgb(133, 144, 166);
|
|
|
+ font-weight: 500;
|
|
|
+ }
|
|
|
+
|
|
|
+ .emptyText {
|
|
|
+ display: flex;
|
|
|
+ width: 50%;
|
|
|
+ min-height: 100px;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ border: 1px solid #c1c1c1;
|
|
|
+ border-radius: 2px;
|
|
|
+ font-size: 20px;
|
|
|
+ color: rgb(133, 144, 166);
|
|
|
+ margin-bottom: 40px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages {
|
|
|
+ margin-bottom: 10px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: stretch;
|
|
|
+ width: 50%;
|
|
|
+ border: 1px solid rgb(235, 235, 235);
|
|
|
+ border-radius: 4px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages a:hover {
|
|
|
+ cursor: pointer;
|
|
|
+ color: #444444;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-comment-list {
|
|
|
+ padding-top: 10px;
|
|
|
+ padding-bottom: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-comment-list .w-show-other-childcomment {
|
|
|
+ display: inline-block;
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 32px;
|
|
|
+ text-align: center;
|
|
|
+ cursor: pointer;
|
|
|
+ background: none rgba(133, 144, 166, 0.1);
|
|
|
+ border: 1px solid transparent;
|
|
|
+ border-radius: 3px;
|
|
|
+ margin: 10px 0px 10px 54px;
|
|
|
+ padding: 0px 6px 0px 12px;
|
|
|
+ height: 32px;
|
|
|
+ color: rgb(133, 144, 166);
|
|
|
+ font-weight: 500;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-commentlist-header {
|
|
|
+ box-sizing: border-box;
|
|
|
+ position: relative;
|
|
|
+ flex: 0 0 auto;
|
|
|
+ padding-left: 20px;
|
|
|
+ padding-right: 20px;
|
|
|
+ height: 50px;
|
|
|
+ -webkit-box-align: center;
|
|
|
+ align-items: center;
|
|
|
+ -webkit-box-pack: justify;
|
|
|
+ justify-content: space-between;
|
|
|
+ display: flex;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-commentlist-header::before {
|
|
|
+ display: block;
|
|
|
+ content: " ";
|
|
|
+ position: absolute;
|
|
|
+ inset: -50%;
|
|
|
+ pointer-events: none;
|
|
|
+ transform: scale(0.5, 0.5);
|
|
|
+ border-bottom: 1px solid rgb(235, 235, 235);
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-commentlist-header .w-commentlist-total {
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 0px;
|
|
|
+ min-width: 0px;
|
|
|
+ font-size: 15px;
|
|
|
+ color: rgb(68, 68, 68);
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-comment-item {
|
|
|
+ box-sizing: border-box;
|
|
|
+ display: flex;
|
|
|
+ padding: 10px 20px 14px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-comment-item .w-comment-userpic {
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 0px;
|
|
|
+ min-width: 0px;
|
|
|
+ color: rgb(23, 81, 153);
|
|
|
+ flex: 0 0 auto;
|
|
|
+ height: 24px;
|
|
|
+ width: 24px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-comment-item .w-comment-userpic .w-user-pic {
|
|
|
+ box-sizing: border-box;
|
|
|
+ max-width: 100%;
|
|
|
+ background-color: rgb(255, 255, 255);
|
|
|
+ width: 24px;
|
|
|
+ height: 24px;
|
|
|
+ border-radius: 2px;
|
|
|
+ filter: brightness(0.95);
|
|
|
+ flex: 0 0 auto;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-comment-item-box-head {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-comment-item-box-head .w-comment-item-username,
|
|
|
+ .messages .w-comment-item-box-head .w-comment-item-replyname {
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 0px;
|
|
|
+ min-width: 0px;
|
|
|
+ font-size: 15px;
|
|
|
+ font-weight: bold;
|
|
|
+ text-decoration: none;
|
|
|
+ color: #444444;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-comment-item-box {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-comment-item-box .w-comment-reply {
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 8px 0px 0px;
|
|
|
+ min-width: 0px;
|
|
|
+ flex: 1 1 auto;
|
|
|
+ display: flex;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-comment-item-box-content {
|
|
|
+ color: rgb(68, 68, 68);
|
|
|
+ overflow-wrap: break-word;
|
|
|
+ font-size: 15px;
|
|
|
+ line-height: 21px;
|
|
|
+ margin-top: 5px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-comment-item-box-bottom {
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 4px 0px 0px;
|
|
|
+ min-width: 0px;
|
|
|
+ -webkit-box-align: center;
|
|
|
+ align-items: center;
|
|
|
+ -webkit-box-pack: justify;
|
|
|
+ justify-content: space-between;
|
|
|
+ display: flex;
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-comment-item-box-bottom .w-comment-time {
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 0px;
|
|
|
+ min-width: 0px;
|
|
|
+ -webkit-box-align: center;
|
|
|
+ align-items: center;
|
|
|
+ flex: 0 0 auto;
|
|
|
+ font-size: 14px;
|
|
|
+ color: rgb(153, 153, 153);
|
|
|
+ display: flex;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-comment-interaction button {
|
|
|
+ margin-left: 16px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-comment-interaction .w-comment-reply-btn {
|
|
|
+ display: inline-block;
|
|
|
+ padding: 0px;
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: inherit;
|
|
|
+ color: rgb(133, 144, 166);
|
|
|
+ text-align: center;
|
|
|
+ cursor: pointer;
|
|
|
+ background: none transparent;
|
|
|
+ border: none;
|
|
|
+ border-radius: 0px;
|
|
|
+ height: auto;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-comment-interaction .w-comment-reply-btn label {
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-comment-interaction .w-comment-like-btn {
|
|
|
+ display: inline-block;
|
|
|
+ padding: 0px;
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: inherit;
|
|
|
+ color: rgb(133, 144, 166);
|
|
|
+ text-align: center;
|
|
|
+ cursor: pointer;
|
|
|
+ background: none transparent;
|
|
|
+ border: none rgb(133, 144, 166);
|
|
|
+ border-radius: 0px;
|
|
|
+ height: auto;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-comment-interaction .checked {
|
|
|
+ color: rgb(0, 97, 242);
|
|
|
+ }
|
|
|
+
|
|
|
+ .messages .w-child-reply {
|
|
|
+ padding: 10px 20px 14px 54px;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* 弹出全部回复 */
|
|
|
+ .w-dialog-container {
|
|
|
+ overflow: hidden auto;
|
|
|
+ z-index: 2001;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ position: fixed;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-dialog__title {
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 0px;
|
|
|
+ min-width: 0px;
|
|
|
+ color: rgb(68, 68, 68);
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-dialog__body {
|
|
|
+ overflow-y: scroll;
|
|
|
+ padding: 0;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ .current-comment {
|
|
|
+ border-top: 1px solid rgb(235, 235, 235);
|
|
|
+ border-bottom: 20px solid rgba(133, 144, 166, 0.1);
|
|
|
+ padding: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .current-comment .w-comment-item {
|
|
|
+ padding: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-dialog {
|
|
|
+ margin-top: 0 !important;
|
|
|
+ height: calc(100vh - 48px);
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ position: relative;
|
|
|
+ z-index: 1;
|
|
|
+ box-sizing: border-box;
|
|
|
+ max-height: calc(100vh - 48px);
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 0 auto;
|
|
|
+ width: 700px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-reply-list-container .w-reply-item {
|
|
|
+ padding: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-reply-list-container .w-reply-item .w-child-reply {
|
|
|
+ padding: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-reply-bottom-input {
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 0px;
|
|
|
+ min-width: 0px;
|
|
|
+ display: flex;
|
|
|
+ flex: 0 0 auto;
|
|
|
+ padding: 10px 20px;
|
|
|
+ box-shadow: rgb(18 18 18 / 12%) 0px -1px 3px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .w-reply-bottom-input .w-avatar {
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 0px 10px 0px 0px;
|
|
|
+ min-width: 0px;
|
|
|
+ max-width: 100%;
|
|
|
+ background-color: rgb(255, 255, 255);
|
|
|
+ width: 40px;
|
|
|
+ height: 40px;
|
|
|
+ border-radius: 3px;
|
|
|
+ }
|
|
|
+ .comment-container {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .comment-container .article-comment {
|
|
|
+ display: flex;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border-top-left-radius: 0px;
|
|
|
+ padding-bottom: 12px;
|
|
|
+ flex-wrap: nowrap;
|
|
|
+ border-bottom-left-radius: 0px;
|
|
|
+ width: 50%;
|
|
|
+ border-bottom-right-radius: 0px;
|
|
|
+ margin-bottom: 0px;
|
|
|
+ border-top-right-radius: 0px;
|
|
|
+ padding-top: 12px;
|
|
|
+ margin-top: 30px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .article-comment>span {
|
|
|
+ padding-bottom: 0px;
|
|
|
+ color: #333333;
|
|
|
+ flex-direction: row;
|
|
|
+ word-wrap: break-word;
|
|
|
+ display: inline-block;
|
|
|
+ padding-right: 0px;
|
|
|
+ width: 100%;
|
|
|
+ font-size: 32PX;
|
|
|
+ margin-bottom: 6px;
|
|
|
+ padding-top: 0px;
|
|
|
+ padding-left: 0px;
|
|
|
+ margin-top: 0px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .article-comment .ms-input {
|
|
|
+ border-color: #DCDFE6;
|
|
|
+ background-color: #FFFFFF;
|
|
|
+ align-items: center;
|
|
|
+ flex-direction: row;
|
|
|
+ display: flex;
|
|
|
+ padding-right: 4px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ justify-content: space-between;
|
|
|
+ border-top-left-radius: 2px;
|
|
|
+ padding-bottom: 0px;
|
|
|
+ flex-wrap: nowrap;
|
|
|
+ border-bottom-left-radius: 2px;
|
|
|
+ border-width: 1px;
|
|
|
+ width: 100%;
|
|
|
+ border-bottom-right-radius: 2px;
|
|
|
+ border-top-right-radius: 2px;
|
|
|
+ margin-bottom: 0px;
|
|
|
+ padding-top: 0px;
|
|
|
+ border-style: solid;
|
|
|
+ padding-left: 4px;
|
|
|
+ margin-top: 0px;
|
|
|
+ height: 100px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .article-comment .ms-input span {
|
|
|
+ color: #DCDFE6;
|
|
|
+ flex-direction: row;
|
|
|
+ word-wrap: break-word;
|
|
|
+ display: inline-block;
|
|
|
+ padding-right: 0px;
|
|
|
+ border-top-left-radius: 0px;
|
|
|
+ padding-bottom: 0px;
|
|
|
+ border-bottom-left-radius: 0px;
|
|
|
+ border-bottom-right-radius: 0px;
|
|
|
+ border-top-right-radius: 0px;
|
|
|
+ font-size: 14PX;
|
|
|
+ padding-top: 0px;
|
|
|
+ padding-left: 0px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .article-comment>.post-comment {
|
|
|
+ cursor: pointer;
|
|
|
+ background-color: #0099ff;
|
|
|
+ color: #FFFFFF;
|
|
|
+ text-align: center;
|
|
|
+ display: inline-block;
|
|
|
+ padding-right: 20px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border-top-left-radius: 8px;
|
|
|
+ padding-bottom: 0px;
|
|
|
+ border-bottom-left-radius: 8px;
|
|
|
+ border-bottom-right-radius: 8px;
|
|
|
+ line-height: 42px;
|
|
|
+ font-size: 16px;
|
|
|
+ margin-bottom: 0px;
|
|
|
+ border-top-right-radius: 8px;
|
|
|
+ padding-top: 0px;
|
|
|
+ padding-left: 20px;
|
|
|
+ margin-top: 10px;
|
|
|
+ height: 42px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .article-comment>.hot-comment {
|
|
|
+ padding-bottom: 0px;
|
|
|
+ flex-wrap: nowrap;
|
|
|
+ flex-direction: column;
|
|
|
+ display: flex;
|
|
|
+ padding-right: 0px;
|
|
|
+ width: 100%;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding-top: 0px;
|
|
|
+ padding-left: 0px;
|
|
|
+ justify-content: center;
|
|
|
+ margin-top: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .article-comment>.hot-comment span {
|
|
|
+ flex-direction: row;
|
|
|
+ word-wrap: break-word;
|
|
|
+ display: inline-block;
|
|
|
+ width: 100%;
|
|
|
+ font-size: 16PX;
|
|
|
+ line-height: 36px;
|
|
|
+ margin-top: 0px;
|
|
|
+ height: 36px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .article-comment>.hot-comment div {
|
|
|
+ padding-bottom: 0px;
|
|
|
+ flex-wrap: nowrap;
|
|
|
+ flex-direction: row;
|
|
|
+ display: flex;
|
|
|
+ padding-right: 0px;
|
|
|
+ width: 100%;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding-top: 0px;
|
|
|
+ padding-left: 0px;
|
|
|
+ margin-top: 12px;
|
|
|
+ height: 100px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .article-comment>.hot-comment div img {
|
|
|
+ width: 100%;
|
|
|
+ margin-top: 0px;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-upload--picture-card i {
|
|
|
+ line-height: unset !important;
|
|
|
+ }
|
|
|
+
|
|
|
+</style>
|