kana-bbs/pages/thread/_id.vue
2022-01-30 13:34:10 +08:00

112 lines
2.2 KiB
Vue

<template lang="pug">
.thread
.header
h1.title {{ thread.title }}
.info
span.user {{ thread.user.name }}
span.date 2021-01-01
span.view 1933
.tags
span.tag test
span.tag demo
.content.main-width
p {{ thread.data }}
PostList(:data="postlist")
.post-create(v-if="account.online")
.avatar
.content
textarea(v-model="post.data", rows="12")
button.submit(@click="createpost") 发表
</template>
<script>
export default {
asyncData({ $axios, params }) {
return $axios.get(`/api/thread/${params.id}`).then((res) => {
return {
thread: res.data,
postlist: [],
post: {
data: "",
attach: "thread",
aid: params.id,
},
};
});
},
computed: {
account() {
return this.$store.state.account;
},
},
methods: {
loadpostlist() {
this.$axios
.get(`/api/post?attach=thread&aid=${this.post.aid}`)
.then((res) => {
this.postlist = res.data;
});
},
createpost() {
console.log(this.post);
this.$axios.post("/api/post", this.post).then((res) => {
console.log(res.data);
});
},
},
mounted() {
this.loadpostlist();
},
};
</script>
<style lang="sass">
.thread
>.header
height: 240px
background-color: rgba(0, 0, 0, .5)
margin: 0
padding: 4rem
text-align: center
color: #ffffff
span
margin: 0 .5rem
>.content
background: #ffffff
min-height: 800px
padding: 1rem 2rem
position: relative
top: -5rem
border-radius: .5rem
box-sizing: border-box
.post-create
display: flex
//background: #c8d22d
>.avatar
width: 48px
height: 48px
border-radius: 50%
background: rgba(0, 0, 0, .5)
>.content
flex: 1
padding-left: 1rem
textarea
display: block
width: 100%
max-width: 64rem
border: 1px solid #e5e5e5
border-radius: .5rem
padding: 1rem
box-sizing: border-box
button
border: none
border-radius: .25rem
padding: .5rem 1rem
margin: 1rem 0
color: #ffffff
background-color: #cc1414
font-weight: 600
min-width: 6rem
</style>