修复用户搜索问题,添加用户接受好友

This commit is contained in:
junleea 2024-08-09 21:24:39 +08:00
parent 2ac513bda8
commit b98d3313f5
2 changed files with 221 additions and 14 deletions

View File

@ -40,6 +40,30 @@ export const getUUIDService = (registerData) => {
return request.post('/user/uuid', params)
}
export const getFriendReqService = (Data) => {
const params = new URLSearchParams();
for (let key in Data) {
params.append(key, Data[key])
}
return request.post('/im/get_friend_request', params, {
headers: {
'token': Data.token, // 将 token 替换为您的令牌值
}
})
}
export const acceptInviteService =(Data)=> {
const params = new URLSearchParams();
for (let key in Data) {
params.append(key, Data[key])
}
return request.post('/im/accept_invite', params, {
headers: {
'token': Data.token, // 将 token 替换为您的令牌值
}
})
}
export const SearchUserService = (Data) => {
const params = new URLSearchParams();
for (let key in Data) {

View File

@ -1,8 +1,11 @@
<script>
import axios from "axios";
import { SearchUserService } from "@/api/user.js";
import { getFriendReqService } from "@/api/user.js";
import {acceptInviteService } from "@/api/user.js";
import router from "@/router/index.js";
import Cookies from "js-cookie";
import { getFriendListService } from "@/api/chat.js";
import {sendMessageService} from "@/api/chat.js";
import { ElMessage } from 'element-plus';
export default {
@ -12,6 +15,11 @@ export default {
tableData: [],
search_id: 2002,
keyword: "",
FriendsRequestIsDisplay:false,
FriendsGRequestList:[],
FriendsTableIsDisplay:false,
FriendsGList:[],
GroupList:[],
tokenData: {
token: localStorage.getItem("token"),
ip: localStorage.getItem("ip"),
@ -29,11 +37,23 @@ export default {
async getUserList() {
let result = {};
try {
if(this.search_id === "" || this.search_id === null){
this.search_id = -1;
//search_id
if(isNaN(this.search_id)){
//
this.keyword = this.search_id;
this.tokenData.id = -1;
this.tokenData.keyword = this.keyword;
}else if(isFinite(this.search_id)){
//ID
this.tokenData.id = this.search_id;
this.tokenData.keyword = "";
}else{
//
ElMessage.error("输入错误,请输入数字或者关键字");
return;
}
this.tokenData.id = this.search_id;
this.tokenData.keyword = this.keyword;
Cookies.set("search_id", this.search_id);
Cookies.set("keyword", this.keyword);
result = await SearchUserService(this.tokenData);
@ -64,6 +84,89 @@ export default {
console.log(e);
}
},
//
async displayFriends(){
let result ={}
try{
result = await getFriendListService(this.tokenData);
if(result.code ===0){
this.FriendsGList = result.data.friends;
this.GroupList=result.data.groups;
this.FriendsTableIsDisplay = true;
}else{
ElMessage.error("获取好友列表失败");
}
}catch(e){
console.log(e);
}
},
//
async DelFriendsOrGroup(index){
var id = this.FriendsGList[index].id;
var name = this.FriendsGList[index].name;
let result ={}
try{
result =await sendMessageService({
token: localStorage.getItem("token"),
from_user_id: localStorage.getItem("userId"),
to_user_id: id,
msg: "删除好友",
type: 5,
});
if(result.code ===0){
ElMessage.success("删除好友成功");
this.displayFriends();
}else{
ElMessage.error("删除好友失败");
}
}catch(e){
console.log(e);
}
},
//
async AcceptFriendsOrGroup(index){
var id = this.FriendsGRequestList[index].id;
var im_id = this.FriendsGRequestList[index].im_id;
var name = this.FriendsGRequestList[index].name;
let result ={}
try{
result =await acceptInviteService({
token: localStorage.getItem("token"),
id: im_id,
from_user_id: localStorage.getItem("userId"),
to_user_id: id,
msg: "接受好友请求",
index: 1,
type: 4,
});
if(result.code ===0){
ElMessage.success("接受好友请求成功");
this.displayFriendReq()
}else{
ElMessage.error("接受好友请求失败");
}
}catch(e){
console.log(e);
}
},
//
async displayFriendReq(){
let result ={}
try{
result =await getFriendReqService(this.tokenData)
if(result.code ===0){
this.FriendsGRequestList = result.data;
this.FriendsRequestIsDisplay = true;
}else{
ElMessage.error("获取好友请求列表失败");
}
}catch(e){
console.log(e);
}
},
onSubmit() {
getUserList({ token: token });
},
@ -155,29 +258,33 @@ export default {
>
<el-container>
<el-main>
<el-col :span="8">
<el-form :inline="true" :model="tokenData" class="demo-form-inline">
<el-col :span="8">
<!-- 搜索与添加区域 -->
<el-input
placeholder="请输入ID"
placeholder="请输入ID或关键字"
v-model="search_id"
clearable
@clear="getUserList"
>
</el-input>
<el-input
placeholder="请输入关键字"
v-model="keyword"
clearable
@clear="getUserList"
>
</el-input>
<template #append>
<el-button @click="getUserList"
><el-icon><search /></el-icon
></el-button>
</template>
</el-col>
<!-- 表单 -->
<el-form-item>
<el-button type="primary" @click="displayFriends()"
>好友列表</el-button
>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="displayFriendReq()"
>好友请求</el-button
>
</el-form-item>
<!-- 表单 -->
<el-form :inline="true" :model="tokenData" class="demo-form-inline">
<el-form-item>
<el-button
@ -188,6 +295,82 @@ export default {
>
</el-form-item>
</el-form>
</el-form>
<el-dialog
title="好友请求"
width="50%"
v-model="FriendsRequestIsDisplay"
center>
<el-table :data="FriendsGRequestList" width="100%">
<el-table-column prop="id" label="id" width="80"></el-table-column>
<el-table-column
prop="name"
label="名称"
width="100"
></el-table-column>
<el-table-column
prop="email"
label="用户邮箱"
width="180"
></el-table-column>
<el-table-column
prop="age"
label="用户Age"
width="120"
></el-table-column>
<el-table-column>
<template #default="scope">
<el-button
type="primary"
size="mini"
@click.prevent="AcceptFriendsOrGroup(scope.$index)"
>同意请求</el-button
>
<el-button
type="primary"
size="mini"
@click.prevent="RefuseFriendsOrGroup(scope.$index)"
>拒绝请求</el-button>
</template>
</el-table-column>
</el-table>
</el-dialog>
<el-dialog
title="用户好友"
width="40%"
v-model="FriendsTableIsDisplay"
center>
<el-table :data="FriendsGList" width="100%">
<el-table-column prop="id" label="id" width="80"></el-table-column>
<el-table-column
prop="name"
label="名称"
width="100"
></el-table-column>
<el-table-column
prop="email"
label="用户邮箱"
width="180"
></el-table-column>
<el-table-column>
<template #default="scope">
<el-button
type="primary"
size="mini"
@click.prevent="DelFriendsOrGroup(scope.$index)"
>删除好友或群组</el-button
>
</template>
</el-table-column>
</el-table>
</el-dialog>
<!-- 表格 :row-style="this.tableRowClassName"-->
<el-table :data="tableData" width="100%" border>