<template>
|
<div class="article-meta">
|
<div>
|
<a-button @click="back" style="position: absolute;">
|
<a-icon type="left" />
|
</a-button>
|
</div>
|
|
<div v-if="showMsg && !myLock">
|
<div class="mySecretSamll" v-if="articleFileType==myConstant.fileTypeShort">
|
<p>碎碎念只有那么一点了,但是下面依旧可以碎碎念</p>
|
</div>
|
<div class="mySecret" v-else>
|
<h1>怎样才能让你看到我呢</h1>
|
<h1>只要你要,只要我有...</h1>
|
<span class="myTip">{{errorMsg}}</span>
|
</div>
|
</div>
|
|
<div v-else>
|
<div class="mySecret" v-if="myLock">
|
<h1>越不正经的人越深情..</h1>
|
<h3>受庇护的文字..输入神秘代码以解除封印</h3>
|
|
<a-auto-complete v-model="secret" ref="mySearch" v-bind="search" @blur="pressEnter">
|
<a-input-password @pressEnter="pressEnter">
|
<a-icon slot="prefix" type="lock" style="color:rgba(0,0,0,.25)" />
|
</a-input-password>
|
</a-auto-complete>
|
<span class="myTip">{{errorMsg}}</span>
|
</div>
|
|
<div class="markdown-body article-detail" v-else>
|
<vue-markdown :source="source"></vue-markdown>
|
</div>
|
</div>
|
<div class="articleInfoMiniData">
|
<div class="smallOption" @click="articleOptionHandle('dislike')">
|
<a-icon type="dislike" style="margin-top: 2px;" />
|
</div>
|
<div>
|
<a-icon type="read" class="samllPadding" />
|
<span>{{articelMeta.readCount==null?'--':articelMeta.readCount}}</span>
|
</div>
|
<div class="smallOption" @click="articleOptionHandle('like')">
|
<a-icon type="like" class="samllPadding" />
|
<span>{{articelMeta.likeCount==null?'0':articelMeta.likeCount}}</span>
|
</div>
|
<div>
|
<!-- <a-icon type="folder-open" class="samllPadding" /> -->
|
<a-icon type="book" class="samllPadding" />
|
<span>{{articelMeta.articleTypeName==null?'--':articelMeta.articleTypeName}}</span>
|
</div>
|
<div>
|
<a-icon type="calendar" class="samllPadding" />
|
<span>{{articelMeta.publishDate==null?'--':articelMeta.publishDate}}</span>
|
</div>
|
</div>
|
<div class="articleComment">
|
<comment ref="myComment" :articleId="articleId" :isAllowedComment="isAllowedComment" />
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
import VueMarkdown from 'vue-markdown'
|
import md5 from 'js-md5';
|
|
import {
|
queryBlogArticleDetail
|
} from '../../api/blogArticle.js'
|
import comment from "../mini/box12-comment.vue"
|
|
import axios from 'axios'
|
import myConstant from "../../config/myConstant.js"
|
|
export default {
|
components: {
|
VueMarkdown,
|
comment
|
},
|
data() {
|
return {
|
myConstant: myConstant,
|
articelMeta: "",
|
isAllowedComment: 1,
|
articleId: "",
|
articleFileType: myConstant.fileTypeMarkDown,
|
source: "",
|
showMsg: false,
|
myLock: false,
|
errorMsg: '',
|
secret: '',
|
search: {
|
placeholder: "",
|
autoFocus: false,
|
backfill: true,
|
value: '',
|
disabled: false
|
},
|
}
|
},
|
created() {
|
this.articleId = this.$route.query.id;
|
this.articleFileType = this.$route.query.articleFileType;
|
},
|
watch: {
|
'$route'(to, from) {
|
if ("mdDetail" === to.name) {
|
this.articleId = this.$route.query.id;
|
this.articleFileType = this.$route.query.articleFileType;
|
}
|
},
|
articleId: function(newValue, oldValue) {
|
if (newValue == undefined || newValue == null || newValue == "") {
|
this.showMsg = true;
|
this.errorMsg = "日志id参数缺失";
|
} else {
|
this.queryDetail();
|
this.$refs.myComment.updateCommentList(this.articleId);
|
}
|
},
|
},
|
methods: {
|
articleOptionHandle(type) {
|
this.$message.info(type)
|
},
|
queryDetail() {
|
this.showMsg = true;
|
this.errorMsg = "加载中..";
|
|
if (this.articleFileType == myConstant.fileTypeShort ||
|
this.articleFileType == myConstant.fileTypeVideo ||
|
this.articleFileType == myConstant.fileTypeMp3) {
|
this.errorMsg = "该类型日志在这里没有更多啦..";
|
return
|
}
|
|
queryBlogArticleDetail({
|
id: this.articleId,
|
authWord: this.secret == "" ? null : md5(this.secret)
|
}).then((res) => {
|
this.showMsg = true;
|
this.myLock = false;
|
this.errorMsg = res.message;
|
this.source = "";
|
if (res.code != 200) {
|
|
if (res.code == 1019001) {
|
//日志需要授权
|
this.errorMsg = "";
|
this.myLock = true;
|
} else if (res.code == 1019002) {
|
//授权码错误
|
this.errorMsg = "口令错误..神秘力量依然阻止了你的前进";
|
this.myLock = true;
|
} else {
|
this.$notification.error({
|
message: '好像哪里不对劲..',
|
description: res.message,
|
placement: 'bottomRight'
|
});
|
}
|
return
|
}
|
// this.test = res.data.isAllowedComment == 1 ? true : false;
|
|
this.isAllowedComment = res.data.isAllowedComment;
|
this.articelMeta = res.data;
|
this.$axios
|
.get(res.data.articleFileURL)
|
.then((res) => {
|
this.source = res.data;
|
})
|
|
//获取日志资源文件
|
this.showMsg = false;
|
this.errorMsg = "";
|
})
|
},
|
pressEnter() {
|
if (this.secret == "") {
|
return
|
}
|
this.search.disabled = true
|
this.source = "";
|
this.$message
|
.loading('卍解..', 1)
|
.then(() => {
|
this.queryDetail();
|
this.search.disabled = false;
|
})
|
|
},
|
back: function() {
|
this.$router.back(-1);
|
}
|
},
|
|
}
|
</script>
|
|
<style lang="less">
|
@import '../../assets/md.less';
|
|
|
.smallOption {
|
transition-function: ease-out;
|
transition-duration: 200ms;
|
-webkit-transition-function: ease-out;
|
-webkit-transition-duration: 200ms;
|
-moztransition-function: ease-out;
|
-moztransition-duration: 200ms;
|
-o-transition-function: ease-out;
|
-o-transition-duration: 200ms;
|
}
|
|
.smallOption:hover {
|
transform: scale(1.55, 1.55);
|
-webkit-transform: scale(1.55, 1.55);
|
-moz-transform: scale(1.55, 1.55);
|
-o-transform: scale(1.55, 1.55);
|
}
|
|
.articleInfoMiniData {
|
user-select: none;
|
box-shadow: 8px 8px 18px rgba(0, 0, 0, 0.1), -8px -8px 18px #ffffff;
|
padding: 10px 50px;
|
display: flex;
|
justify-content: space-between;
|
flex-wrap: wrap;
|
}
|
|
.mySecret {
|
height: 715px;
|
display: flex;
|
flex-direction: column;
|
justify-content: center;
|
padding-left: auto;
|
align-items: center;
|
}
|
|
.mySecretSamll {
|
padding: 30px 10px 10px;
|
height: 115px;
|
display: flex;
|
flex-direction: column;
|
justify-content: center;
|
padding-left: auto;
|
align-items: center;
|
}
|
|
|
.markdown-body,
|
.articleComment {
|
min-height: 70%;
|
padding: 35px 20px 30px 20px;
|
box-shadow: 8px 8px 18px rgba(0, 0, 0, 0.1),
|
-8px -8px 18px #ffffff;
|
}
|
|
/* #test{
|
padding-left: 25%;
|
padding-right: 25%;
|
} */
|
/* h3 {
|
margin: 40px 0 0;
|
}
|
|
ul {
|
list-style-type: none;
|
padding: 0;
|
}
|
|
li {
|
display: inline-block;
|
margin: 0 10px;
|
}
|
|
a {
|
color: #42b983;
|
}
|
|
*/
|
|
|
/* 自己也可以再调整调整 (贡献一版 我们调整的一版样式) */
|
/* .markdown-body {
|
padding: 20px;
|
min-width: 200px;
|
max-width: 900px;
|
font-size: 12px;
|
|
h2 {
|
font-size: 18px;
|
margin: 1em 0 15px;
|
padding-top: 0.8em;
|
padding-bottom: 0.8em;
|
}
|
|
h3 {
|
font-size: 14px;
|
margin: 22px 0 16px;
|
}
|
|
h4 {
|
font-size: 13px;
|
margin: 20px 0 16px;
|
}
|
|
h5 {
|
font-size: 12px;
|
margin: 16px 0 16px;
|
font-weight: 700;
|
}
|
|
p {
|
font-size: 12px;
|
line-height: 24px;
|
color: #666666;
|
margin-top: 0px;
|
margin: 8px 0;
|
margin: 14px 0 14px;
|
}
|
|
pre {
|
background-color: #eee;
|
margin-bottom: 8px;
|
margin-top: 8px;
|
margin: 12px 0 12px;
|
}
|
|
blockquote {
|
margin-bottom: 8px;
|
margin-top: 8px;
|
margin: 14px 0 14px;
|
background-color: #eee;
|
padding: 16px 16px;
|
}
|
|
tr {
|
background-color: #f5f5f5;
|
}
|
|
code {
|
background-color: #eee;
|
}
|
|
ul,
|
ol,
|
li {
|
list-style: unset;
|
font-size: 12px;
|
line-height: 20px;
|
color: #666666;
|
margin-top: 0px;
|
margin: 8px 0;
|
}
|
|
blockquote {
|
border-color: #48b6e2;
|
}
|
|
table {
|
display: table;
|
width: 100%;
|
max-width: 100%;
|
margin-bottom: 20px;
|
}
|
} */
|
</style>
|