From 8c48216a75f03aa252716d089ec15b1c8f4d5856 Mon Sep 17 00:00:00 2001
From: linyimin <18316471919@139.com>
Date: Mon, 20 Apr 2026 17:43:38 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A5=BD=E5=8F=8B=E7=BA=A6=E6=88=98?=
=?UTF-8?q?=E9=80=89=E6=8B=A920=E3=80=8140=E5=8E=98=E7=B1=B3=E9=9D=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/apis.js | 3 +-
src/components/CreateRoom.vue | 76 +++++++++++++++++++++++++++++++++--
src/components/SModal.vue | 1 +
src/pages/friend-battle.vue | 2 +-
4 files changed, 77 insertions(+), 5 deletions(-)
diff --git a/src/apis.js b/src/apis.js
index 243c34c..fa8e4f6 100644
--- a/src/apis.js
+++ b/src/apis.js
@@ -216,10 +216,11 @@ export const getPractiseAPI = async (id) => {
return request("GET", `/user/practice/get?id=${id}`);
};
-export const createRoomAPI = (gameType, teamSize) => {
+export const createRoomAPI = (gameType, teamSize, targetType) => {
return request("POST", "/user/createroom", {
gameType,
teamSize,
+ targetType,
});
};
diff --git a/src/components/CreateRoom.vue b/src/components/CreateRoom.vue
index 549b9ab..e34d7d7 100644
--- a/src/components/CreateRoom.vue
+++ b/src/components/CreateRoom.vue
@@ -18,6 +18,7 @@ const props = defineProps({
});
const battleMode = ref(1);
+const targetMode = ref(1);
const loading = ref(false);
const roomNumber = ref("");
@@ -35,13 +36,14 @@ const createRoom = debounce(async () => {
try {
const result = await createRoomAPI(
battleMode.value === 2 ? 2 : 1,
- battleMode.value === 2 ? 10 : size
+ battleMode.value === 2 ? 10 : size,
+ targetMode.value*20,
);
if (result.number) {
props.onConfirm();
await joinRoomAPI(result.number);
uni.navigateTo({
- url: "/pages/battle-room?roomNumber=" + result.number,
+ url: "/pages/battle-room?roomNumber=" + result.number + "&target=" + targetMode.value,
});
}
} catch (error) {
@@ -53,7 +55,11 @@ const createRoom = debounce(async () => {
-
+
{
乱斗模式(3-10人)
+
+
+ (targetMode = 1)"
+ >
+ 20厘米全环靶
+
+ (targetMode = 2)"
+ >
+ 40厘米全环靶
+
+
创建房间
@@ -91,6 +116,7 @@ const createRoom = debounce(async () => {
display: flex;
flex-direction: column;
align-items: center;
+ padding-top: 44rpx;
}
.container > image:first-child {
width: 45%;
@@ -105,6 +131,50 @@ const createRoom = debounce(async () => {
justify-content: center;
margin-bottom: 15px;
}
+.target-options-header{
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 24rpx;
+}
+.target-options-header-title-img{
+ width: 196rpx;
+ height: 40rpx;
+}
+.target-options-header-title{
+ width: 112rpx;
+ height: 40rpx;
+ font-family: PingFang SC, PingFang SC;
+ font-weight: 400;
+ font-size: 28rpx;
+ text-align: center;
+ font-style: normal;
+ text-transform: none;
+ color: #FFEFBA;
+ margin: 0 18rpx;
+}
+.target-options-header-line-left{
+ width: 214rpx;
+ height: 0rpx;
+ border-radius: 0rpx 0rpx 0rpx 0rpx;
+ border: 1rpx solid;
+ border-image: linear-gradient(90deg, rgba(133, 119, 96, 0), rgba(133, 119, 96, 1)) 1 1;
+}
+.target-options-header-line-right{
+ width: 214rpx;
+ height: 0rpx;
+ border-radius: 0rpx 0rpx 0rpx 0rpx;
+ border: 1rpx solid;
+ border-image: linear-gradient(90deg, rgba(133, 119, 96, 1), rgba(133, 119, 96, 0)) 1 1;
+}
+.target-options {
+ width: 100%;
+ padding: 0 10px;
+ display: flex;
+ gap: 12px;
+ justify-content: center;
+ margin-bottom: 15px;
+}
.battle-btn {
width: 45%;
height: 55px;
diff --git a/src/components/SModal.vue b/src/components/SModal.vue
index 5ac9769..ffcebb8 100644
--- a/src/components/SModal.vue
+++ b/src/components/SModal.vue
@@ -88,6 +88,7 @@ watch(
transform: translateY(100%);
transition: all 0.3s ease;
position: relative;
+ background-color: #372E1D;
}
.modal-content > image:first-child {
width: 100%;
diff --git a/src/pages/friend-battle.vue b/src/pages/friend-battle.vue
index bd36307..b7e4072 100644
--- a/src/pages/friend-battle.vue
+++ b/src/pages/friend-battle.vue
@@ -169,7 +169,7 @@ onLoad(async (options) => {
{{ warnning }}