|
|
|
@ -216,11 +216,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
<script setup lang="ts">
|
|
|
|
import { h, ref, reactive, watch, onMounted, computed } from 'vue';
|
|
|
|
import { h, ref, reactive, watch, onMounted, computed } from 'vue';
|
|
|
|
import { NIcon } from 'naive-ui'
|
|
|
|
import { NIcon } from 'naive-ui';
|
|
|
|
import type { Component, Ref } from 'vue'
|
|
|
|
import type { Component, Ref } from 'vue';
|
|
|
|
import { useStore } from 'vuex';
|
|
|
|
import { useStore } from 'vuex';
|
|
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
|
|
import { getUserProfile, getUserPosts, changeUserStatus, deleteFriend, followUser, unfollowUser } from '@/api/user';
|
|
|
|
import {
|
|
|
|
|
|
|
|
getUserProfile,
|
|
|
|
|
|
|
|
getUserPosts,
|
|
|
|
|
|
|
|
changeUserStatus,
|
|
|
|
|
|
|
|
deleteFriend,
|
|
|
|
|
|
|
|
followUser,
|
|
|
|
|
|
|
|
unfollowUser,
|
|
|
|
|
|
|
|
} from '@/api/user';
|
|
|
|
import { useDialog, DropdownOption } from 'naive-ui';
|
|
|
|
import { useDialog, DropdownOption } from 'naive-ui';
|
|
|
|
import WhisperAddFriend from '../components/whisper-add-friend.vue';
|
|
|
|
import WhisperAddFriend from '../components/whisper-add-friend.vue';
|
|
|
|
import { MoreHorizFilled } from '@vicons/material';
|
|
|
|
import { MoreHorizFilled } from '@vicons/material';
|
|
|
|
@ -233,9 +240,9 @@ import {
|
|
|
|
PersonRemoveOutline,
|
|
|
|
PersonRemoveOutline,
|
|
|
|
CubeOutline,
|
|
|
|
CubeOutline,
|
|
|
|
BodyOutline,
|
|
|
|
BodyOutline,
|
|
|
|
WalkOutline
|
|
|
|
WalkOutline,
|
|
|
|
} from '@vicons/ionicons5';
|
|
|
|
} from '@vicons/ionicons5';
|
|
|
|
import InfiniteLoading from "v3-infinite-loading";
|
|
|
|
import InfiniteLoading from 'v3-infinite-loading';
|
|
|
|
|
|
|
|
|
|
|
|
const dialog = useDialog();
|
|
|
|
const dialog = useDialog();
|
|
|
|
const store = useStore();
|
|
|
|
const store = useStore();
|
|
|
|
@ -269,11 +276,13 @@ const mediaList = ref<Item.PostProps[]>([]);
|
|
|
|
const starList = ref<Item.PostProps[]>([]);
|
|
|
|
const starList = ref<Item.PostProps[]>([]);
|
|
|
|
const username = ref(route.query.s || '');
|
|
|
|
const username = ref(route.query.s || '');
|
|
|
|
const page = ref(+(route.query.p as string) || 1);
|
|
|
|
const page = ref(+(route.query.p as string) || 1);
|
|
|
|
const pageType = ref<"post" | "comment" | "highlight" | "media" | "star">('post');
|
|
|
|
const pageType = ref<'post' | 'comment' | 'highlight' | 'media' | 'star'>(
|
|
|
|
|
|
|
|
'post',
|
|
|
|
|
|
|
|
);
|
|
|
|
const postPage = ref(+(route.query.p as string) || 1);
|
|
|
|
const postPage = ref(+(route.query.p as string) || 1);
|
|
|
|
const commentPage = ref(1)
|
|
|
|
const commentPage = ref(1);
|
|
|
|
const highlightPage = ref(1)
|
|
|
|
const highlightPage = ref(1);
|
|
|
|
const mediaPage = ref(1)
|
|
|
|
const mediaPage = ref(1);
|
|
|
|
const starPage = ref(1);
|
|
|
|
const starPage = ref(1);
|
|
|
|
const pageSize = ref(20);
|
|
|
|
const pageSize = ref(20);
|
|
|
|
const totalPage = ref(0);
|
|
|
|
const totalPage = ref(0);
|
|
|
|
@ -285,9 +294,9 @@ const starTotalPage = ref(0);
|
|
|
|
|
|
|
|
|
|
|
|
const onSendWhisper = (receiver: Item.UserInfo) => {
|
|
|
|
const onSendWhisper = (receiver: Item.UserInfo) => {
|
|
|
|
user.id = receiver.id;
|
|
|
|
user.id = receiver.id;
|
|
|
|
user.username = receiver.username
|
|
|
|
user.username = receiver.username;
|
|
|
|
user.nickname = receiver.nickname
|
|
|
|
user.nickname = receiver.nickname;
|
|
|
|
user.avatar = receiver.avatar
|
|
|
|
user.avatar = receiver.avatar;
|
|
|
|
showWhisper.value = true;
|
|
|
|
showWhisper.value = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
@ -295,14 +304,18 @@ const onHandleFollowAction = (post: Item.PostProps) => {
|
|
|
|
dialog.success({
|
|
|
|
dialog.success({
|
|
|
|
title: '提示',
|
|
|
|
title: '提示',
|
|
|
|
content:
|
|
|
|
content:
|
|
|
|
'确定' + (post.user.is_following ? '取消关注 @' : '关注 @') + post.user.username + ' 吗?',
|
|
|
|
'确定' +
|
|
|
|
|
|
|
|
(post.user.is_following ? '取消关注 @' : '关注 @') +
|
|
|
|
|
|
|
|
post.user.username +
|
|
|
|
|
|
|
|
' 吗?',
|
|
|
|
positiveText: '确定',
|
|
|
|
positiveText: '确定',
|
|
|
|
negativeText: '取消',
|
|
|
|
negativeText: '取消',
|
|
|
|
onPositiveClick: () => {
|
|
|
|
onPositiveClick: () => {
|
|
|
|
if (post.user.is_following) {
|
|
|
|
if (post.user.is_following) {
|
|
|
|
unfollowUser({
|
|
|
|
unfollowUser({
|
|
|
|
user_id: post.user.id,
|
|
|
|
user_id: post.user.id,
|
|
|
|
}).then((_res) => {
|
|
|
|
})
|
|
|
|
|
|
|
|
.then((_res) => {
|
|
|
|
window.$message.success('操作成功');
|
|
|
|
window.$message.success('操作成功');
|
|
|
|
postFollowAction(post.user_id, false);
|
|
|
|
postFollowAction(post.user_id, false);
|
|
|
|
})
|
|
|
|
})
|
|
|
|
@ -310,7 +323,8 @@ const onHandleFollowAction = (post: Item.PostProps) => {
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
followUser({
|
|
|
|
followUser({
|
|
|
|
user_id: post.user.id,
|
|
|
|
user_id: post.user.id,
|
|
|
|
}).then((_res) => {
|
|
|
|
})
|
|
|
|
|
|
|
|
.then((_res) => {
|
|
|
|
window.$message.success('关注成功');
|
|
|
|
window.$message.success('关注成功');
|
|
|
|
postFollowAction(post.user_id, true);
|
|
|
|
postFollowAction(post.user_id, true);
|
|
|
|
})
|
|
|
|
})
|
|
|
|
@ -328,7 +342,11 @@ function postFollowAction(userId: number, isFollowing: boolean) {
|
|
|
|
updateFolloing(starList, userId, isFollowing);
|
|
|
|
updateFolloing(starList, userId, isFollowing);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function updateFolloing(posts: Ref<Item.PostProps[]>, userId: number, isFollowing: boolean) {
|
|
|
|
function updateFolloing(
|
|
|
|
|
|
|
|
posts: Ref<Item.PostProps[]>,
|
|
|
|
|
|
|
|
userId: number,
|
|
|
|
|
|
|
|
isFollowing: boolean,
|
|
|
|
|
|
|
|
) {
|
|
|
|
if (posts.value && posts.value.length > 0) {
|
|
|
|
if (posts.value && posts.value.length > 0) {
|
|
|
|
for (let index in posts.value) {
|
|
|
|
for (let index in posts.value) {
|
|
|
|
if (posts.value[index].user_id == userId) {
|
|
|
|
if (posts.value[index].user_id == userId) {
|
|
|
|
@ -343,10 +361,10 @@ const reset = () => {
|
|
|
|
list.value = [];
|
|
|
|
list.value = [];
|
|
|
|
postList.value = [];
|
|
|
|
postList.value = [];
|
|
|
|
commentList.value = [];
|
|
|
|
commentList.value = [];
|
|
|
|
highlightList.value = []
|
|
|
|
highlightList.value = [];
|
|
|
|
mediaList.value = [];
|
|
|
|
mediaList.value = [];
|
|
|
|
starList.value = []
|
|
|
|
starList.value = [];
|
|
|
|
pageType.value = "post";
|
|
|
|
pageType.value = 'post';
|
|
|
|
page.value = 1;
|
|
|
|
page.value = 1;
|
|
|
|
postPage.value = 1;
|
|
|
|
postPage.value = 1;
|
|
|
|
commentPage.value = 1;
|
|
|
|
commentPage.value = 1;
|
|
|
|
@ -362,19 +380,19 @@ const reset = () => {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const loadPage = () => {
|
|
|
|
const loadPage = () => {
|
|
|
|
switch (pageType.value) {
|
|
|
|
switch (pageType.value) {
|
|
|
|
case "post":
|
|
|
|
case 'post':
|
|
|
|
loadPosts();
|
|
|
|
loadPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "comment":
|
|
|
|
case 'comment':
|
|
|
|
loadCommentPosts();
|
|
|
|
loadCommentPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "highlight":
|
|
|
|
case 'highlight':
|
|
|
|
loadHighlightPosts();
|
|
|
|
loadHighlightPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "media":
|
|
|
|
case 'media':
|
|
|
|
loadMediaPosts();
|
|
|
|
loadMediaPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "star":
|
|
|
|
case 'star':
|
|
|
|
loadStarPosts();
|
|
|
|
loadStarPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -383,14 +401,14 @@ const loadPosts = () => {
|
|
|
|
loading.value = true;
|
|
|
|
loading.value = true;
|
|
|
|
getUserPosts({
|
|
|
|
getUserPosts({
|
|
|
|
username: username.value as string,
|
|
|
|
username: username.value as string,
|
|
|
|
style: "post",
|
|
|
|
style: 'post',
|
|
|
|
page: page.value,
|
|
|
|
page: page.value,
|
|
|
|
page_size: pageSize.value,
|
|
|
|
page_size: pageSize.value,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.then((rsp) => {
|
|
|
|
.then((rsp) => {
|
|
|
|
loading.value = false;
|
|
|
|
loading.value = false;
|
|
|
|
if (rsp.list.length === 0) {
|
|
|
|
if (rsp.list.length === 0) {
|
|
|
|
noMore.value = true
|
|
|
|
noMore.value = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (page.value > 1) {
|
|
|
|
if (page.value > 1) {
|
|
|
|
list.value = list.value.concat(rsp.list);
|
|
|
|
list.value = list.value.concat(rsp.list);
|
|
|
|
@ -414,14 +432,14 @@ const loadCommentPosts = () => {
|
|
|
|
loading.value = true;
|
|
|
|
loading.value = true;
|
|
|
|
getUserPosts({
|
|
|
|
getUserPosts({
|
|
|
|
username: username.value as string,
|
|
|
|
username: username.value as string,
|
|
|
|
style: "comment",
|
|
|
|
style: 'comment',
|
|
|
|
page: page.value,
|
|
|
|
page: page.value,
|
|
|
|
page_size: pageSize.value,
|
|
|
|
page_size: pageSize.value,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.then((rsp) => {
|
|
|
|
.then((rsp) => {
|
|
|
|
loading.value = false;
|
|
|
|
loading.value = false;
|
|
|
|
if (rsp.list.length === 0) {
|
|
|
|
if (rsp.list.length === 0) {
|
|
|
|
noMore.value = true
|
|
|
|
noMore.value = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (page.value > 1) {
|
|
|
|
if (page.value > 1) {
|
|
|
|
list.value = list.value.concat(rsp.list);
|
|
|
|
list.value = list.value.concat(rsp.list);
|
|
|
|
@ -445,14 +463,14 @@ const loadHighlightPosts = () => {
|
|
|
|
loading.value = true;
|
|
|
|
loading.value = true;
|
|
|
|
getUserPosts({
|
|
|
|
getUserPosts({
|
|
|
|
username: username.value as string,
|
|
|
|
username: username.value as string,
|
|
|
|
style: "highlight",
|
|
|
|
style: 'highlight',
|
|
|
|
page: page.value,
|
|
|
|
page: page.value,
|
|
|
|
page_size: pageSize.value,
|
|
|
|
page_size: pageSize.value,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.then((rsp) => {
|
|
|
|
.then((rsp) => {
|
|
|
|
loading.value = false;
|
|
|
|
loading.value = false;
|
|
|
|
if (rsp.list.length === 0) {
|
|
|
|
if (rsp.list.length === 0) {
|
|
|
|
noMore.value = true
|
|
|
|
noMore.value = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (page.value > 1) {
|
|
|
|
if (page.value > 1) {
|
|
|
|
list.value = list.value.concat(rsp.list);
|
|
|
|
list.value = list.value.concat(rsp.list);
|
|
|
|
@ -476,7 +494,7 @@ const loadMediaPosts = () => {
|
|
|
|
loading.value = true;
|
|
|
|
loading.value = true;
|
|
|
|
getUserPosts({
|
|
|
|
getUserPosts({
|
|
|
|
username: username.value as string,
|
|
|
|
username: username.value as string,
|
|
|
|
style: "media",
|
|
|
|
style: 'media',
|
|
|
|
page: page.value,
|
|
|
|
page: page.value,
|
|
|
|
page_size: pageSize.value,
|
|
|
|
page_size: pageSize.value,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
@ -507,14 +525,14 @@ const loadStarPosts = () => {
|
|
|
|
loading.value = true;
|
|
|
|
loading.value = true;
|
|
|
|
getUserPosts({
|
|
|
|
getUserPosts({
|
|
|
|
username: username.value as string,
|
|
|
|
username: username.value as string,
|
|
|
|
style: "star",
|
|
|
|
style: 'star',
|
|
|
|
page: page.value,
|
|
|
|
page: page.value,
|
|
|
|
page_size: pageSize.value,
|
|
|
|
page_size: pageSize.value,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.then((rsp) => {
|
|
|
|
.then((rsp) => {
|
|
|
|
loading.value = false;
|
|
|
|
loading.value = false;
|
|
|
|
if (rsp.list.length === 0) {
|
|
|
|
if (rsp.list.length === 0) {
|
|
|
|
noMore.value = true
|
|
|
|
noMore.value = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (page.value > 1) {
|
|
|
|
if (page.value > 1) {
|
|
|
|
list.value = list.value.concat(rsp.list);
|
|
|
|
list.value = list.value.concat(rsp.list);
|
|
|
|
@ -534,34 +552,36 @@ const loadStarPosts = () => {
|
|
|
|
loading.value = false;
|
|
|
|
loading.value = false;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const changeTab = (tab: "post" | "comment" | "highlight" | "media" | "star") => {
|
|
|
|
const changeTab = (
|
|
|
|
|
|
|
|
tab: 'post' | 'comment' | 'highlight' | 'media' | 'star',
|
|
|
|
|
|
|
|
) => {
|
|
|
|
pageType.value = tab;
|
|
|
|
pageType.value = tab;
|
|
|
|
switch (pageType.value) {
|
|
|
|
switch (pageType.value) {
|
|
|
|
case "post":
|
|
|
|
case 'post':
|
|
|
|
list.value = postList.value;
|
|
|
|
list.value = postList.value;
|
|
|
|
page.value = postPage.value;
|
|
|
|
page.value = postPage.value;
|
|
|
|
totalPage.value = postTotalPage.value;
|
|
|
|
totalPage.value = postTotalPage.value;
|
|
|
|
loadPosts();
|
|
|
|
loadPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "comment":
|
|
|
|
case 'comment':
|
|
|
|
list.value = commentList.value;
|
|
|
|
list.value = commentList.value;
|
|
|
|
page.value = commentPage.value;
|
|
|
|
page.value = commentPage.value;
|
|
|
|
totalPage.value = commentTotalPage.value;
|
|
|
|
totalPage.value = commentTotalPage.value;
|
|
|
|
loadCommentPosts();
|
|
|
|
loadCommentPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "highlight":
|
|
|
|
case 'highlight':
|
|
|
|
list.value = highlightList.value;
|
|
|
|
list.value = highlightList.value;
|
|
|
|
page.value = highlightPage.value;
|
|
|
|
page.value = highlightPage.value;
|
|
|
|
totalPage.value = highlightTotalPage.value;
|
|
|
|
totalPage.value = highlightTotalPage.value;
|
|
|
|
loadHighlightPosts();
|
|
|
|
loadHighlightPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "media":
|
|
|
|
case 'media':
|
|
|
|
list.value = mediaList.value;
|
|
|
|
list.value = mediaList.value;
|
|
|
|
page.value = mediaPage.value;
|
|
|
|
page.value = mediaPage.value;
|
|
|
|
totalPage.value = mediaTotalPage.value;
|
|
|
|
totalPage.value = mediaTotalPage.value;
|
|
|
|
loadMediaPosts();
|
|
|
|
loadMediaPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "star":
|
|
|
|
case 'star':
|
|
|
|
list.value = starList.value;
|
|
|
|
list.value = starList.value;
|
|
|
|
page.value = starPage.value;
|
|
|
|
page.value = starPage.value;
|
|
|
|
totalPage.value = starTotalPage.value;
|
|
|
|
totalPage.value = starTotalPage.value;
|
|
|
|
@ -599,23 +619,23 @@ const loadUser = () => {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const updatePage = () => {
|
|
|
|
const updatePage = () => {
|
|
|
|
switch (pageType.value) {
|
|
|
|
switch (pageType.value) {
|
|
|
|
case "post":
|
|
|
|
case 'post':
|
|
|
|
postPage.value = page.value;
|
|
|
|
postPage.value = page.value;
|
|
|
|
loadPosts();
|
|
|
|
loadPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "comment":
|
|
|
|
case 'comment':
|
|
|
|
commentPage.value = page.value;
|
|
|
|
commentPage.value = page.value;
|
|
|
|
loadCommentPosts();
|
|
|
|
loadCommentPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "highlight":
|
|
|
|
case 'highlight':
|
|
|
|
highlightPage.value = page.value;
|
|
|
|
highlightPage.value = page.value;
|
|
|
|
loadHighlightPosts();
|
|
|
|
loadHighlightPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "media":
|
|
|
|
case 'media':
|
|
|
|
mediaPage.value = page.value;
|
|
|
|
mediaPage.value = page.value;
|
|
|
|
loadMediaPosts();
|
|
|
|
loadMediaPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case "star":
|
|
|
|
case 'star':
|
|
|
|
starPage.value = page.value;
|
|
|
|
starPage.value = page.value;
|
|
|
|
loadStarPosts();
|
|
|
|
loadStarPosts();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
@ -636,35 +656,39 @@ const addFriendWhisperSuccess = () => {
|
|
|
|
const renderIcon = (icon: Component) => {
|
|
|
|
const renderIcon = (icon: Component) => {
|
|
|
|
return () => {
|
|
|
|
return () => {
|
|
|
|
return h(NIcon, null, {
|
|
|
|
return h(NIcon, null, {
|
|
|
|
default: () => h(icon)
|
|
|
|
default: () => h(icon),
|
|
|
|
})
|
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
const userOptions = computed(() => {
|
|
|
|
const userOptions = computed(() => {
|
|
|
|
if (store.state.userInfo.username == user.username) {
|
|
|
|
if (store.state.userInfo.username == user.username) {
|
|
|
|
return [{
|
|
|
|
return [
|
|
|
|
|
|
|
|
{
|
|
|
|
label: '设置',
|
|
|
|
label: '设置',
|
|
|
|
key: 'setting',
|
|
|
|
key: 'setting',
|
|
|
|
icon: renderIcon(SettingsOutline)
|
|
|
|
icon: renderIcon(SettingsOutline),
|
|
|
|
}];
|
|
|
|
},
|
|
|
|
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
let options: DropdownOption[] = [{
|
|
|
|
let options: DropdownOption[] = [
|
|
|
|
|
|
|
|
{
|
|
|
|
label: '私信',
|
|
|
|
label: '私信',
|
|
|
|
key: 'whisper',
|
|
|
|
key: 'whisper',
|
|
|
|
icon: renderIcon(PaperPlaneOutline)
|
|
|
|
icon: renderIcon(PaperPlaneOutline),
|
|
|
|
}];
|
|
|
|
},
|
|
|
|
|
|
|
|
];
|
|
|
|
if (store.state.userInfo.is_admin) {
|
|
|
|
if (store.state.userInfo.is_admin) {
|
|
|
|
if (user.status === 1) {
|
|
|
|
if (user.status === 1) {
|
|
|
|
options.push({
|
|
|
|
options.push({
|
|
|
|
label: '禁言',
|
|
|
|
label: '禁言',
|
|
|
|
key: 'banned',
|
|
|
|
key: 'banned',
|
|
|
|
icon: renderIcon(CubeOutline)
|
|
|
|
icon: renderIcon(CubeOutline),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
options.push({
|
|
|
|
options.push({
|
|
|
|
label: '解封',
|
|
|
|
label: '解封',
|
|
|
|
key: 'deblocking',
|
|
|
|
key: 'deblocking',
|
|
|
|
icon: renderIcon(CubeOutline)
|
|
|
|
icon: renderIcon(CubeOutline),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -672,34 +696,42 @@ const userOptions = computed(() => {
|
|
|
|
options.push({
|
|
|
|
options.push({
|
|
|
|
label: '取消关注',
|
|
|
|
label: '取消关注',
|
|
|
|
key: 'unfollow',
|
|
|
|
key: 'unfollow',
|
|
|
|
icon: renderIcon(WalkOutline)
|
|
|
|
icon: renderIcon(WalkOutline),
|
|
|
|
})
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
options.push({
|
|
|
|
options.push({
|
|
|
|
label: '关注',
|
|
|
|
label: '关注',
|
|
|
|
key: 'follow',
|
|
|
|
key: 'follow',
|
|
|
|
icon: renderIcon(BodyOutline)
|
|
|
|
icon: renderIcon(BodyOutline),
|
|
|
|
})
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (store.state.profile.useFriendship) {
|
|
|
|
if (store.state.profile.useFriendship) {
|
|
|
|
if (user.is_friend) {
|
|
|
|
if (user.is_friend) {
|
|
|
|
options.push({
|
|
|
|
options.push({
|
|
|
|
label: '删除好友',
|
|
|
|
label: '删除好友',
|
|
|
|
key: 'delete',
|
|
|
|
key: 'delete',
|
|
|
|
icon: renderIcon(PersonRemoveOutline)
|
|
|
|
icon: renderIcon(PersonRemoveOutline),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
options.push({
|
|
|
|
options.push({
|
|
|
|
label: '添加朋友',
|
|
|
|
label: '添加朋友',
|
|
|
|
key: 'requesting',
|
|
|
|
key: 'requesting',
|
|
|
|
icon: renderIcon(PersonAddOutline)
|
|
|
|
icon: renderIcon(PersonAddOutline),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return options;
|
|
|
|
return options;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
const handleUserAction = (
|
|
|
|
const handleUserAction = (
|
|
|
|
item: 'whisper' | 'follow' | 'unfollow' | 'delete' | 'requesting' | 'banned' | 'deblocking' | 'setting'
|
|
|
|
item:
|
|
|
|
|
|
|
|
| 'whisper'
|
|
|
|
|
|
|
|
| 'follow'
|
|
|
|
|
|
|
|
| 'unfollow'
|
|
|
|
|
|
|
|
| 'delete'
|
|
|
|
|
|
|
|
| 'requesting'
|
|
|
|
|
|
|
|
| 'banned'
|
|
|
|
|
|
|
|
| 'deblocking'
|
|
|
|
|
|
|
|
| 'setting',
|
|
|
|
) => {
|
|
|
|
) => {
|
|
|
|
switch (item) {
|
|
|
|
switch (item) {
|
|
|
|
case 'whisper':
|
|
|
|
case 'whisper':
|
|
|
|
@ -723,7 +755,7 @@ const handleUserAction = (
|
|
|
|
router.push({
|
|
|
|
router.push({
|
|
|
|
name: 'setting',
|
|
|
|
name: 'setting',
|
|
|
|
query: {
|
|
|
|
query: {
|
|
|
|
t: (new Date().getTime())
|
|
|
|
t: new Date().getTime(),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
@ -734,7 +766,10 @@ const handleUserAction = (
|
|
|
|
const openDeleteFriend = () => {
|
|
|
|
const openDeleteFriend = () => {
|
|
|
|
dialog.warning({
|
|
|
|
dialog.warning({
|
|
|
|
title: '删除好友',
|
|
|
|
title: '删除好友',
|
|
|
|
content: '将好友 “' + user.nickname + '” 删除,将同时删除 点赞/收藏 列表中关于该朋友的 “好友可见” 推文',
|
|
|
|
content:
|
|
|
|
|
|
|
|
'将好友 “' +
|
|
|
|
|
|
|
|
user.nickname +
|
|
|
|
|
|
|
|
'” 删除,将同时删除 点赞/收藏 列表中关于该朋友的 “好友可见” 推文',
|
|
|
|
positiveText: '确定',
|
|
|
|
positiveText: '确定',
|
|
|
|
negativeText: '取消',
|
|
|
|
negativeText: '取消',
|
|
|
|
onPositiveClick: () => {
|
|
|
|
onPositiveClick: () => {
|
|
|
|
@ -744,7 +779,7 @@ const openDeleteFriend = () => {
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.then((res) => {
|
|
|
|
.then((res) => {
|
|
|
|
userLoading.value = false;
|
|
|
|
userLoading.value = false;
|
|
|
|
user.is_friend = false
|
|
|
|
user.is_friend = false;
|
|
|
|
loadPosts();
|
|
|
|
loadPosts();
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.catch((err) => {
|
|
|
|
.catch((err) => {
|
|
|
|
@ -758,7 +793,10 @@ const handleFollowUser = () => {
|
|
|
|
dialog.success({
|
|
|
|
dialog.success({
|
|
|
|
title: '提示',
|
|
|
|
title: '提示',
|
|
|
|
content:
|
|
|
|
content:
|
|
|
|
'确定' + (user.is_following ? '取消关注 @' : '关注 @') + user.username + ' 吗?',
|
|
|
|
'确定' +
|
|
|
|
|
|
|
|
(user.is_following ? '取消关注 @' : '关注 @') +
|
|
|
|
|
|
|
|
user.username +
|
|
|
|
|
|
|
|
' 吗?',
|
|
|
|
positiveText: '确定',
|
|
|
|
positiveText: '确定',
|
|
|
|
negativeText: '取消',
|
|
|
|
negativeText: '取消',
|
|
|
|
onPositiveClick: () => {
|
|
|
|
onPositiveClick: () => {
|
|
|
|
@ -766,7 +804,8 @@ const handleFollowUser = () => {
|
|
|
|
if (user.is_following) {
|
|
|
|
if (user.is_following) {
|
|
|
|
unfollowUser({
|
|
|
|
unfollowUser({
|
|
|
|
user_id: user.id,
|
|
|
|
user_id: user.id,
|
|
|
|
}).then((_res) => {
|
|
|
|
})
|
|
|
|
|
|
|
|
.then((_res) => {
|
|
|
|
userLoading.value = false;
|
|
|
|
userLoading.value = false;
|
|
|
|
window.$message.success('操作成功');
|
|
|
|
window.$message.success('操作成功');
|
|
|
|
loadUser();
|
|
|
|
loadUser();
|
|
|
|
@ -778,7 +817,8 @@ const handleFollowUser = () => {
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
followUser({
|
|
|
|
followUser({
|
|
|
|
user_id: user.id,
|
|
|
|
user_id: user.id,
|
|
|
|
}).then((_res) => {
|
|
|
|
})
|
|
|
|
|
|
|
|
.then((_res) => {
|
|
|
|
userLoading.value = false;
|
|
|
|
userLoading.value = false;
|
|
|
|
window.$message.success('操作成功');
|
|
|
|
window.$message.success('操作成功');
|
|
|
|
loadUser();
|
|
|
|
loadUser();
|
|
|
|
@ -795,9 +835,7 @@ const banUser = () => {
|
|
|
|
dialog.warning({
|
|
|
|
dialog.warning({
|
|
|
|
title: '警告',
|
|
|
|
title: '警告',
|
|
|
|
content:
|
|
|
|
content:
|
|
|
|
'确定对该用户进行' +
|
|
|
|
'确定对该用户进行' + (user.status === 1 ? '禁言' : '解封') + '处理吗?',
|
|
|
|
(user.status === 1 ? '禁言' : '解封') +
|
|
|
|
|
|
|
|
'处理吗?',
|
|
|
|
|
|
|
|
positiveText: '确定',
|
|
|
|
positiveText: '确定',
|
|
|
|
negativeText: '取消',
|
|
|
|
negativeText: '取消',
|
|
|
|
onPositiveClick: () => {
|
|
|
|
onPositiveClick: () => {
|
|
|
|
@ -845,7 +883,7 @@ watch(
|
|
|
|
reset();
|
|
|
|
reset();
|
|
|
|
loadUser();
|
|
|
|
loadUser();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
);
|
|
|
|
);
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|