|
|
@@ -1,41 +1,27 @@
|
|
|
<template>
|
|
|
<div class="form-detail-root">
|
|
|
<nav-bar title="问答详情" right-icon="share" @click-left="$router.go(-1)"></nav-bar>
|
|
|
- <div class="forum-title">人类未来如何逆转全球变暖?</div>
|
|
|
+ <div class="forum-title">{{ post.title }}</div>
|
|
|
<div class="forum-content">
|
|
|
- 近些年来,在曾经寒冷的北极圈最低气温零下71摄氏度,已经成为了历史,现在最低50到60摄氏度,在西伯利亚局部地区的夏天气温甚至达到了惊人的38摄氏度,这相当于低纬度的温带气候。
|
|
|
+ {{ post.content }}
|
|
|
</div>
|
|
|
<div class="info">
|
|
|
- <van-image
|
|
|
- class="avatar"
|
|
|
- src="https://img01.yzcdn.cn/vant/cat.jpeg"
|
|
|
- width="24"
|
|
|
- height="24"
|
|
|
- fit="cover"
|
|
|
- round
|
|
|
- />
|
|
|
- <div class="name">张先生</div>
|
|
|
- <div class="time">2021-01-16创建</div>
|
|
|
+ <van-image class="avatar" :src="post.avatar" width="24" height="24" fit="cover" round />
|
|
|
+ <div class="name">{{ post.nickname }}</div>
|
|
|
+ <div class="time">{{ toDate(post.createdAt) }} 创建</div>
|
|
|
</div>
|
|
|
<div class="reply-title">
|
|
|
<img src="../../assets/interact_icon_comment_title.png" />
|
|
|
- 热议回复(256)
|
|
|
+ {{ type === 'forum' ? '热议回复' : '问题答复' }}({{ comments.length }})
|
|
|
</div>
|
|
|
- <div class="comment" v-for="n in 10" :key="n">
|
|
|
+ <div class="comment" v-for="item in comments" :key="item.id">
|
|
|
<div class="comment-title">
|
|
|
- <van-image
|
|
|
- class="avatar"
|
|
|
- src="https://img01.yzcdn.cn/vant/cat.jpeg"
|
|
|
- width="24"
|
|
|
- height="24"
|
|
|
- fit="cover"
|
|
|
- round
|
|
|
- />
|
|
|
- <div class="name">晋思宁</div>
|
|
|
+ <van-image class="avatar" :src="item.avatar" width="24" height="24" fit="cover" round />
|
|
|
+ <div class="name">{{ item.nickname }}</div>
|
|
|
</div>
|
|
|
<div class="content">
|
|
|
<div class="txt">
|
|
|
- 地球气候变化已经成为了人类健康发展、以及未来生存最大的障碍,除了大气污染、空气中颗粒物超标以外,最严重的问题当属二氧化碳、甲烷等一些温室气体对全球气温的影响。
|
|
|
+ {{ item.content }}
|
|
|
</div>
|
|
|
<div class="pics" preview-group>
|
|
|
<van-image
|
|
|
@@ -45,25 +31,37 @@
|
|
|
height="60"
|
|
|
fit="cover"
|
|
|
radius="4"
|
|
|
- v-for="(item, i) in images"
|
|
|
+ v-for="(item, i) in item.pics || []"
|
|
|
:key="i"
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="opt">
|
|
|
- <div class="time">2020-12-25</div>
|
|
|
- <div class="btn" style="margi-right:24px">
|
|
|
- <img src="../../assets/interact_icon_like.png" />
|
|
|
- 56
|
|
|
+ <div class="time">{{ item.createdAt }}</div>
|
|
|
+ <div class="btn" style="margi-right:24px" @click="like(item, false)">
|
|
|
+ <img
|
|
|
+ :src="
|
|
|
+ item.liked
|
|
|
+ ? require('../../assets/interact_icon_like_pre.png')
|
|
|
+ : require('../../assets/interact_icon_like.png')
|
|
|
+ "
|
|
|
+ />
|
|
|
+ {{ item.likeNum }}
|
|
|
</div>
|
|
|
- <div class="btn">
|
|
|
- <img src="../../assets/interact_icon_dislike.png" />
|
|
|
- 56
|
|
|
+ <div class="btn" @click="like(item, true)">
|
|
|
+ <img
|
|
|
+ :src="
|
|
|
+ item.disliked
|
|
|
+ ? require('../../assets/interact_icon_dislike_pre.png')
|
|
|
+ : require('../../assets/interact_icon_dislike.png')
|
|
|
+ "
|
|
|
+ />
|
|
|
+ {{ item.dislikeNum }}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="btn-wrapper">
|
|
|
- <div class="btn-lg btn-comment" @click="showCommentDialog = true">
|
|
|
+ <div class="btn-lg btn-comment" @click="createComment">
|
|
|
<img src="../../assets/icon_edit.png" />{{ type === 'forum' ? '发表看法' : '回答' }}
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -72,9 +70,9 @@
|
|
|
<div class="title">
|
|
|
{{ type === 'forum' ? '发表看法' : '回答' }}
|
|
|
<div class="btn btn-cancel" @click="showCommentDialog = false">取消</div>
|
|
|
- <div class="btn btn-submit">提交</div>
|
|
|
+ <div class="btn btn-submit" @click="submit">提交</div>
|
|
|
</div>
|
|
|
- <textarea placeholder="输入您的回答"></textarea>
|
|
|
+ <textarea placeholder="输入您的回答" v-model="content" maxlength="255"></textarea>
|
|
|
<div class="upload">
|
|
|
<van-uploader v-model="fileList" accept="image/*" multiple :after-read="afterRead" max-count="6" />
|
|
|
</div>
|
|
|
@@ -97,16 +95,39 @@ export default {
|
|
|
'http://www.ikanins.com/wp-content/uploads/2021/02/www.ikanins.com-20210221-93p-12.jpg'
|
|
|
],
|
|
|
showCommentDialog: false,
|
|
|
- fileList: []
|
|
|
+ fileList: [],
|
|
|
+ content: '',
|
|
|
+ post: {
|
|
|
+ pics: []
|
|
|
+ },
|
|
|
+ comments: []
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
this.type = this.$route.query.type;
|
|
|
+ this.getData();
|
|
|
},
|
|
|
activated() {
|
|
|
this.type = this.$route.query.type;
|
|
|
+ this.getData();
|
|
|
},
|
|
|
methods: {
|
|
|
+ getData() {
|
|
|
+ this.$http.get(`/post/getDTO/${this.$route.query.id}`).then(res => {
|
|
|
+ this.post = res;
|
|
|
+ });
|
|
|
+ this.$http
|
|
|
+ .get('/comment/allDTO', { size: 1000, query: { postId: this.$route.query.id }, sort: 'createdAt,desc' })
|
|
|
+ .then(res => {
|
|
|
+ this.comments = res.content;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ toDate(time) {
|
|
|
+ if (time) {
|
|
|
+ return time.split(' ')[0];
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+ },
|
|
|
afterRead(file) {
|
|
|
console.log(file);
|
|
|
file.status = 'uploading';
|
|
|
@@ -125,6 +146,69 @@ export default {
|
|
|
file.status = 'failed';
|
|
|
file.message = '上传失败';
|
|
|
});
|
|
|
+ },
|
|
|
+ createComment() {
|
|
|
+ if (this.checkLogin()) {
|
|
|
+ this.showCommentDialog = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ submit() {
|
|
|
+ if (!this.content) {
|
|
|
+ this.$toast('请输入内容');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.$toast.loading('提交中');
|
|
|
+ this.$http
|
|
|
+ .post(
|
|
|
+ '/comment/create',
|
|
|
+ {
|
|
|
+ postId: this.$route.query.id,
|
|
|
+ content: this.content,
|
|
|
+ pics: this.fileList.map(i => i.url).filter(i => !!i)
|
|
|
+ },
|
|
|
+ { body: 'json' }
|
|
|
+ )
|
|
|
+ .then(res => {
|
|
|
+ this.$toast.success('提交成功');
|
|
|
+ this.showCommentDialog = false;
|
|
|
+ this.getData();
|
|
|
+ })
|
|
|
+ .catch(e => {
|
|
|
+ this.$toast(e.error || '提交失败,请稍后再试');
|
|
|
+ });
|
|
|
+ },
|
|
|
+ like(item, dislike) {
|
|
|
+ console.log(item);
|
|
|
+ if (this.checkLogin()) {
|
|
|
+ if (dislike) {
|
|
|
+ if (item.disliked) {
|
|
|
+ this.$set(item, 'dislikeNum', Math.max(item.dislikeNum - 1, 0));
|
|
|
+ this.$set(item, 'disliked', false);
|
|
|
+ } else if (item.liked) {
|
|
|
+ this.$set(item, 'likeNum', Math.max(item.likeNum - 1, 0));
|
|
|
+ this.$set(item, 'liked', false);
|
|
|
+ this.$set(item, 'dislikeNum', item.dislikeNum + 1);
|
|
|
+ this.$set(item, 'disliked', true);
|
|
|
+ } else {
|
|
|
+ this.$set(item, 'dislikeNum', item.dislikeNum + 1);
|
|
|
+ this.$set(item, 'disliked', true);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (item.disliked) {
|
|
|
+ this.$set(item, 'dislikeNum', Math.max(item.dislikeNum - 1, 0));
|
|
|
+ this.$set(item, 'disliked', false);
|
|
|
+ this.$set(item, 'likeNum', item.likeNum + 1);
|
|
|
+ this.$set(item, 'liked', true);
|
|
|
+ } else if (item.liked) {
|
|
|
+ this.$set(item, 'likeNum', Math.max(item.likeNum - 1, 0));
|
|
|
+ this.$set(item, 'liked', false);
|
|
|
+ } else {
|
|
|
+ this.$set(item, 'likeNum', item.likeNum + 1);
|
|
|
+ this.$set(item, 'liked', true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.$http.get('/comment/like', { commentId: item.id, dislike }).then(res => {});
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
};
|