one version

This commit is contained in:
2025-12-01 12:13:03 +08:00
parent 0520603957
commit 80b00d9e5d
37 changed files with 790 additions and 205 deletions

View File

@@ -49,11 +49,12 @@
<script setup>
import { onMounted, ref, computed } from 'vue';
import { onLoad } from '@dcloudio/uni-app';
import { PUT , POST ,GET} from '../../utils/request';
const players1 = ref([]);
const round1 = ref();
//存储当前局每个玩家的得分
const currentScores = ref([]);
//设置胜负结果
const setResult = (index, result) => {
@@ -107,7 +108,7 @@ onLoad((options) => {
// players1.value = JSON.parse(decodeURIComponent(options.players));
round1.value = JSON.parse(decodeURIComponent(options.round));
console.log("round:",round1.value);
// console.log("round:",round1.value);
players1.value = rawData.map(player => ({
...player,
result: "win",
@@ -116,7 +117,7 @@ onLoad((options) => {
}))
// console.log('数据已更新:', updataScore);
// console.log('数据已更新:', players1.value);
}
@@ -130,15 +131,64 @@ onLoad((options) => {
const onsubmit = async () => {
const updataScore = players1.value.map(updata => ({
roomId: updata.roomId,
userId: updata.userId,
score: updata.score,
roomId: updata.roomId,
userId: updata.userId,
totalScore: updata.score,
}))
console.log("总分修改接口:",updataScore);
const detailDatas = players1.value.map(detaildata => ({
roomId: detaildata.roomId,
userId: detaildata.userId,
detailScore: detaildata.score,
gameTime: round1.value,
}))
console.log("输入框的值",updataScore);
console.log("细分新增接口",detailDatas);
if(validateScore1(detailDatas)){
console.log("发送网络请求");
try{
PUT("/system/score/room/user", updataScore);
POST("/system/detail", detailDatas);
console.log('用户计分成功');
wx.navigateTo({
url: '/pages/single/single'
})
}
catch(error) {
console.error('用户计分失败:', error);
}
}
else{
console.log("请求中止");
}
}
// 编写检验非空函数
// 单个值检验
const isScoreInvaild1 = (score) => {
return score === null || score === undefined || score === "";
}
//批量检验得分
const validateScore1 = (arrayData) => {
const invalidItems = arrayData.filter(item => isScoreInvaild1(item.detailScore));
if (invalidItems.length > 0) {
console.log('发现有未计分玩家:', invalidItems)
uni.showModal({
title: '提示',
content: `发现 ${invalidItems.length} 个未计分玩家,请检查!`,
showCancel: false
})
return false;
}
return true;
}
const usersData = ref([
{
id: 1,

View File

@@ -62,10 +62,10 @@
</view>
</view>
</view>
<view class="">
<!-- <view class="">
{{roomData}}
</view>
</view> -->
</view>
</view>
</template>
@@ -75,6 +75,7 @@ import { ref, onMounted } from 'vue'
import { getOpenId } from '@/utils/wxutils.js'
import { GET, POST } from '../../utils/request'
import StaticValue from '@/utils/StaticValue.js';
const loading = ref(false);
//定义承接本地用户信息对象
const roomData = ref([]);
@@ -106,6 +107,35 @@ const gotoNewPage = async () => {
bossId: roomData.value.userId,
roomName: `${roomData.value.nickName}的房间`,
});
//再次发送get请求拿到当前roomId
// const response1 = await GET('/system/room/list',{
// roomStatus: 1,
// });
// const dataArray1 = response1.data;
// console.log('new的房间号为', dataArray1[0].roomId);
// console.log("再次发送get请求",response1)
// var roomId1 = dataArray1[0].roomId;
// const userData = {
// nickName: "孤心", // 使用 trim() 处理后的名称
// avatars: "https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500",
// openId: generateTenDigitRandom().toString(),
// };
// const userResponse = await POST('/system/score/user/add', userData);
// POST("/system/score/room/user",{
// roomId: roomId1,
// userId: roomData.value.userId,
// totalScore: "0",
// playerType: "user",
// nickName: "孤心",
// avatars: "https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg",
// });
}
} else {
console.error('接口请求失败:', response.msg);

202
scoring/pages/over/over.vue Normal file
View File

@@ -0,0 +1,202 @@
<template>
<view class="over">
<view class="over-lan">
<view class="over-lan-player">玩家</view>
<view class="over-lan-score">得分</view>
<view class="over-lan-oddscore">倍率分</view>
</view>
<div v-if="loading">正在努力加载数据中...</div>
<div v-else>
<view class="over-content" v-for="(item,index) in scoredetailData1" :key="index">
<view class="over-content-player">
<image :src='item.avatars' mode="widthFix" style="width: 80rpx;"></image>
<text>{{item.Nickname}}</text>
</view>
<view class="over-content-score">
{{item.score}}
</view>
<view class="over-content-oddscore">
{{item.oddscore}}
</view>
</view>
<button @click="onsubmit">
返回首页
</button>
</div>
</view>
</template>
<script setup>
import {onMounted, ref} from 'vue';
import { GET, POST, PUT } from '../../utils/request';
import { onLoad } from '@dcloudio/uni-app';
import StaticValue from '@/utils/StaticValue.js';
import { login } from '../../api/user';
//获取本地用户数据
const roomData = ref([]);
const loading = ref(true); // 加载状态
const scoredetailData1 = ref([]);
console.log("打印数组scoredetailData1:",scoredetailData1.value);
const scoredetailData = [
{
avatars: "https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg",
Nickname: '小王',
score: 12,
oddscore: 24,
},
{
avatars: "https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg",
Nickname: '历史王',
score: 13,
oddscore: 26,
},
]
//传入用户所输入的倍率odd
const odd1 =ref();
onLoad((options) => {
try {
odd1.value = JSON.parse(decodeURIComponent(options.multiple));
console.log("odd1:",odd1);
}
catch(error){
}
})
onMounted(async () => {
//By本地userId查询 拿取用户所属房间Id
const getUserInfo = StaticValue.getUserInfo;
roomData.value = getUserInfo();
try {
// 调用您的异步数据获取方法
await ByGetLocalUseId();
console.log("当前scoredetailData1为",scoredetailData1.value);
} catch (error) {
console.error('数据加载失败:', error);
} finally {
loading.value = false; // 无论成功失败,都关闭加载状态
}
;
//By RoomId from score_room_user表 Get房间下所有用户的得分
//调用map和compute方法创建新的倍率数据
//By RoomId form score_room 表将房间的状态改为2.
//返回index首页
})
const ByGetLocalUseId = async () => {
//拿到本地用户所在的房间id
const response2 = await GET('/system/room/createUser/'+ roomData.value.userId);
//show信息
const dataArray1 = response2.data;
console.log('结算房间的房间号为:', dataArray1[0].roomId);
var roomId1 = dataArray1[0].roomId;
console.log("拿到本地用户所在的房间id:",roomId1);
const response = await GET("/system/score/room/user/list", {roomId: roomId1});
console.log("拿到房间下的所有用户信息:",response.rows);
scoredetailData1.value = response.rows.map(player => ({
avatars: player.avatars,
Nickname: player.nickName,
score: player.totalScore,
oddscore: (player.totalScore * odd1.value),
}));
//修改房间信息
try{
const response5 = await PUT("/system/room",{
roomId: roomId1,
odds: odd1.value,
roomStatus: 2,
})
console.log("关闭房间成功",response5);
}
catch (error) {
console.log("关闭房间失败",error);
}
}
const onsubmit = () => {
// 返回首页首页是tabBar页面时使用
uni.reLaunch({
url: '/pages/index/index'
});
}
</script>
<style lang="less">
.over{
display: flex;
flex-direction: column;
.over-lan{
display: flex;
margin-top: 30rpx;
.over-lan-player{
margin-left: 50rpx;
}
.over-lan-score{
margin-left: 210rpx;
}
.over-lan-oddscore{
margin-left: 210rpx;
}
}
.over-content{
margin-top: 50rpx;
display: flex;
align-items: center;
.over-content-player{
margin-left: 30rpx;
display: flex;
align-items: center;
width: 240rpx;
image{
margin-right: 15rpx;
}
}
.over-content-score{
margin-left: 70rpx;
width: 150rpx;
}
.over-content-oddscore{
margin-left: 140rpx;
}
}
button{
position: fixed;
bottom: 60rpx;
left: 0;
right: 0;
border-radius: 15rpx;
background-color: rgb(55, 47, 172);
color: #fff;
// margin-top: 30rpx;
// margin-left: 450rpx;
width: 650rpx;
}
}
</style>

View File

@@ -45,10 +45,10 @@
{{formatScore(item.totalScore)}}
</view>
<view v-for="detail in item.details" :key="detail.gameTime" class="round-score">
{{formatScore(detail.detailScore)}}
{{detail.detailScore}}
</view>
</view>
{{userScores}}
<!-- {{userScores}} -->
</view>
</scroll-view>
@@ -109,12 +109,12 @@
</view>
<view class="line"></view>
<view class="lan-input">
<uni-easyinput v-model="value" placeholder="请输入倍率" style="width: 400rpx;"></uni-easyinput>
<uni-easyinput v-model="oddvalue" placeholder="请输入倍率" style="width: 400rpx;"></uni-easyinput>
</view>
<view class="lan-button">
<button @click="closemultiple">取消</button>
<button @click="closemultiple">确定</button>
<button @click="overmultiple">确定</button>
</view>
</view>
</l-popup>
@@ -144,56 +144,70 @@ const confirmAddPlayer = async () => {
//拿到本地用户所在的房间id
const response = await GET('/system/room/createUser/'+ roomData.value.userId);
//show信息
console.log(response);
if (response.code === 200) {
uni.showToast({
title: '查询roomId成功',
icon: 'success'
});
const dataArray = response.data;
console.log('dataArray.roomId:', dataArray[0].roomId);
// 使用 trim() 去除前后空格
const trimmedName = newPlayerName.value.trim();
const userData = {
nickName: trimmedName, // 使用 trim() 处理后的名称
avatars: "https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500",
openId: generateTenDigitRandom().toString(),
};
const userResponse = await POST('/system/score/user/add', userData);
if (userResponse.code === 200) {
// 关键修改正确获取后端返回的userId
const userId1 = userResponse.data.userId; // 从响应数据的data中获取
console.log('新创建的用户ID:', userId1);
// 2. 然后插入 score_room_user 表
const roomUserData = {
roomId: dataArray[0].roomId,
userId: userId1, // 使用后端返回的userId
totalScore: 0,
playerType: 'robot',
nickName: trimmedName,
avatars: "https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500",
};
//插入room_user表中
const response = await POST('/system/score/room/user', roomUserData);
console.log("返回结果: ", response)
if(round.value < 2){
if (response.code === 200) {
// 2. 插入成功后立即刷新数据
fetchUserScores();
console.log('添加新玩家成功');
uni.showToast({
title: '添加成功,数据已更新',
icon: 'success'
});
uni.showToast({
title: '查询roomId成功',
icon: 'success'
});
const dataArray = response.data;
console.log('dataArray.roomId:', dataArray[0].roomId);
// 使用 trim() 去除前后空格
const trimmedName = newPlayerName.value.trim();
const userData = {
nickName: trimmedName, // 使用 trim() 处理后的名称
avatars: "https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg",
openId: generateTenDigitRandom().toString(),
};
const userResponse = await POST('/system/score/user/add', userData);
if (userResponse.code === 200) {
// 关键修改正确获取后端返回的userId
const userId1 = userResponse.data.userId; // 从响应数据的data中获取
console.log('新创建的用户ID:', userId1);
// 2. 然后插入 score_room_user 表
const roomUserData = {
roomId: dataArray[0].roomId,
userId: userId1, // 使用后端返回的userId
totalScore: 0,
playerType: 'robot',
nickName: trimmedName,
avatars: "https://q3.itc.cn/q_70/images03/20250110/1e71eecf56b34344bcae6a5b85c0bec2.jpeg",
};
//插入room_user表中
const response = await POST('/system/score/room/user', roomUserData);
console.log("返回结果: ", response)
if (response.code === 200) {
// 2. 插入成功后立即刷新数据
fetchUserScores();
console.log('添加新玩家成功');
uni.showToast({
title: '添加成功',
icon: 'success'
});
virtueplayer.value = false;
}
}
virtueplayer.value = false;
}
}
else{
console.log("游戏已开始,不可添加新玩家:",round.value);
uni.showToast({
title: '游戏已开始',
icon: 'error'
});
virtueplayer.value = false;
}
}
// 生成10位随机数范围1000000000 - 9999999999
@@ -219,7 +233,8 @@ const round = computed(() => {
const rounds = maxRounds.value;
return isNaN(rounds) ? 0 : Math.max(0, rounds + 1);
});
console.log("round:",round);
// 分数格式化
const formatScore = (score) => {
return score > 0 ? `+${score}` : `${score}`;
@@ -228,15 +243,15 @@ const formatScore = (score) => {
// 获取分数数据的函数
const fetchUserScores = async () => {
try {
//拿到本地用户所在的房间id
const response2 = await GET('/system/room/createUser/'+ roomData.value.userId);
//拿到本地用户所在的房间id
const response2 = await GET('/system/room/createUser/'+ roomData.value.userId);
//show信息
console.log(response2);
const dataArray1 = response2.data;
console.log('房间号为:', dataArray1[0].roomId);
var roomId1 = dataArray1[0].roomId;
console.log('获取分数数据房间号为:', dataArray1[0].roomId);
var roomId1 = dataArray1[0].roomId;
//加载详细数据
const response3 = await GET(`/system/score/room/user/user-details/${roomId1}`);
if (response3.code === 200) {
userScores.value = response3.data;
@@ -252,9 +267,43 @@ onMounted(() => {
const getUserInfo = StaticValue.getUserInfo;
roomData.value = getUserInfo();
fetchUserScores();
console.log("userScores为",userScores);
reSubmitGet();
})
const reSubmitGet = async () => {
//拿到本地用户所在的房间id
const response2 = await GET('/system/room/createUser/'+ roomData.value.userId);
//show信息
const dataArray1 = response2.data;
console.log('当前房间号为:', dataArray1[0].roomId);
var roomId1 = dataArray1[0].roomId;
//再次发送get请求拿到当前roomId
const response4 = await GET('/system/score/room/user/list',{
roomId: roomId1,
userId: roomData.value.userId,
});
console.log("response4:",response4.rows.length);
if(response4.rows.length === 0)
{
const addlocaluser = await POST('/system/score/room/user',{
roomId: roomId1,
userId: roomData.value.userId,
totalScore: '0',
playerType: 'user',
nickName:'孤心',
avatars: 'https://img1.baidu.com/it/u=3612220943,2414740890&fm=253&app=138&f=JPEG?w=526&h=500',
})
console.log("addlocaluser:",addlocaluser);
fetchUserScores();
}
}
//跳转至user-detail
const gotoNewPage = () => {
wx.navigateTo({
@@ -314,6 +363,7 @@ const closetransfer = ()=>{
const isPopupVisible2 = ref(false);
const multiple = ()=>{
oddvalue.value = undefined;
isPopupVisible2.value = true;
}
@@ -321,6 +371,23 @@ const closemultiple = ()=>{
isPopupVisible2.value = false;
}
//定义响应式变量odd
const oddvalue = ref();
//拿到倍率
const overmultiple = ()=>{
//拿到input响应式数据
console.log("输入的倍率为:",oddvalue.value);
//打包数据成url传输到over页面
const encodedMultiple = encodeURIComponent(JSON.stringify(oddvalue.value));
isPopupVisible2.value = false;
wx.redirectTo({
url: `/pages/over/over?multiple=${encodedMultiple}`
})
}
// const matchs = ref([
// {
// id: 1,