From 0b0125884c449378a2e80f888a43a2d20974c8df Mon Sep 17 00:00:00 2001 From: inleft <inleft@qq.com> Date: Thu, 03 Mar 2022 16:20:09 +0800 Subject: [PATCH] 完成碎碎念的整合 --- src/components/mini/box12-comment.vue | 299 ++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 183 insertions(+), 116 deletions(-) diff --git a/src/components/mini/box12-comment.vue b/src/components/mini/box12-comment.vue index 7fccf8d..4137c73 100644 --- a/src/components/mini/box12-comment.vue +++ b/src/components/mini/box12-comment.vue @@ -1,163 +1,231 @@ <template> - <div class="myFriend"> - <replyBox ref="commentBoxId"></replyBox> - <a-modal v-model="visible" title="回复Ta @xx" on-ok="handleOk" - :bodyStyle="{'overflow':'overlay','maxHeight': '550px'}"> - <!-- <template slot="footer"> - <a-button key="reset" @click="reset" type="danger"> - 擦掉重来 - </a-button> - <a-button key="back" @click="handleCancel"> - 歇会 - </a-button> - <a-button key="submit" type="primary" :loading="loading" @click="handleOk"> - 完事<span style="font-size: 10px;">儿</span>.. - </a-button> - </template> --> - <replyBox ref="replyBoxId"></replyBox> + <div> + <replyBox ref="commentBoxId" v-bind="$attrs" @sendMsg="sendMsg()"></replyBox> + <a-modal v-model="visible" :title="replyTaget" :footer="null" + :bodyStyle="{'overflow':'overlay','maxHeight': '550px','scrollbarWidth': 'none'}"> + <replyBox ref="replyBoxId" v-bind="$attrs" @sendMsg="sendMsg()"></replyBox> </a-modal> + <div class="mySecret" style="max-height:350px ;" v-if="commentListData.length==0"> + <p>空空如也..</p> + </div> <div v-for="temp in commentListData" class="commentList"> - <div class="commentGroup"> <a-comment> - <span slot="actions" key="comment-nested-reply-to" @click="replyCall"> - <a-icon type="edit" />回复 - </span> - - <div slot="avatar"> - {{temp.userName}} : - </div> - - <p slot="content">{{temp.userComment}}</p> - - <a-comment v-for="tempData in temp.replyList.listData"> - <span slot="actions" key="comment-nested-reply-to" @click="replyCall"> - <a-icon type="edit" />回复 + <div slot="actions" key="comment-nested-reply-to" class="actionList"> + <span style="cursor: default;padding-right: 6px;" class="myTip">{{temp.createDate}} </span> + <span @click="replyCall(temp)"> + <a-icon type="message" /> </span> - <div slot="avatar"> - {{tempData.userName}} @ {{tempData.replyUserName}} : - </div> - <p slot="content">{{tempData.userComment}}</p> - </a-comment> - - - <div class="loadMore" @click="loadMore()"> - <a-icon type="down" /><span>更多...</span> </div> + + <div slot="avatar" style="display: flex;"> + <div class="myTextDeal"> + <a :href="temp.visitorHomePage" target="_blank" v-if="temp.visitorHomePage!=''"> + <a-tooltip placement="bottomLeft" :title="temp.visitorNickName"> + {{temp.visitorNickName}} + </a-tooltip> + </a> + <a-tooltip placement="bottomLeft" :title="temp.visitorNickName" v-else> + {{temp.visitorNickName}} + </a-tooltip> + </div> + <div class="samllPadding">:</div> + </div> + + <p slot="content">{{temp.commentContent}}</p> + + <a-comment v-for="tempData in temp.replyList"> + <div slot="actions" key="comment-nested-reply-to" class="actionList"> + <span style="cursor: default;padding-right: 6px;" class="myTip">{{tempData.createDate}} + </span> + <span @click="replyCall(tempData)"> + <a-icon type="message" /> + </span> + </div> + <div slot="avatar" style="display: flex;"> + <div class="myTextDeal"> + <a :href="tempData.visitorHomePage" target="_blank" v-if="tempData.visitorHomePage!=''"> + <a-tooltip placement="bottomLeft" :title="tempData.visitorNickName"> + {{tempData.visitorNickName}} + </a-tooltip> + </a> + <a-tooltip placement="bottomLeft" :title="tempData.visitorNickName" v-else> + {{tempData.visitorNickName}} + </a-tooltip> + </div> + <div class="samllPadding">:</div> + <div class="myTip myTextDeal" style="padding-bottom: 5px; max-width: 150px;"> + @<a :href="tempData.replyUserHomePage" target="_blank" + v-if="tempData.replyUserHomePage!=''"> + <a-tooltip placement="bottomLeft" :title="tempData.replyUserName"> + {{tempData.replyUserName}} + </a-tooltip> + </a> + <a-tooltip placement="bottomLeft" :title="tempData.replyUserName" v-else> + {{tempData.replyUserName}} + </a-tooltip> + </div> + </div> + <p slot="content">{{tempData.commentContent}}</p> + </a-comment> </a-comment> + + <div class="loadMore" @click="loadMore(temp)" v-if="temp.isHasNext==1"> + <span> + <a-icon type="down" />展开 + </span> + </div> </div> </div> + <a-row type="flex" justify="center"> + <div> + <a-pagination @change="onChange" :showQuickJumper="true" :size="page.size" v-model="page.current" + :defaultPageSize="page.defaultPageSize" :pageSize="page.pageSize" :total="page.total" /> + </div> + </a-row> </div> </template> <script> import replyBox from "./box13-reply.vue" + + import { + queryBlogCommentList, + queryBlogCommentSubList + } from '../../api/blogArticleComment.js' + export default { components: { replyBox }, methods: { - handleOk(e) {}, - loadMore() { - this.commentListData[0].replyList.listData = this.commentListData[0].replyList.listData.concat(this - .commentListData[0].replyList.listData) + updateCommentList(articleId) { + queryBlogCommentList({ + pageNo: this.page.current, + pageSize: this.page.pageSize, + articleId: articleId + }).then((res) => { + this.page.total = Number(res.data.total) + this.page.pageSize = Number(res.data.size); + this.commentListData = res.data.records; + }) }, - replyCall() { + sendMsg() { + this.visible = false; + this.$message.info("列表刷新中..") + setTimeout(() => { + this.updateCommentList(this.$attrs.articleId); + }, 1000); + }, + onChange(current) { + this.page.current = current; + this.updateCommentList(); + }, + loadMore(temp) { + temp.isHasNext = 0; + + queryBlogCommentSubList({ + commentId: temp.id + }).then((res) => { + if (res.data.length == temp.replyList.length) { + this.$message.info("没有更多了..") + } + temp.replyList = res.data; + }) + }, + replyCall(obj, replyId) { this.visible = true; + this.replyTaget = "回复Ta @" + obj.visitorNickName; var msgInfo = { - useName: "22", - userComment: "11", + useName: obj.visitorNickName, + userComment: obj.commentContent, + parentId: obj.parentId == 0 ? obj.id : obj.parentId, + replyId: obj.id }; this.$nextTick(() => { - this.$refs.replyBoxId.getMsgInfo(msgInfo); }); } }, data() { return { + page: { + size: "small", + total: 1, + pageSize: 5, + current: 1, + defaultPageSize: 10 + }, + replyTaget: "", visible: false, - commentListData: [{ - userName: "bimo", - userComment: "1+1=2?", - commentTime: "2022-02-22 22:22:22", - id: "1", - parentId: null, - replyId: null, - replyUserName: null, - replyList: { - total: "3", - current: "1", - listData: [{ - userName: "inleft", - userComment: "2", - commentTime: "2022-02-22 23:22:22", - id: "2", - parentId: "1", - replyId: "1", - replyUserName: "bimo", - }, { - userName: "air", - userComment: "不对是3", - commentTime: "2022-02-23 13:13:13", - id: "3", - parentId: "1", - replyId: "2", - replyUserName: "inleft", - }] - }, - }, { - userName: "bimo", - userComment: "1+1=2?", - commentTime: "2022-02-22 22:22:22", - id: "1", - parentId: null, - replyId: null, - replyUserName: null, - replyList: { - total: "3", - current: "1", - listData: [{ - userName: "inleft", - userComment: "2", - commentTime: "2022-02-22 23:22:22", - id: "2", - parentId: "1", - replyId: "1", - replyUserName: "bimo", - }, { - userName: "air", - userComment: "不对是3", - commentTime: "2022-02-23 13:13:13", - id: "3", - parentId: "1", - replyId: "2", - replyUserName: "inleft", - }] - }, - }], - + commentListData: [], } } } </script> <style lang="less"> + .samllPadding { + padding: 0px 3px 5px; + } + .visitInfo { user-select: none; } + .myTextDeal { + // display: -webkit-container; + max-width: 80px; + -webkit-line-clamp: 1; + text-overflow: ellipsis; + overflow: hidden; + word-wrap: break-word; + white-space: nowrap; + word-break: break-all; + } + + .loadMore { + margin: 10px; + display: flex; + justify-content: center; + } + + .loadMore:hover { + background-color: #00000021 + } + + .ant-drawer-wrapper-body::-webkit-scrollbar, + .ant-modal-body::-webkit-scrollbar { + display: none; + } + + .actionList { + display: flex; + justify-content: flex-end; + } + .commentList { + a { + color: black; + } img { user-select: none; } + .ant-comment-avatar { + cursor: default; + } + .ant-comment-actions { - display: flex; - justify-content: flex-end; + + li { + width: -webkit-fill-available; + } + + margin-bottom: 0px; } .ant-comment-content-author { @@ -166,20 +234,19 @@ .ant-comment-inner { padding: 10px 10px 0px; + flex-direction: column; } .commentGroup { border-top: 1px solid #e5e9ef; - margin-bottom: 10px; - padding-bottom: 15px; - - - .loadMore:hover { - color: skyblue; - } + margin-bottom: 5px; + padding-bottom: 0px; } .ant-comment-content-detail { + padding-left: 50px; + padding-top: 5px; + p { margin-bottom: 0px; } -- Gitblit v1.9.1