From 846bd0e9adb70bb23778045ee1a252a6a58adc4f Mon Sep 17 00:00:00 2001
From: inleft <inleft@qq.com>
Date: Wed, 02 Mar 2022 21:45:39 +0800
Subject: [PATCH] 文件结构调整,日志评论实现

---
 src/components/mini/box12-comment.vue |  302 +++++++++++++++++++++++++++++++-------------------
 1 files changed, 186 insertions(+), 116 deletions(-)

diff --git a/src/components/mini/box12-comment.vue b/src/components/mini/box12-comment.vue
index ae64ada..22e675e 100644
--- a/src/components/mini/box12-comment.vue
+++ b/src/components/mini/box12-comment.vue
@@ -1,140 +1,173 @@
 <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"></replyBox>
+		<a-modal v-model="visible" :title="replyTaget" :footer="null"
+			:bodyStyle="{'overflow':'overlay','maxHeight': '550px','scrollbarWidth': 'none'}">
+			<replyBox ref="replyBoxId" v-bind="$attrs"></replyBox>
 		</a-modal>
-
+		<div class="mySecret" 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>:</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>:</div>
+						</div>
+
+						<div slot="content" 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>
+						<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 {
+		props: ["articleId"],
 		components: {
 			replyBox
 		},
+		beforeMount() {
+			queryBlogCommentList({
+				pageNo: this.page.current,
+				pageSize: this.page.pageSize,
+				articleId: this.$attrs.acticleId
+			}).then((res) => {
+				this.page.total = Number(res.data.total)
+				this.page.pageSize = Number(res.data.size);
+				this.commentListData = res.data.records;
+				return res
+			})
+		},
 		methods: {
-			handleOk(e) {},
-			loadMore() {
-				this.commentListData[0].replyList.listData = this.commentListData[0].replyList.listData.concat(this
-					.commentListData[0].replyList.listData)
+			onChange(current) {
+				this.page.current = current;
+				queryBlogCommentList({
+					pageNo: this.page.current,
+					pageSize: this.page.pageSize,
+					articleId: this.$attrs.articleId
+				}).then((res) => {
+					this.page.total = Number(res.data.total)
+					this.page.pageSize = Number(res.data.size);
+					this.commentListData = res.data.records;
+				})
 			},
-			replyCall() {
+			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.$refs.replyBoxId.getMsgInfo(msgInfo);
+				this.$nextTick(() => {
+					this.$refs.replyBoxId.getMsgInfo(msgInfo);
+				});
 			}
 		},
 		data() {
 			return {
-				visible: true,
-				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",
-						}]
-					},
-				}],
+				// articleId: null,
+				isAllowedComment: true,
+				page: {
+					size: "small",
+					total: 1,
+					pageSize: 5,
+					current: 1,
+					defaultPageSize: 10
+				},
+				replyTaget: "",
+				visible: false,
+				commentListData: [],
 
 			}
 		}
@@ -146,15 +179,57 @@
 		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 {
@@ -167,13 +242,8 @@
 
 		.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 {

--
Gitblit v1.9.1