diff --git a/src/apis.js b/src/apis.js
index e463b14..b5f48b8 100644
--- a/src/apis.js
+++ b/src/apis.js
@@ -558,3 +558,10 @@ export const getBattleAPI = async (battleId) => {
id: battleId,
});
};
+
+export const kickPlayerAPI = (number, userId) => {
+ return request("POST", "/user/room/kicking", {
+ number,
+ userId,
+ });
+};
diff --git a/src/components/PlayerSeats.vue b/src/components/PlayerSeats.vue
index 44f86be..cb4c14f 100644
--- a/src/components/PlayerSeats.vue
+++ b/src/components/PlayerSeats.vue
@@ -80,6 +80,7 @@ const seats = new Array(props.total).fill(1);
height: 100%;
position: absolute;
z-index: -1;
+ top: 0;
}
.avatar {
display: flex;
@@ -110,7 +111,8 @@ const seats = new Array(props.total).fill(1);
.founder {
position: absolute;
background-color: #fed847;
- top: 6px;
+ top: 0;
+ left: 0;
color: #000;
font-size: 10px;
padding: 2px 5px;
diff --git a/src/pages/battle-room.vue b/src/pages/battle-room.vue
index 038a7a2..e520248 100644
--- a/src/pages/battle-room.vue
+++ b/src/pages/battle-room.vue
@@ -14,6 +14,7 @@ import {
startRoomAPI,
chooseTeamAPI,
getReadyAPI,
+ kickPlayerAPI,
} from "@/apis";
import { MESSAGETYPES, MESSAGETYPESV2 } from "@/constants";
@@ -43,6 +44,8 @@ async function refreshRoomData() {
if (result.started) return;
room.value = result;
battleType.value = result.battleType;
+ owner.value = {};
+ opponent.value = {};
const members = result.members || [];
if (members.length === result.count) {
allReady.value = members.every((m) => !!m.userInfo.state);
@@ -132,7 +135,17 @@ async function onReceiveMessage(message) {
if (msg.constructor === MESSAGETYPES.UserEnterRoom) {
refreshRoomData();
} else if (msg.constructor === MESSAGETYPES.UserExitRoom) {
- refreshRoomData();
+ if (msg.userId === user.value.id) {
+ uni.showToast({
+ title: "你被踢出房间",
+ icon: "none",
+ });
+ setTimeout(() => {
+ uni.navigateBack();
+ }, 1000);
+ } else {
+ refreshRoomData();
+ }
} else if (msg.constructor === MESSAGETYPES.TeamUpdate) {
refreshRoomData();
} else if (msg.constructor === MESSAGETYPES.SomeoneIsReady) {
@@ -176,7 +189,9 @@ const exitRoom = async () => {
uni.navigateBack();
};
-const removePlayer = async (player) => {};
+const removePlayer = async (player) => {
+ await kickPlayerAPI(roomNumber.value, player.id);
+};
onShareAppMessage(() => {
return {
@@ -262,6 +277,7 @@ onBeforeUnmount(() => {
}}
{{ opponent.name }}