Files
myplayer-vue/src/views/home/search.vue
2025-10-16 15:54:37 +08:00

186 lines
5.3 KiB
Vue

<template>
<div class="box">
<el-row style="height: 50%;">
<el-col :span="24">
<h1>搜索好友</h1>
</el-col>
<el-col :span="24">
<el-input v-model="inputValue" style="width: 80%" size="large" placeholder="Please Input" clearable
:prefix-icon="Search" @keyup.enter="searchFriend" />
<el-button class="search" size="large" @click="searchFriend">搜索</el-button>
</el-col>
<el-col :span="24">
<el-table :data="friendSearchResult" style="width: 100%;height: 200px;">
<el-table-column prop="u_avatar" label="" width="100">
<template #default="scope">
<!-- 使用 el-avatar 组件显示头像 -->
<el-avatar :src="friendSearchResult[scope.$index].u_avatar" size="large" />
</template>
</el-table-column>
<el-table-column prop="u_name" label="姓名" width="125"></el-table-column>
<el-table-column prop="u_id" label="id" width="125"></el-table-column>
<el-table-column prop="u_introduction" label="个性签名" width="200"></el-table-column>
<el-table-column>
<template #default="scope">
<el-button @click="addFriend(scope.row.u_id)">添加好友</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<el-row style="height: 50%;">
<el-col :span="24">
<h1>搜索playRoom</h1>
</el-col>
<el-col :span="24">
<el-input v-model="inputValue1" style="width: 80%" size="large" placeholder="Please Input" clearable
:prefix-icon="Search" @keyup.enter="searchPlayRoom" />
<el-button class="search" size="large" @click="searchPlayRoom">搜索</el-button>
</el-col>
<el-col :span="24">
<el-table :data="roomSearchResult" style="width: 100%;height: 200px;">
<el-table-column prop="r_avatar" label="" width="100">
<template #default="scope">
<!-- 使用 el-avatar 组件显示头像 -->
<el-avatar :src="roomSearchResult[scope.$index].r_avatar" size="large" />
</template>
</el-table-column>
<el-table-column prop="r_name" label="姓名" width="125"></el-table-column>
<el-table-column prop="r_id" label="id" width="125"></el-table-column>
<el-table-column prop="r_introduction" label="个性签名" width="200"></el-table-column>
<el-table-column>
<template #default="scope">
<el-button @click="joinRoom(scope.row.r_id)">加入房间</el-button>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { Search } from '@element-plus/icons-vue'
import axios from 'axios'
import { userInfoStore } from '@/store/store'
import { onlineSocketStore } from '@/store/Online'
import { ElMessage } from 'element-plus'
const socket = onlineSocketStore()
const inputValue = ref('')
const inputValue1 = ref('')
const userinfo = userInfoStore()
const friendSearchResult = ref([])
const roomSearchResult = ref([])
// 定义回车键的处理函数
const searchFriend = () => {
console.log(inputValue.value);
axios({
headers: {
'Authorization': userinfo.token
},
method: 'GET',
url: '/api/friend/searchuser',
params: {
u_name: inputValue.value
}
}).then((response) => {
if (response.data.code === 200) {
friendSearchResult.value = response.data.data
console.log(friendSearchResult.value)
}
})
};
//搜索playRoom
const searchPlayRoom = () => {
axios({
headers: {
'Content-Type': 'application/json',
'Authorization': userinfo.token
},
method: 'GET',
url: '/api/room/search',
params: {
r_name: inputValue1.value
}
}).then((response) => {
if (response.data.code === 200) {
roomSearchResult.value = response.data.data
console.log(roomSearchResult.value)
}
})
inputValue1.value = ''
}
//添加好友逻辑
const addFriend = (u_id) => {
axios({
headers: {
'Authorization': userinfo.token
},
method: 'POST',
url: '/api/inviting/sendinviting',
data: {
inviter: userinfo.user.u_id,
target: u_id
}
}).then((response) => {
if (response.data.code === 200) {
ElMessage.success('已发送申请,等待对方处理')
const message = {
message: false,
system: false,
target: u_id,
sender_name: userinfo.user.u_name
}
socket.send(JSON.stringify(message))
}
else {
ElMessage.error('发送失败,请稍后再试 msg:' + response.data.msg)
}
})
}
//加入房间申请逻辑
const joinRoom = (r_id) => {
axios({
headers: {
'Authorization': userinfo.token,
},
url: '/api/inviting/sendinviting',
method: 'POST',
data: {
inviter: userinfo.user.u_id,
target: userinfo.user.u_id,
room: r_id
}
}).then((response) => {
if (response.data.code === 200) {
ElMessage.success("请求发送成功,请耐心等待审核")
}
else if (response.data.code === 500) {
ElMessage.error("请勿重复发送!")
}
})
}
</script>
<style>
.box {
width: 100%;
}
.search {
margin-left: 15px;
}
</style>