131 lines
4.3 KiB
TypeScript
131 lines
4.3 KiB
TypeScript
import {Component, OnInit} from '@angular/core';
|
|
import {NzMessageService} from 'ng-zorro-antd';
|
|
import {UserService} from '../../services/user/user.service';
|
|
import {CommentService} from '../../services/comment/comment.service';
|
|
import {Comment} from '../../classes/comment';
|
|
import {CommentReq} from '../../classes/commentReq';
|
|
|
|
@Component({
|
|
selector: 'app-comment-manager',
|
|
templateUrl: './comment-manager.component.html',
|
|
styleUrls: ['./comment-manager.component.css']
|
|
})
|
|
export class CommentManagerComponent implements OnInit {
|
|
|
|
constructor(public userService: UserService,
|
|
public commentService: CommentService,
|
|
private message: NzMessageService) {
|
|
}
|
|
|
|
pageNum: number = 1;
|
|
pageSize: number = 10;
|
|
|
|
commentType: number = 0;
|
|
|
|
showPupup = false;
|
|
|
|
updateReqBody = {
|
|
id: null,
|
|
type: null,
|
|
content: null
|
|
};
|
|
showCommentDetail: boolean = false;
|
|
commentDetail: Comment = new Comment();
|
|
|
|
responseComment: CommentReq = new CommentReq(true);
|
|
|
|
ngOnInit() {
|
|
if (!this.userService.userInfo) {
|
|
setTimeout(() => {
|
|
this.doInquire();
|
|
}, 500);
|
|
} else {
|
|
this.doInquire();
|
|
}
|
|
}
|
|
|
|
doInquire() {
|
|
const isAdmin: boolean = this.userService.userInfo.role === 'admin';
|
|
if (this.commentType) {
|
|
this.commentService.getComments(this.pageNum, this.pageSize, isAdmin);
|
|
} else {
|
|
this.commentService.getLeaveMsg(this.pageNum, this.pageSize, isAdmin);
|
|
}
|
|
}
|
|
|
|
|
|
toPage(e: number) {
|
|
this.pageNum = e;
|
|
this.doInquire();
|
|
}
|
|
|
|
prepareComment(comment: Comment) {
|
|
this.showCommentDetail = true;
|
|
this.commentDetail = comment;
|
|
this.commentService.getByPid(comment.id).subscribe(data => {
|
|
if (data.code === 0) {
|
|
this.commentDetail.child = data.result.list;
|
|
}
|
|
});
|
|
// tslint:disable-next-line:triple-equals
|
|
this.responseComment.comment = this.commentType == 1;
|
|
// 若展示的是顶级评论 则pid为顶级评论的id 否则为该二级评论的pid
|
|
this.responseComment.pid = this.commentDetail.pid === -1 ? this.commentDetail.id : this.commentDetail.pid;
|
|
this.responseComment.articleID = this.commentDetail.articleID;
|
|
console.log(`${this.commentType.valueOf() == 1} and type is ${this.commentType}`);
|
|
}
|
|
|
|
edit(type, id, content) {
|
|
this.showPupup = true;
|
|
this.updateReqBody.id = id;
|
|
this.updateReqBody.type = type;
|
|
this.updateReqBody.content = content;
|
|
}
|
|
|
|
update() {
|
|
if (this.updateReqBody.content === '') {
|
|
this.message.warning('不能为空');
|
|
return;
|
|
}
|
|
this.showPupup = false;
|
|
this.commentService.update(this.updateReqBody).subscribe(data => {
|
|
if (data.code === 0) {
|
|
this.message.success('修改成功!');
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
doDel(id) {
|
|
this.commentService.delete(id).subscribe(data => {
|
|
if (data.code === 0) {
|
|
this.message.success('删除成功');
|
|
} else {
|
|
this.message.error('删除失败,原因:' + data.msg);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
reply() {
|
|
if (this.responseComment.content == null || this.responseComment.content === '') {
|
|
this.message.info('内容不能为空');
|
|
return;
|
|
}
|
|
this.responseComment.content = `@${this.commentDetail.authorName} ${this.responseComment.content}`
|
|
this.commentService.rely(this.responseComment).subscribe(data => {
|
|
if (data.code === 0) {
|
|
this.commentDetail.child.push(data.result);
|
|
this.message.success('回复成功');
|
|
this.responseComment = new CommentReq(true);
|
|
// tslint:disable-next-line:triple-equals
|
|
if (this.commentType == 1) {
|
|
this.commentService.currentComment.list.push(data.result);
|
|
} else {
|
|
this.commentService.currentLeaveMsg.list.push(data.result);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|