<template>
|
<div>
|
<div class="visitInfo">
|
<a-form-model ref="myForm" layout="inline" :rules="rules" :model="form" :label-col="labelCol"
|
:wrapper-col="wrapperCol">
|
<a-form-model-item label="昵称" prop="nickName">
|
<a-input v-model="form.nickName" placeholder="需填..">
|
</a-input>
|
</a-form-model-item>
|
<a-form-model-item label="邮箱" prop="eMail">
|
<a-input v-model="form.eMail" placeholder="保密项(选填)">
|
</a-input>
|
</a-form-model-item>
|
<a-form-model-item label="主页" prop="homePage">
|
<a-input v-model="form.homePage" placeholder="https:// or http://">
|
</a-input>
|
</a-form-model-item>
|
<a-form-model-item label="认证"
|
v-show="form.nickName=='inleft'||form.nickName=='笔墨'||form.nickName=='阿墨'">
|
<a-input v-model="form.authCode" autocomplete='new-password' type="password" placeholder="我的授权码">
|
</a-input>
|
</a-form-model-item>
|
</a-form-model>
|
</div>
|
|
<div class="replyMsgInfo" v-if="showReplyMsgInfo">
|
<div>
|
{{msgInfo.useName}}<span style="padding: 0px 3px;"> : </span>
|
</div>
|
<div>
|
<span v-html="parseContent(msgInfo.userComment).replace(/\n/g, '<br>')"></span>
|
</div>
|
</div>
|
<a-comment style="min-height: 320px;">
|
<div slot="content">
|
<MyTextarea :content.sync="form.visitorContent" :replyHolder="replyHolder"></MyTextarea>
|
|
<div>
|
<a-button html-type="submit" type="primary" @click="send()" v-if="!showReplyMsgInfo"
|
:disabled="isSending || $attrs.isAllowedComment==0">
|
高低整两句
|
</a-button>
|
<a-button html-type="submit" type="primary" v-else @click="send()"
|
:disabled="isSending || $attrs.isAllowedComment==0">
|
回复Ta
|
</a-button>
|
<span class="myTip" v-if="$attrs.isAllowedComment==0">很遗憾,评论已关闭</span>
|
</div>
|
|
<div>
|
<a-checkbox v-model="form.isReceiveMail">
|
接收邮件回复通知
|
</a-checkbox>
|
<a-checkbox v-if="!showReplyMsgInfo" v-model="form.isSecretMsg">
|
悄悄说..<span class="myTip">(仅登录后可查看)</span>
|
</a-checkbox>
|
</div>
|
</div>
|
</a-comment>
|
</div>
|
|
</template>
|
|
<script>
|
import {
|
blogCommentAdd
|
} from '../../api/blogArticleComment.js'
|
import md5 from 'js-md5';
|
|
import MyTextarea from '../common/MyTextarea.vue'
|
import myConstant from "../../config/myConstant.js"
|
|
export default {
|
components: {
|
MyTextarea
|
},
|
props: {
|
parseContent: {
|
type: Function,
|
default: null
|
}
|
},
|
methods: {
|
getMsgInfo(param) {
|
this.msgInfo = param;
|
this.showReplyMsgInfo = true;
|
this.replyHolder = "@" + this.msgInfo.useName;
|
},
|
send() {
|
if (this.form.nickName === "") {
|
this.$message.info("怎么称呼..")
|
return
|
}
|
|
if (this.form.visitorContent === "") {
|
this.$message.info("你可能需要说点什么..")
|
return
|
}
|
|
if (this.form.isReceiveMail && this.form.eMail == "") {
|
this.$message.info("如果是想接收通知的话,你可能需要填上一个邮箱..")
|
return
|
}
|
|
var res;
|
this.$refs.myForm.validate(valid => {
|
if (valid) {
|
//this.$message.info("校验通过")
|
res = true;
|
} else {
|
this.$message.info("校验失败")
|
res = false;
|
}
|
});
|
|
if (this.form.nickName == 'inleft' || this.form.nickName == '笔墨' || this.form.nickName == '阿墨') {
|
if (this.form.authCode == null || this.form.authCode == "") {
|
this.$message.info("此名称在这里使用需要正确的授权码..")
|
return
|
}
|
}
|
|
if (this.form.eMail == 'inleft@qq.com') {
|
if (this.form.authCode == null || this.form.authCode == "") {
|
this.$message.info("此邮箱在这里使用需要正确的授权码..")
|
return
|
}
|
}
|
|
|
var articleId = this.$attrs.articleId;
|
let commentType = (articleId == null || articleId == undefined) ? 1 : 2;
|
|
//记录最新访客信息
|
if (this.form.visitorId == 1) {
|
var today = new Date();
|
var year = today.getFullYear() + "";
|
var month = today.getMonth() + 1 + "";
|
var date = today.getDate() + "";
|
var num = "";
|
for (var i = 0; i < 4; i++) {
|
num = num + Math.floor(Math.random() * 9) + "";
|
}
|
this.form.visitorId = year + (month > 10 ? month : '0' + month) + date + num
|
}
|
|
localStorage.setItem(this.VisitorDataKey, JSON.stringify(this.form))
|
|
this.isSending = true;
|
blogCommentAdd({
|
parentId: this.msgInfo.parentId,
|
replyId: this.msgInfo.replyId,
|
"visitorId": this.form.visitorId,
|
"articleId": articleId,
|
"commentType": commentType,
|
"authStatus": this.form.isSecretMsg ? 2 : 1,
|
"isReceiveMail": this.form.isReceiveMail ? 1 : 0,
|
"visitorEmail": this.form.eMail,
|
"visitorHomePage": this.form.homePage,
|
"visitorNickName": this.form.nickName,
|
"commentContent": this.form.visitorContent,
|
"authCode": this.form.authCode != null && this.form.authCode != "" ? md5(this.form.authCode) :
|
''
|
}).then((res) => {
|
this.isSending = false;
|
if (res.code == 200) {
|
this.$emit("sendMsg");
|
this.$message.info("信息已送达..")
|
} else {
|
this.$notification.error({
|
message: '好像哪里不对劲..',
|
description: res.message,
|
placement: 'bottomRight'
|
});
|
}
|
}).catch((error) => {
|
this.$message.error("请求失败")
|
this.isSending = false;
|
})
|
// setTimeout(() => {
|
// this.$message.info("发送成功")
|
// this.isSending = false;
|
// }, 3000);
|
|
}
|
},
|
|
data() {
|
let tempVisitorData = localStorage.getItem(this.VisitorDataKey);
|
let vistorData = {
|
nickName: "",
|
eMail: "",
|
homePage: "",
|
isReceiveMail: false,
|
isSecretMsg: false,
|
visitorContent: "",
|
parentId: 0,
|
replyId: 0,
|
visitorId: 1,
|
authCode: ''
|
};
|
|
if (tempVisitorData != null && tempVisitorData != undefined) {
|
tempVisitorData = JSON.parse(tempVisitorData);
|
vistorData.nickName = tempVisitorData.nickName;
|
vistorData.eMail = tempVisitorData.eMail;
|
vistorData.homePage = tempVisitorData.homePage;
|
vistorData.isReceiveMail = tempVisitorData.isReceiveMail;
|
vistorData.isSecretMsg = tempVisitorData.isSecretMsg;
|
vistorData.visitorId = tempVisitorData.visitorId;
|
vistorData.authCode = tempVisitorData.authCode;
|
}
|
|
return {
|
VisitorDataKey: myConstant.VisitorDataKey,
|
isSending: false,
|
replyHolder: "",
|
msgInfo: {
|
useName: "",
|
userComment: "",
|
parentId: 0,
|
replyId: 0
|
},
|
showReplyMsgInfo: false,
|
labelCol: {
|
span: 6,
|
offset: 0,
|
},
|
wrapperCol: {
|
span: 15,
|
offset: 0
|
},
|
form: vistorData,
|
rules: {
|
"nickName": [{
|
message: '怎么称呼?',
|
}, {
|
trigger: 'blur',
|
max: 20,
|
message: '你的名字也太长了..'
|
}],
|
"eMail": [{
|
trigger: 'blur',
|
pattern: /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/,
|
message: '这邮箱格式?没见过呀..'
|
}, {
|
trigger: 'blur',
|
max: 50,
|
message: '邮箱不要超过50字符..'
|
}],
|
"homePage": [{
|
trigger: 'blur',
|
pattern: /^((https|http)?:\/\/)+/,
|
message: '仅支持 https:// | http://'
|
}, {
|
trigger: 'blur',
|
max: 50,
|
message: '网址不要超过50字符..'
|
}]
|
},
|
}
|
}
|
}
|
</script>
|
|
<style lang="less">
|
.replyMsgInfo img {
|
margin-bottom: -0.125rem;
|
img min-height: 3.5rem;
|
height: 2em;
|
}
|
|
.replyMsgInfo {
|
display: flex;
|
flex-direction: column;
|
border-radius: 4px;
|
box-shadow: 0px 9px 10px 0 rgba(0, 0, 0, 0.24), 1px 3px 15px 0 rgba(0, 0, 0, 0.19);
|
padding: 20px 25px 20px;
|
margin-left: 15px;
|
margin-top: 10px;
|
}
|
|
.OwO {
|
padding: 0px 0px 20px 0px;
|
}
|
|
.OwO .OwO-logo {
|
height: 30px;
|
}
|
|
.OwO .quyin,
|
.OwO img {
|
margin-bottom: -0.125rem;
|
min-height: 3.5rem;
|
height: 1em;
|
}
|
</style>
|