feat: 增加评论修改功能

This commit is contained in:
xiongxiaoyang 2022-05-20 13:29:11 +08:00
parent f66732f21b
commit eec9bee904
6 changed files with 127 additions and 21 deletions

View File

@ -18,4 +18,8 @@ export function comment(params) {
export function deleteComment(id) { export function deleteComment(id) {
return request.delete(`/user/comment/${id}`); return request.delete(`/user/comment/${id}`);
}
export function updateComment(id,content) {
return request.putForm(`/user/comment/${id}`,content);
} }

View File

@ -44,7 +44,7 @@
import logo from "@/assets/images/logo.png"; import logo from "@/assets/images/logo.png";
import { reactive, toRefs, onMounted } from "vue"; import { reactive, toRefs, onMounted } from "vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import { getToken, getNickName, removeToken, removeNickName } from "@/utils/auth"; import { getToken, getNickName, removeToken, removeNickName,removeUid } from "@/utils/auth";
export default { export default {
name: "Top", name: "Top",
setup(props, context) { setup(props, context) {
@ -65,6 +65,7 @@ export default {
const logout = () => { const logout = () => {
removeToken(); removeToken();
removeNickName(); removeNickName();
removeUid()
state.nickName = ""; state.nickName = "";
state.token = ""; state.token = "";
}; };

View File

@ -3,6 +3,9 @@ const TokenKey = 'Authorization'
const nickNameKey = 'nickName' const nickNameKey = 'nickName'
const uidKey = 'uid'
export const getToken = () => { export const getToken = () => {
return localStorage.getItem(TokenKey); return localStorage.getItem(TokenKey);
} }
@ -26,3 +29,16 @@ export const setNickName = (nickName) => {
export const getNickName = () => { export const getNickName = () => {
return localStorage.getItem(nickNameKey); return localStorage.getItem(nickNameKey);
} }
export const setUid = (uid) => {
return localStorage.setItem(uidKey, uid)
}
export const getUid = () => {
return localStorage.getItem(uidKey);
}
export const removeUid = () => {
return localStorage.removeItem(uidKey)
}

View File

@ -136,12 +136,24 @@
>发表评论</a >发表评论</a
> >
</div> </div>
<div v-if="newestComments.commentTotal == 0" class="no_comment" id="noCommentPanel"> <div
v-if="newestComments.commentTotal == 0"
class="no_comment"
id="noCommentPanel"
>
<img :src="no_comment" alt="" /> <img :src="no_comment" alt="" />
<span class="block">暂无评论</span> <span class="block">暂无评论</span>
</div> </div>
<div v-if="newestComments.commentTotal > 0" class="commentBar" id="commentPanel"> <div
<div class="comment_list cf" v-for="(item,index) in newestComments.comments" :key="index"> v-if="newestComments.commentTotal > 0"
class="commentBar"
id="commentPanel"
>
<div
class="comment_list cf"
v-for="(item, index) in newestComments.comments"
:key="index"
>
<div class="user_heads fl" vals="389"> <div class="user_heads fl" vals="389">
<img :src="man" class="user_head" alt="" /><span <img :src="man" class="user_head" alt="" /><span
class="user_level1" class="user_level1"
@ -150,24 +162,50 @@
> >
</div> </div>
<ul class="pl_bar fr"> <ul class="pl_bar fr">
<li class="name">{{item.commentUser}}</li> <li class="name">{{ item.commentUser }}</li>
<li class="dec">{{item.commentContent}}</li> <li class="dec">{{ item.commentContent }}</li>
<li class="other cf"> <li class="other cf">
<span class="time fl">{{item.commentTime}}</span <span class="time fl">{{ item.commentTime }}</span
><span class="fr" ><span class="fr" v-if="item.commentUserId == uid"
><a ><a
href="javascript:void(0);"
@click="updateUserComment(item.id,item.commentContent)"
class="zan"
>修改</a
> | <a
href="javascript:void(0);" href="javascript:void(0);"
@click="deleteUserComment(item.id)" @click="deleteUserComment(item.id)"
class="zan" class="zan"
>删除</a >删除</a
></span ></span
> >
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<el-dialog
v-model="dialogUpdateCommentFormVisible"
title="评论修改"
>
<el-form :model="form">
<el-form-item
label="评论内容"
:label-width="formLabelWidth"
>
<el-input type="textarea" v-model="updateComment"/>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogUpdateCommentFormVisible = false"
>取消</el-button
>
<el-button type="primary" @click="goUpdateComment()"
>确定</el-button
>
</span>
</template>
</el-dialog>
<!--无评论时此处隐藏--> <!--无评论时此处隐藏-->
<div class="more_bar" id="moreCommentPanel" style="display: none"> <div class="more_bar" id="moreCommentPanel" style="display: none">
@ -293,9 +331,10 @@ import {
addVisitCount, addVisitCount,
getLastChapterAbout, getLastChapterAbout,
listRecBooks, listRecBooks,
listNewestComments, listNewestComments
} from "@/api/book"; } from "@/api/book";
import { comment , deleteComment} from "@/api/user"; import { comment, deleteComment, updateComment } from "@/api/user";
import {getUid} from "@/utils/auth"
import Header from "@/components/common/Header"; import Header from "@/components/common/Header";
import Footer from "@/components/common/Footer"; import Footer from "@/components/common/Footer";
import author_head from "@/assets/images/author_head.png"; import author_head from "@/assets/images/author_head.png";
@ -312,12 +351,16 @@ export default {
const router = useRouter(); const router = useRouter();
const state = reactive({ const state = reactive({
uid: getUid(),
book: {}, book: {},
books: {}, books: {},
chapterAbout: {}, chapterAbout: {},
commentContent: "", commentContent: "",
newestComments: {}, newestComments: {},
imgBaseUrl: process.env.VUE_APP_BASE_IMG_URL, imgBaseUrl: process.env.VUE_APP_BASE_IMG_URL,
dialogUpdateCommentFormVisible: false,
commentId: "",
updateComment: ""
}); });
onMounted(() => { onMounted(() => {
const bookId = route.params.id; const bookId = route.params.id;
@ -386,13 +429,25 @@ export default {
commentContent: state.commentContent, commentContent: state.commentContent,
}); });
state.commentContent = ""; state.commentContent = "";
loadNewestComments(state.book.id) loadNewestComments(state.book.id);
};
const updateUserComment = async (id,comment) => {
state.dialogUpdateCommentFormVisible = true
state.updateComment = comment
state.commentId = id
}; };
const deleteUserComment = async (id) => { const deleteUserComment = async (id) => {
await deleteComment(id) await deleteComment(id);
loadNewestComments(state.book.id) loadNewestComments(state.book.id);
} };
const goUpdateComment = async (id) => {
state.dialogUpdateCommentFormVisible = false
await updateComment(state.commentId,{"content":state.updateComment})
loadNewestComments(state.book.id);
};
return { return {
...toRefs(state), ...toRefs(state),
@ -404,7 +459,9 @@ export default {
goToAnchor, goToAnchor,
userComment, userComment,
deleteUserComment, deleteUserComment,
man man,
updateUserComment,
goUpdateComment
}; };
}, },
mounted() { mounted() {
@ -431,3 +488,27 @@ export default {
}, },
}; };
</script> </script>
<style>
.el-button:not(.is-text) {
border: #f80;
border-color: #f80;
}
.el-button--primary {
--el-button-hover-bg-color: #f80;
}
.el-button--primary {
--el-button-bg-color: #f70;
}
.el-button {
--el-button-hover-text-color: #fafafa;
}
.el-button {
--el-button-hover-bg-color: #ff880061;
}
</style>

View File

@ -102,7 +102,7 @@ import { useRouter, useRoute } from "vue-router";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { getImgVerifyCode } from "@/api/resource"; import { getImgVerifyCode } from "@/api/resource";
import { login } from "@/api/user"; import { login } from "@/api/user";
import { setToken, setNickName } from "@/utils/auth"; import { setToken, setNickName,setUid } from "@/utils/auth";
import Header from "@/components/common/Header"; import Header from "@/components/common/Header";
import Footer from "@/components/common/Footer"; import Footer from "@/components/common/Footer";
export default { export default {
@ -136,6 +136,7 @@ export default {
const { data } = await login(state); const { data } = await login(state);
setToken(data.token); setToken(data.token);
setUid(data.uid)
setNickName(data.nickName) setNickName(data.nickName)
router.push({ path: "/home" }); router.push({ path: "/home" });
}; };

View File

@ -60,7 +60,9 @@
</form> </form>
<div class="user_r"> <div class="user_r">
<p class="tit">已有账号</p> <p class="tit">已有账号</p>
<router-link :to="{name: 'login'}" class="btn_ora_white">立即登录</router-link> <router-link :to="{ name: 'login' }" class="btn_ora_white"
>立即登录</router-link
>
<!-- <!--
<div class="fast_login" style="display: none"> <div class="fast_login" style="display: none">
<div class="fast_tit"> <div class="fast_tit">
@ -111,7 +113,7 @@ import { useRouter, useRoute } from "vue-router";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { getImgVerifyCode } from "@/api/resource"; import { getImgVerifyCode } from "@/api/resource";
import { register } from "@/api/user"; import { register } from "@/api/user";
import { setToken,setNickName } from "@/utils/auth"; import { setToken, setNickName, setUid } from "@/utils/auth";
import Header from "@/components/common/Header"; import Header from "@/components/common/Header";
import Footer from "@/components/common/Footer"; import Footer from "@/components/common/Footer";
export default { export default {
@ -163,7 +165,8 @@ export default {
} }
const { data } = await register(state); const { data } = await register(state);
setToken(data); setToken(data.token);
setUid(data.uid);
setNickName(state.username); setNickName(state.username);
router.push({ path: "/home" }); router.push({ path: "/home" });
}; };