From 8ec9c517c58b70918f2d72f2bfa6ab4b0a4145f9 Mon Sep 17 00:00:00 2001 From: inleft <inleft@qq.com> Date: Fri, 19 Aug 2022 18:03:39 +0800 Subject: [PATCH] 局部细节调整 --- src/components/mini/mdDetail.vue | 340 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 318 insertions(+), 22 deletions(-) diff --git a/src/components/mini/mdDetail.vue b/src/components/mini/mdDetail.vue index d681f69..b85966b 100644 --- a/src/components/mini/mdDetail.vue +++ b/src/components/mini/mdDetail.vue @@ -1,49 +1,345 @@ <template> <div class="article-meta"> - <a-button @click="back"> - <a-icon type="left" /> - </a-button> - <a-divider orientation="left"> - 文章详情 - </a-divider> - <div class="markdown-body article-detail"> - <vue-markdown :source="source"></vue-markdown> + <!-- <div> + <a-button @click="()=>this.$router.back(-1)" style="position: absolute;"> + <a-icon type="left" /> + </a-button> + </div> --> + + <div class="headertop filter-dot headertop-bar " v-if="coverURL.length>0"> + <figure class="centerbg" v-bind:style="{'background-image':'url('+this.coverURL+')'}"> + </figure> </div> + + <div v-if="showMsg && !myLock"> + <div class="mySecretSamll" v-if="articleFileType==myConstant.fileTypeShort"> + <p>碎碎念只有那么一点了</p> + <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="mySecret" v-else-if="articleFileType==myConstant.fileTypeVideo + || articleFileType==myConstant.fileTypeMp3 + || articleFileType==myConstant.fileTypeShort"> + + <div class="mySecretSamll" v-if="introduce.length==0"> + <p>碎碎念只有那么一点了</p> + <p>但是下面依旧可以碎碎念</p> + </div> + <pre style="white-space: pre-line;"> + {{introduce}} + </pre> + </div> + + <div class="markdown-body article-detail " v-else> + <vue-markdown :source="source" ></vue-markdown> + </div> + </div> + + <!-- <div class="articleInfoMiniData"> + <div> + <a-icon type="calendar" class="samllPadding" /> + <span>{{articelMeta.publishDate==null?'--':articelMeta.publishDate}}</span> + </div> + <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="book" class="samllPadding" /> + <span>{{articelMeta.articleTypeName==null?'--':articelMeta.articleTypeName}}</span> + </div> + <a-icon type="folder-open" class="samllPadding" /> + </div> --> + + <div class="articleComment"> + <comment ref="myComment" :articleId="articleId" :isAllowedComment="isAllowedComment" /> + </div> + </div> + </template> <script> import VueMarkdown from 'vue-markdown' - import esPath from '../../assets/es.md' + 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 { - // props: ['id'], //接收动态路由的值 components: { - VueMarkdown + VueMarkdown, + comment }, data() { return { - source: esPath, + myConstant: myConstant, + articelMeta: "", + isAllowedComment: 1, + introduce: "", + articleId: "", + articleFileType: myConstant.fileTypeMarkDown, + source: "", + showMsg: false, + myLock: false, + errorMsg: '', + secret: '', + search: { + placeholder: "", + autoFocus: false, + backfill: true, + value: '', + disabled: false + }, + coverURL: "" } }, + 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: { - back: function() { - this.$router.go(-1); + articleOptionHandle(type) { + this.$message.info(type) + }, + queryDetail() { + this.showMsg = true; + this.errorMsg = "加载中.."; + + // if (this.articleFileType == myConstant.fileTypeShort) { + // 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.introduce = res.data.introduce; + this.articleFileType = res.data.articleFileType; + if (res.data.coverFileURL != null && res.data.coverFileURL != '') { + this.coverURL = res.data.coverFileURL; + } else { + this.coverURL = "http://t.inleft.com/share/media_photo/background.jpg"; + } + + this.articelMeta = res.data; + + if (res.data.articleFileType == myConstant.fileTypeMarkDown || + res.data.articleFileType == myConstant.fileTypeHtml) { + + 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; + }) } }, - mounted() { - // console.log(this.$route.params) - // console.log(this.$route.params.id) - // console.log(this.$route.query.id) - } + } </script> -<style scoped > - /* @import '../../assets/md.less'; */ +<style lang="less"> + @import '../../assets/md.less'; - + .headertop { + position: relative; + overflow: hidden; + border-radius: 14px; + } + + .centerbg { + width: 100%; + margin: 0; + padding: 0; + background-repeat: no-repeat; + // background-attachment: fixed; + background-size: cover; + z-index: -1; + // background-image: url("http://t.inleft.com/blog//cover/这世界那么多人.jpg"); + height: 222px; + background-size: 100% auto; + background-position: center; + } + + + .headertop::before { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 3; + background-attachment: fixed; + } + + .headertop.filter-dot::before { + // background-image: url("https://blog-img-1258635493.cos.ap-chengdu.myqcloud.com/cdn/img/other/dot.gif"); + // background-image: url("http://blog.inleft.com/photo/dot.gif"); + } + + // .headertop-bar::after { + // content: ''; + // width: 150%; + // height: 4.375rem; + // background: linear-gradient(0deg, #fff, 84%, #ffffff4f); + // left: -25%; + // bottom: -2.875rem; + // border-radius: 100%; + // position: absolute; + // z-index: 4; + // } + + .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 23px; + display: flex; + justify-content: space-between; + flex-wrap: wrap; + } + + .mySecret { + height: 515px; + 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: 30px 20px 20px 20px; + box-shadow: 8px 8px 18px rgba(0, 0, 0, 0.1), + -8px -8px 18px #ffffff; + } /* #test{ padding-left: 25%; -- Gitblit v1.9.1