From 146176c4bfc7e936026fc02d96fdc175738d9e14 Mon Sep 17 00:00:00 2001 From: inleft <inleft@qq.com> Date: Tue, 09 Aug 2022 19:04:51 +0800 Subject: [PATCH] 我的音乐模块优化啊 --- src/components/mini/box12-comment.vue | 313 +++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 235 insertions(+), 78 deletions(-) diff --git a/src/components/mini/box12-comment.vue b/src/components/mini/box12-comment.vue index ce7c80a..8749aff 100644 --- a/src/components/mini/box12-comment.vue +++ b/src/components/mini/box12-comment.vue @@ -1,98 +1,255 @@ <template> - <div class="myFriend"> - <a-form-model ref="myForm" layout="inline" :model="form" :label-col="labelCol" :wrapper-col="wrapperCol"> - <a-form-model-item label="昵称"> - <a-input v-model="form.secret" placeholder=".."> - </a-input> - </a-form-model-item> - <a-form-model-item label="邮箱"> - <a-input v-model="form.secret" placeholder="..仅后台可见"> - </a-input> - </a-form-model-item> - <a-form-model-item label="主页"> - <a-input v-model="form.secret" placeholder="http:// or https://"> - </a-input> - </a-form-model-item> + <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> - </a-form-model> - - <a-comment> - <div slot="content"> - <a-form-item> - <a-textarea :rows="4" :value="value" /> - </a-form-item> - <a-form-item> - <a-button html-type="submit" type="primary"> - 高低整两句 - </a-button> - <div> - <a-checkbox style="margin-left: 8px;"> - 悄悄回复<span class="myTip">(仅登录后可查看)</span> - </a-checkbox> - <a-checkbox> - 接收邮件回复通知 - </a-checkbox> + <div class="mySecret" style="max-height:250px ;" v-if="commentListData.length==0"> + <p>空空如也..</p> + </div> + <div v-for="temp in commentListData" class="commentList"> + <div class="commentGroup"> + <a-comment> + <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> - </a-form-item> - </div> - </a-comment> - <a-comment> - <span slot="actions" key="comment-nested-reply-to"><a-icon type="edit" />回复</span> - <a slot="author">Han Solo</a> - <a-avatar slot="avatar" src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" - alt="Han Solo" /> - <p slot="content">1+1=?</p> - - <a-comment> - <span slot="actions" key="comment-nested-reply-to"><a-icon type="edit" />回复</span> - <a slot="author">yi @ Han Solo</a> - <a-avatar slot="avatar" src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" - alt="Han Solo" /> - <p slot="content">2! - </p> - <a-comment> - <span slot="actions" key="comment-nested-reply-to"><a-icon type="edit" />回复</span> - <a slot="author">bimo @ yi</a> - <a-avatar slot="avatar" src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" - alt="Han Solo" /> - <p slot="content">不对3! - </p> + <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 :id="temp.id" 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 :id="tempData.id" slot="content">{{tempData.commentContent}}</p> + </a-comment> </a-comment> - <a-comment> - <span slot="actions" key="comment-nested-reply-to"><a-icon type="edit" />回复</span> - <a slot="author">er @ yi</a> - <a-avatar slot="avatar" src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" - alt="Han Solo" /> - <p slot="content">+∞ - </p> - </a-comment> - </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: { + 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; + }) + }, + 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: 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 { - value: "", - labelCol: { - span: 6, - offset: 0, + page: { + size: "small", + total: 1, + pageSize: 5, + current: 1, + defaultPageSize: 10 }, - wrapperCol: { - span: 18, - offset: 0 - }, - form: { - secret: "" - } + replyTaget: "", + visible: false, + commentListData: [], } } } </script> -<style> +<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 { + + li { + width: -webkit-fill-available; + } + + margin-bottom: 0px; + } + + .ant-comment-content-author { + margin-bottom: 0px; + } + + .ant-comment-inner { + padding: 10px 10px 0px; + flex-direction: column; + } + + .commentGroup { + border-top: 1px solid #e5e9ef; + margin-bottom: 5px; + padding-bottom: 0px; + } + + .ant-comment-content-detail { + padding-left: 50px; + padding-top: 5px; + + p { + margin-bottom: 0px; + } + } + } </style> -- Gitblit v1.9.1