| | |
| | | <template> |
| | | <div class="myFriend"> |
| | | <a-form-model ref="myForm" :model="form" :label-col="labelCol" :wrapper-col="wrapperCol"> |
| | | <div style="display: flex;justify-content: center; "> |
| | | <a-form-model-item label="昵称"> |
| | | <a-input v-model="form.secret" autocomplete='new-password' type="password" placeholder="昵称"> |
| | | </a-input> |
| | | </a-form-model-item> |
| | | <a-form-model-item label="邮箱"> |
| | | <a-input v-model="form.secret" autocomplete='new-password' type="password" placeholder="邮箱"> |
| | | </a-input> |
| | | </a-form-model-item> |
| | | <a-form-model-item label="主页"> |
| | | <a-input v-model="form.secret" autocomplete='new-password' type="password" placeholder="主页"> |
| | | </a-input> |
| | | </a-form-model-item> |
| | | </div> |
| | | </a-form-model> |
| | | <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: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-comment> |
| | | <!-- <a-avatar slot="avatar" src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" |
| | | alt="Han Solo" /> --> |
| | | <div slot="content"> |
| | | <a-form-item> |
| | | <a-textarea :rows="4" :value="value" @change="handleChange" /> |
| | | </a-form-item> |
| | | <a-form-item> |
| | | <a-button html-type="submit" :loading="submitting" type="primary" @click="handleSubmit"> |
| | | 高低整两句 |
| | | </a-button> |
| | | </a-form-item> |
| | | </div> |
| | | </a-comment> |
| | | <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> |
| | | |
| | | <a-comment> |
| | | <span slot="actions" key="comment-nested-reply-to">Reply to</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"> |
| | | We supply a series of design principles, practical patterns and high quality design resources |
| | | (Sketch and Axure). |
| | | </p> |
| | | <a-collapse v-model="activeKey"> |
| | | <a-collapse-panel key="1" header="展开"> |
| | | <a-comment> |
| | | <span slot="actions">Reply to</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"> |
| | | We supply a series of design principles, practical patterns and high quality design |
| | | resources (Sketch and Axure). |
| | | </p> |
| | | <a-comment> |
| | | <span slot="actions">Reply to</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"> |
| | | We supply a series of design principles, practical patterns and high quality design |
| | | resources (Sketch and Axure). |
| | | </p> |
| | | </a-comment> |
| | | <a-comment> |
| | | <span slot="actions">Reply to</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"> |
| | | We supply a series of design principles, practical patterns and high quality design |
| | | resources (Sketch and Axure). |
| | | </p> |
| | | </a-comment> |
| | | <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-collapse-panel> |
| | | </a-collapse> |
| | | </a-comment> |
| | | <a-comment> |
| | | <span slot="actions">Reply to</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"> |
| | | We supply a series of design principles, practical patterns and high quality design |
| | | resources (Sketch and Axure). |
| | | </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 { |
| | | labelCol: { |
| | | span: 5, |
| | | offset: 0, |
| | | page: { |
| | | size: "small", |
| | | total: 1, |
| | | pageSize: 5, |
| | | current: 1, |
| | | defaultPageSize: 10 |
| | | }, |
| | | wrapperCol: { |
| | | span: 15, |
| | | 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> |