one version
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
202
scoring/pages/over/over.vue
Normal 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>
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user