mirror of https://github.com/sunface/rust-course
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
5.7 KiB
154 lines
5.7 KiB
<template>
|
|
<div class="article-detail">
|
|
<el-row :gutter="20">
|
|
<el-col
|
|
:xs="{span:1,offset:0}"
|
|
:sm="{span:1,offset:0}"
|
|
:md="{span: 1,offset:2}"
|
|
:lg="{ span: 1, offset: 2 }"
|
|
>
|
|
<div class="squares position-fixed z-index-100 margin-top-100">
|
|
<div class="square font-hover-primary">
|
|
<button id="clap" :class="{clap:true, liked: arDetail.liked}" @click="arLike">
|
|
<span>
|
|
<svg
|
|
id="clap--icon"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
viewBox="-549 338 100.1 125"
|
|
>
|
|
<path
|
|
d="M-471.2 366.8c1.2 1.1 1.9 2.6 2.3 4.1.4-.3.8-.5 1.2-.7 1-1.9.7-4.3-1-5.9-2-1.9-5.2-1.9-7.2.1l-.2.2c1.8.1 3.6.9 4.9 2.2zm-28.8 14c.4.9.7 1.9.8 3.1l16.5-16.9c.6-.6 1.4-1.1 2.1-1.5 1-1.9.7-4.4-.9-6-2-1.9-5.2-1.9-7.2.1l-15.5 15.9c2.3 2.2 3.1 3 4.2 5.3zm-38.9 39.7c-.1-8.9 3.2-17.2 9.4-23.6l18.6-19c.7-2 .5-4.1-.1-5.3-.8-1.8-1.3-2.3-3.6-4.5l-20.9 21.4c-10.6 10.8-11.2 27.6-2.3 39.3-.6-2.6-1-5.4-1.1-8.3z"
|
|
/>
|
|
<path
|
|
d="M-527.2 399.1l20.9-21.4c2.2 2.2 2.7 2.6 3.5 4.5.8 1.8 1 5.4-1.6 8l-11.8 12.2c-.5.5-.4 1.2 0 1.7.5.5 1.2.5 1.7 0l34-35c1.9-2 5.2-2.1 7.2-.1 2 1.9 2 5.2.1 7.2l-24.7 25.3c-.5.5-.4 1.2 0 1.7.5.5 1.2.5 1.7 0l28.5-29.3c2-2 5.2-2 7.1-.1 2 1.9 2 5.1.1 7.1l-28.5 29.3c-.5.5-.4 1.2 0 1.7.5.5 1.2.4 1.7 0l24.7-25.3c1.9-2 5.1-2.1 7.1-.1 2 1.9 2 5.2.1 7.2l-24.7 25.3c-.5.5-.4 1.2 0 1.7.5.5 1.2.5 1.7 0l14.6-15c2-2 5.2-2 7.2-.1 2 2 2.1 5.2.1 7.2l-27.6 28.4c-11.6 11.9-30.6 12.2-42.5.6-12-11.7-12.2-30.8-.6-42.7m18.1-48.4l-.7 4.9-2.2-4.4m7.6.9l-3.7 3.4 1.2-4.8m5.5 4.7l-4.8 1.6 3.1-3.9"
|
|
/>
|
|
</svg>
|
|
</span>
|
|
</button>
|
|
<span class="position-absolute meta-word font-size-13 likes margin-left-30 margin-top--30 font-weight-bold">{{arDetail.likes}}</span>
|
|
</div>
|
|
<div v-show="arDetail.uid==this.$store.state.user.id" class="square cursor-pointer margin-top-20">
|
|
<a>
|
|
<el-tooltip content="编辑文章" placement="right">
|
|
<router-link :to="'/'+this.authorInfo.name + '/' + this.arID + '/edit'"><i class="el-icon-edit cursor-pointer"></i></router-link>
|
|
</el-tooltip>
|
|
</a>
|
|
</div>
|
|
|
|
<div class="square font-hover-primary padding-top-10">
|
|
<el-tooltip content="加入书签" placement="right">
|
|
<i class="el-icon-star-off cursor-pointer"></i>
|
|
</el-tooltip>
|
|
</div>
|
|
|
|
<div class="square font-hover-primary padding-top-10" >
|
|
<el-tooltip content="Discuss" placement="right">
|
|
<a href="#discuss"><i class="el-icon-s-comment cursor-pointer"></i></a>
|
|
</el-tooltip>
|
|
</div>
|
|
</div>
|
|
</el-col>
|
|
<el-col
|
|
:xs="{span:22,offset:2}"
|
|
:sm="{span:17,offset:3}"
|
|
:md="{span: 13,offset:4}"
|
|
:lg="{ span: 13, offset: 4 }"
|
|
>
|
|
<img :src="arDetail.cover_image" class="width-100p"></img>
|
|
<h1 class=" margin-top-30">{{arDetail.title}}</h1>
|
|
<div class="margin-left-5">
|
|
<span class="vertical-align-middle display-inline-block"><img :src="authorInfo.avatar" alt="" class="height-40 width-40"></span>
|
|
<span class="meta-word font-size-14 font-weight-500">{{arDetail.publish_date}}<span> · {{arDetail.words}} words</span> <span v-if="arDetail.edit_date!=''">· Updated on {{arDetail.edit_date}}</span></span>
|
|
</div>
|
|
<render :content="arDetail.render" style="min-height:400px" class="min-height-400 margin-top-20 padding-left-8"></render>
|
|
</el-col>
|
|
<el-col :span="1" :offset="1">
|
|
<UserCard class="user-card z-index-100 position-fixed margin-top-40 max-width-280 margin-left-20" :user="authorInfo"></UserCard>
|
|
</el-col>
|
|
</el-row>
|
|
|
|
<el-row class="discuss margin-top-40">
|
|
<el-col
|
|
:xs="{span:22,offset:2}"
|
|
:sm="{span:17,offset:3}"
|
|
:md="{span: 13,offset:4}"
|
|
:lg="{ span: 13, offset: 4 }"
|
|
>
|
|
<discuss id="discuss" :postID="this.arID" postType="1" :postAuthorID="authorInfo.id"></discuss>
|
|
|
|
</el-col>
|
|
</el-row>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import request from "@/utils/request";
|
|
import render from "../components/render";
|
|
import discuss from "../components/discuss";
|
|
import UserCard from "../components/user-card";
|
|
|
|
export default {
|
|
components: { render,discuss,UserCard},
|
|
data() {
|
|
return {
|
|
arID: "", // unique article id
|
|
arDetail: {},
|
|
bookmarked: false,
|
|
authorInfo : {},
|
|
};
|
|
},
|
|
watch: {
|
|
$route() {
|
|
// 当路由变化时,调用此函数
|
|
},
|
|
},
|
|
computed: {},
|
|
methods: {
|
|
arLike() {
|
|
var tp = 1 // like
|
|
if (this.arDetail.liked) {
|
|
tp = 2 //dislike
|
|
}
|
|
request({
|
|
url: "/article/like",
|
|
method: "POST",
|
|
params: {
|
|
id: this.arID,
|
|
type: tp
|
|
}
|
|
}).then(_ => {
|
|
this.arDetail.liked = !this.arDetail.liked
|
|
});
|
|
}
|
|
},
|
|
beforeDestroy() {
|
|
this.$store.dispatch("setNavFixed", true)
|
|
},
|
|
created() {
|
|
this.$store.dispatch("setNavFixed", false)
|
|
this.arID = this.$route.params.arID;
|
|
request({
|
|
url: "/web/article/detail",
|
|
method: "GET",
|
|
params: {
|
|
article_id: this.arID
|
|
}
|
|
}).then(res0 => {
|
|
request({
|
|
url: "/web/user/card",
|
|
method: "GET",
|
|
params: {
|
|
uid: res0.data.data.uid
|
|
}
|
|
}).then(res => {
|
|
this.arDetail = res0.data.data;
|
|
console.log(this.arDetail)
|
|
this.authorInfo = res.data.data
|
|
});
|
|
});
|
|
},
|
|
mounted() {
|
|
},
|
|
};
|
|
</script>
|