2124
This commit is contained in:
1
scoring/unpackage/dist/dev/.sourcemap/mp-weixin/api/scoreRoom.js.map
vendored
Normal file
1
scoring/unpackage/dist/dev/.sourcemap/mp-weixin/api/scoreRoom.js.map
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"scoreRoom.js","sources":["api/scoreRoom.js"],"sourcesContent":["import { GET, POST } from '@/utils/request.js'\n\n// 创建单人房间\nexport const createSingleRoom = (roomInfo) => {\n return POST('/score/room', roomInfo);\n}\n\n// 获取房间信息\nexport const getRoomInfo = (roomId) => {\n return GET(`/score/room/${roomId}`);\n}\n\n// 提交分数\nexport const submitScore = (scoreInfo) => {\n return POST('/system/detail', scoreInfo);\n}\n\n// 获取房间分数记录\nexport const getRoomScores = (roomId) => {\n return GET(`/system/detail/list?roomId=${roomId}`);\n}\n\n// 结算房间\nexport const settleRoom = (roomId) => {\n return POST(`/score/room/settle/${roomId}`);\n}\n\n// 获取用户房间列表\nexport const getUserRooms = (userId) => {\n return GET(`/score/room/list?createUser=${userId}`);\n}"],"names":["POST"],"mappings":";;AAaY,MAAC,cAAc,CAAC,cAAc;AACtC,SAAOA,cAAI,KAAC,kBAAkB,SAAS;AAC3C;;"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
scoring/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/singleplay/test.js.map
vendored
Normal file
1
scoring/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/singleplay/test.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
1
scoring/unpackage/dist/dev/.sourcemap/mp-weixin/pages/test/test.js.map
vendored
Normal file
1
scoring/unpackage/dist/dev/.sourcemap/mp-weixin/pages/test/test.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"version":3,"file":"CommonValues.js","sources":["utils/CommonValues.js"],"sourcesContent":["\r\nexport const BASE_URL = 'http://172.20.10.2:8080';\r\n// export const BASE_URL = 'https://www.jianxinghome.cn:8484';\r\n// export const BASE_URL = 'https://www.safeguardfull.cn:8484';\r\n\r\n\r\nexport const WEBSOCKET_URL = 'wss://www.safeguardfull.cn:8484/websocket';\r\nexport default {\r\n\tBASE_URL,\r\n\tWEBSOCKET_URL\r\n}"],"names":[],"mappings":";AACY,MAAC,WAAW;;"}
|
||||
{"version":3,"file":"CommonValues.js","sources":["utils/CommonValues.js"],"sourcesContent":["\r\nexport const BASE_URL = 'http://10.87.64.114:8080';\r\n// export const BASE_URL = 'https://www.jianxinghome.cn:8484';\r\n// export const BASE_URL = 'https://www.safeguardfull.cn:8484';\r\n\r\n\r\nexport const WEBSOCKET_URL = 'wss://www.safeguardfull.cn:8484/websocket';\r\nexport default {\r\n\tBASE_URL,\r\n\tWEBSOCKET_URL\r\n}"],"names":[],"mappings":";AACY,MAAC,WAAW;;"}
|
||||
File diff suppressed because one or more lines are too long
@@ -7046,9 +7046,9 @@ function isConsoleWritable() {
|
||||
return isWritable;
|
||||
}
|
||||
function initRuntimeSocketService() {
|
||||
const hosts = "192.168.124.114,127.0.0.1";
|
||||
const hosts = "10.87.64.114,127.0.0.1";
|
||||
const port = "8090";
|
||||
const id = "mp-weixin_rbm27H";
|
||||
const id = "mp-weixin_RXuSqC";
|
||||
const lazy = typeof swan !== "undefined";
|
||||
let restoreError = lazy ? () => {
|
||||
} : initOnError();
|
||||
|
||||
@@ -1,21 +1,12 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../../common/vendor.js");
|
||||
const app = require("../../../app.js");
|
||||
if (!Array) {
|
||||
const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons");
|
||||
_easycom_uni_icons2();
|
||||
}
|
||||
const _easycom_uni_icons = () => "../../../uni_modules/uni-icons/components/uni-icons/uni-icons.js";
|
||||
if (!Math) {
|
||||
_easycom_uni_icons();
|
||||
}
|
||||
const _sfc_main = {
|
||||
__name: "change",
|
||||
setup(__props) {
|
||||
const userInfo = common_vendor.ref({
|
||||
id: "",
|
||||
nickName: "",
|
||||
avatarUrl: ""
|
||||
name: "",
|
||||
avatar: ""
|
||||
});
|
||||
common_vendor.onLoad((options) => {
|
||||
if (options.userData) {
|
||||
@@ -23,21 +14,12 @@ const _sfc_main = {
|
||||
const data = JSON.parse(decodeURIComponent(options.userData));
|
||||
userInfo.value = { ...data };
|
||||
} catch (e) {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/change.vue:55", "解析用户数据失败:", e);
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/change.vue:45", "解析用户数据失败:", e);
|
||||
}
|
||||
}
|
||||
if (options.from) {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/change.vue:61", "来源页面:", options.from);
|
||||
}
|
||||
});
|
||||
const goBack = () => {
|
||||
if (userInfo.value.nickName.trim()) {
|
||||
app.updateGlobalUserInfo(userInfo.value);
|
||||
}
|
||||
common_vendor.wx$1.navigateBack();
|
||||
};
|
||||
const chooseNewAvatar = () => {
|
||||
common_vendor.wx$1.chooseMedia({
|
||||
common_vendor.index.chooseMedia({
|
||||
count: 1,
|
||||
mediaType: ["image"],
|
||||
sourceType: ["album", "camera"],
|
||||
@@ -46,18 +28,18 @@ const _sfc_main = {
|
||||
success: (res) => {
|
||||
try {
|
||||
const tempFilePath = res.tempFiles[0].tempFilePath;
|
||||
userInfo.value.avatarUrl = tempFilePath;
|
||||
userInfo.value.avatar = tempFilePath;
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/change.vue:90", "处理头像文件路径失败:", error);
|
||||
common_vendor.wx$1.showToast({
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/change.vue:69", "处理头像文件路径失败:", error);
|
||||
common_vendor.index.showToast({
|
||||
title: "头像设置失败",
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/change.vue:98", "选择图片失败:", err);
|
||||
common_vendor.wx$1.showToast({
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/change.vue:77", "选择图片失败:", err);
|
||||
common_vendor.index.showToast({
|
||||
title: "选择图片失败",
|
||||
icon: "none"
|
||||
});
|
||||
@@ -65,47 +47,41 @@ const _sfc_main = {
|
||||
});
|
||||
};
|
||||
const saveUserInfo = () => {
|
||||
if (!userInfo.value.nickName.trim()) {
|
||||
common_vendor.wx$1.showToast({
|
||||
if (!userInfo.value.name.trim()) {
|
||||
common_vendor.index.showToast({
|
||||
title: "昵称不能为空",
|
||||
icon: "none"
|
||||
});
|
||||
return;
|
||||
}
|
||||
app.updateGlobalUserInfo(userInfo.value);
|
||||
const pages = getCurrentPages();
|
||||
const prevPage = pages[pages.length - 2];
|
||||
if (prevPage) {
|
||||
if (prevPage.$vm && prevPage.$vm.updateUserData) {
|
||||
prevPage.$vm.updateUserData(userInfo.value);
|
||||
} else {
|
||||
common_vendor.wx$1.$emit && common_vendor.wx$1.$emit("userDataUpdated", userInfo.value);
|
||||
}
|
||||
}
|
||||
common_vendor.wx$1.showToast({
|
||||
common_vendor.index.$emit("userDataUpdated", userInfo.value);
|
||||
common_vendor.index.setStorageSync("userInfo", userInfo.value);
|
||||
common_vendor.index.setStorageSync("currentUserInfo", userInfo.value);
|
||||
common_vendor.index.showToast({
|
||||
title: "保存成功",
|
||||
icon: "success",
|
||||
duration: 1500,
|
||||
success: () => {
|
||||
setTimeout(() => {
|
||||
common_vendor.wx$1.navigateBack();
|
||||
common_vendor.index.navigateBack();
|
||||
}, 1500);
|
||||
}
|
||||
});
|
||||
};
|
||||
return (_ctx, _cache) => {
|
||||
return {
|
||||
a: common_vendor.p({
|
||||
type: "left",
|
||||
size: "22",
|
||||
color: "#fff"
|
||||
}),
|
||||
b: common_vendor.o(goBack),
|
||||
c: userInfo.value.nickName,
|
||||
d: common_vendor.o(($event) => userInfo.value.nickName = $event.detail.value),
|
||||
e: userInfo.value.avatarUrl || "/static/logo.png",
|
||||
f: common_vendor.o(chooseNewAvatar),
|
||||
g: common_vendor.o(saveUserInfo)
|
||||
a: userInfo.value.name,
|
||||
b: common_vendor.o(($event) => userInfo.value.name = $event.detail.value),
|
||||
c: userInfo.value.avatar || "/static/logo.png",
|
||||
d: common_vendor.o(chooseNewAvatar),
|
||||
e: common_vendor.o(saveUserInfo)
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
{
|
||||
"navigationBarTitleText": "用户信息",
|
||||
"navigationBarHidden": true,
|
||||
"usingComponents": {
|
||||
"uni-icons": "../../../uni_modules/uni-icons/components/uni-icons/uni-icons"
|
||||
}
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
<view class="container data-v-9c38dc47"><view class="header data-v-9c38dc47"><view class="back-btn data-v-9c38dc47" bindtap="{{b}}"><uni-icons wx:if="{{a}}" class="data-v-9c38dc47" u-i="9c38dc47-0" bind:__l="__l" u-p="{{a}}"/></view><view class="title data-v-9c38dc47">用户信息</view><view class="placeholder data-v-9c38dc47"></view></view><view class="content data-v-9c38dc47"><view class="form-item data-v-9c38dc47"><view class="label data-v-9c38dc47">昵称:</view><input class="input data-v-9c38dc47" placeholder="请输入昵称" value="{{c}}" bindinput="{{d}}"/></view><view class="form-item data-v-9c38dc47"><view class="label data-v-9c38dc47">头像:</view><view class="avatar-wrapper data-v-9c38dc47" bindtap="{{f}}"><image src="{{e}}" mode="aspectFill" class="avatar data-v-9c38dc47"/><view class="avatar-tip data-v-9c38dc47">点击更新头像</view></view></view><button class="save-btn data-v-9c38dc47" bindtap="{{g}}">保存</button></view></view>
|
||||
<view class="container data-v-9c38dc47"><view class="content data-v-9c38dc47"><view class="form-item data-v-9c38dc47"><view class="label data-v-9c38dc47">昵称:</view><input class="input data-v-9c38dc47" placeholder="请输入昵称" value="{{a}}" bindinput="{{b}}"/></view><view class="form-item data-v-9c38dc47"><view class="label data-v-9c38dc47">头像:</view><view class="avatar-wrapper data-v-9c38dc47" bindtap="{{d}}"><image src="{{c}}" mode="aspectFill" class="avatar data-v-9c38dc47"/><view class="avatar-tip data-v-9c38dc47">点击更新头像</view></view></view><button class="save-btn data-v-9c38dc47" bindtap="{{e}}">保存</button></view></view>
|
||||
@@ -1,9 +1,7 @@
|
||||
|
||||
.container.data-v-9c38dc47 {
|
||||
min-height: 100vh;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
/* 自定义头部 */
|
||||
.header.data-v-9c38dc47 {
|
||||
display: flex;
|
||||
@@ -32,7 +30,6 @@
|
||||
.placeholder.data-v-9c38dc47 {
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
/* 内容区域 */
|
||||
.content.data-v-9c38dc47 {
|
||||
padding: 20rpx;
|
||||
@@ -62,7 +59,6 @@
|
||||
border: 1px solid #e0e0e0;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
|
||||
/* 头像样式 */
|
||||
.avatar-wrapper.data-v-9c38dc47 {
|
||||
flex: 1;
|
||||
@@ -80,7 +76,6 @@
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
/* 保存按钮 */
|
||||
.save-btn.data-v-9c38dc47 {
|
||||
width: 100%;
|
||||
|
||||
@@ -32,7 +32,7 @@ const _sfc_main = {
|
||||
saveHistoryState();
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/scoring.vue:142", "加载玩家数据失败:", error);
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/scoring.vue:141", "加载玩家数据失败:", error);
|
||||
common_vendor.index.showToast({
|
||||
title: "加载数据失败",
|
||||
icon: "none"
|
||||
@@ -187,26 +187,6 @@ const _sfc_main = {
|
||||
icon: "success"
|
||||
});
|
||||
};
|
||||
const nextRound = () => {
|
||||
common_vendor.index.showModal({
|
||||
title: "确认",
|
||||
content: "确定要开始下一局吗?",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
saveHistoryState();
|
||||
players.value.forEach((player) => {
|
||||
player.score = 0;
|
||||
player.result = "";
|
||||
});
|
||||
roundCount.value++;
|
||||
common_vendor.index.showToast({
|
||||
title: `第${roundCount.value}局`,
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
const playSound = () => {
|
||||
const innerAudioContext = common_vendor.index.createInnerAudioContext();
|
||||
innerAudioContext.src = "/static/sound/click.mp3";
|
||||
@@ -257,7 +237,7 @@ const _sfc_main = {
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/scoring.vue:454", "结束对局失败:", error);
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/scoring.vue:453", "结束对局失败:", error);
|
||||
common_vendor.index.showToast({
|
||||
title: "操作失败",
|
||||
icon: "none"
|
||||
@@ -268,12 +248,19 @@ const _sfc_main = {
|
||||
});
|
||||
};
|
||||
common_vendor.onMounted(() => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/scoring.vue:467", "计分页面加载完成");
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/scoring.vue:466", "计分页面加载完成");
|
||||
loadPlayersData();
|
||||
const savedSound = common_vendor.index.getStorageSync("soundEnabled");
|
||||
if (savedSound !== "") {
|
||||
soundEnabled.value = savedSound;
|
||||
}
|
||||
const selectedIndex = common_vendor.index.getStorageSync("selectedPlayerIndex");
|
||||
if (selectedIndex !== "" && players.value.length > 0) {
|
||||
setTimeout(() => {
|
||||
selectPlayer(parseInt(selectedIndex));
|
||||
common_vendor.index.removeStorageSync("selectedPlayerIndex");
|
||||
}, 100);
|
||||
}
|
||||
});
|
||||
common_vendor.onUnmounted(() => {
|
||||
});
|
||||
@@ -328,8 +315,7 @@ const _sfc_main = {
|
||||
} : {}, {
|
||||
y: !showKeyboard.value
|
||||
}, !showKeyboard.value ? {
|
||||
z: common_vendor.o(nextRound),
|
||||
A: common_vendor.o(endGame)
|
||||
z: common_vendor.o(endGame)
|
||||
} : {});
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="scoring-page data-v-94d9c592"><view class="header data-v-94d9c592"><view class="back-btn data-v-94d9c592" bindtap="{{b}}"><uni-icons wx:if="{{a}}" class="data-v-94d9c592" u-i="94d9c592-0" bind:__l="__l" u-p="{{a}}"></uni-icons></view><view class="title data-v-94d9c592">第{{c}}局</view><view class="header-right data-v-94d9c592"><view class="more-btn data-v-94d9c592" bindtap="{{d}}">...</view><view class="separator data-v-94d9c592"></view><view class="sound-toggle data-v-94d9c592" bindtap="{{f}}"><text class="sound-icon data-v-94d9c592">{{e}}</text></view></view></view><view class="players-list data-v-94d9c592"><view class="list-header data-v-94d9c592"><view class="col-player data-v-94d9c592">玩家</view><view class="col-result data-v-94d9c592">胜负</view><view class="col-score data-v-94d9c592">得分</view></view><view wx:for="{{g}}" wx:for-item="player" wx:key="l" class="{{['player-row', 'data-v-94d9c592', player.m && 'selected']}}" bindtap="{{player.n}}"><view class="col-player data-v-94d9c592"><image src="{{player.a}}" mode="aspectFill" class="player-avatar data-v-94d9c592"></image><text class="player-name data-v-94d9c592">{{player.b}}</text></view><view class="col-result data-v-94d9c592"><view class="result-buttons data-v-94d9c592"><button class="{{['result-btn', 'win', 'data-v-94d9c592', player.c && 'active']}}" catchtap="{{player.d}}">胜</button><button class="{{['result-btn', 'lose', 'data-v-94d9c592', player.e && 'active']}}" catchtap="{{player.f}}">负</button></view></view><view class="col-score data-v-94d9c592"><view class="score-input-container data-v-94d9c592"><input type="number" class="score-input data-v-94d9c592" value="{{player.g}}" catchfocus="{{player.h}}" catchtap="{{player.i}}" readonly disabled/><button class="combine-btn data-v-94d9c592" catchtap="{{player.j}}" disabled="{{player.k}}">合分</button></view></view></view></view><view wx:if="{{h}}" class="number-keyboard data-v-94d9c592"><view class="keyboard-row data-v-94d9c592"><view class="key data-v-94d9c592" bindtap="{{i}}">1</view><view class="key data-v-94d9c592" bindtap="{{j}}">2</view><view class="key data-v-94d9c592" bindtap="{{k}}">3</view><view class="key operation data-v-94d9c592" bindtap="{{l}}">+</view><view class="key delete data-v-94d9c592" bindtap="{{m}}"><text class="data-v-94d9c592">⌫</text></view></view><view class="keyboard-row data-v-94d9c592"><view class="key data-v-94d9c592" bindtap="{{n}}">4</view><view class="key data-v-94d9c592" bindtap="{{o}}">5</view><view class="key data-v-94d9c592" bindtap="{{p}}">6</view><view class="key operation data-v-94d9c592" bindtap="{{q}}">-</view><view class="key empty data-v-94d9c592"></view></view><view class="keyboard-row data-v-94d9c592"><view class="key data-v-94d9c592" bindtap="{{r}}">7</view><view class="key data-v-94d9c592" bindtap="{{s}}">8</view><view class="key data-v-94d9c592" bindtap="{{t}}">9</view><view class="key operation data-v-94d9c592" bindtap="{{v}}">C</view><view class="key confirm data-v-94d9c592" bindtap="{{w}}">提交</view></view><view class="keyboard-row data-v-94d9c592"><view class="key zero data-v-94d9c592" bindtap="{{x}}">0</view></view></view><view wx:if="{{y}}" class="bottom-actions data-v-94d9c592"><button class="action-btn data-v-94d9c592" type="default" bindtap="{{z}}">下一局</button><button class="action-btn primary data-v-94d9c592" type="primary" bindtap="{{A}}">结束对局</button></view></view>
|
||||
<view class="scoring-page data-v-94d9c592"><view class="header data-v-94d9c592"><view class="back-btn data-v-94d9c592" bindtap="{{b}}"><uni-icons wx:if="{{a}}" class="data-v-94d9c592" u-i="94d9c592-0" bind:__l="__l" u-p="{{a}}"></uni-icons></view><view class="title data-v-94d9c592">第{{c}}局</view><view class="header-right data-v-94d9c592"><view class="more-btn data-v-94d9c592" bindtap="{{d}}">...</view><view class="separator data-v-94d9c592"></view><view class="sound-toggle data-v-94d9c592" bindtap="{{f}}"><text class="sound-icon data-v-94d9c592">{{e}}</text></view></view></view><view class="players-list data-v-94d9c592"><view class="list-header data-v-94d9c592"><view class="col-player data-v-94d9c592">玩家</view><view class="col-result data-v-94d9c592">胜负</view><view class="col-score data-v-94d9c592">得分</view></view><view wx:for="{{g}}" wx:for-item="player" wx:key="l" class="{{['player-row', 'data-v-94d9c592', player.m && 'selected']}}" bindtap="{{player.n}}"><view class="col-player data-v-94d9c592"><image src="{{player.a}}" mode="aspectFill" class="player-avatar data-v-94d9c592"></image><text class="player-name data-v-94d9c592">{{player.b}}</text></view><view class="col-result data-v-94d9c592"><view class="result-buttons data-v-94d9c592"><button class="{{['result-btn', 'win', 'data-v-94d9c592', player.c && 'active']}}" catchtap="{{player.d}}">胜</button><button class="{{['result-btn', 'lose', 'data-v-94d9c592', player.e && 'active']}}" catchtap="{{player.f}}">负</button></view></view><view class="col-score data-v-94d9c592"><view class="score-input-container data-v-94d9c592"><input type="number" class="score-input data-v-94d9c592" value="{{player.g}}" catchfocus="{{player.h}}" catchtap="{{player.i}}" readonly disabled/><button class="combine-btn data-v-94d9c592" catchtap="{{player.j}}" disabled="{{player.k}}">合分</button></view></view></view></view><view wx:if="{{h}}" class="number-keyboard data-v-94d9c592"><view class="keyboard-row data-v-94d9c592"><view class="key data-v-94d9c592" bindtap="{{i}}">1</view><view class="key data-v-94d9c592" bindtap="{{j}}">2</view><view class="key data-v-94d9c592" bindtap="{{k}}">3</view><view class="key operation data-v-94d9c592" bindtap="{{l}}">+</view><view class="key delete data-v-94d9c592" bindtap="{{m}}"><text class="data-v-94d9c592">⌫</text></view></view><view class="keyboard-row data-v-94d9c592"><view class="key data-v-94d9c592" bindtap="{{n}}">4</view><view class="key data-v-94d9c592" bindtap="{{o}}">5</view><view class="key data-v-94d9c592" bindtap="{{p}}">6</view><view class="key operation data-v-94d9c592" bindtap="{{q}}">-</view><view class="key empty data-v-94d9c592"></view></view><view class="keyboard-row data-v-94d9c592"><view class="key data-v-94d9c592" bindtap="{{r}}">7</view><view class="key data-v-94d9c592" bindtap="{{s}}">8</view><view class="key data-v-94d9c592" bindtap="{{t}}">9</view><view class="key operation data-v-94d9c592" bindtap="{{v}}">C</view><view class="key confirm data-v-94d9c592" bindtap="{{w}}">提交</view></view><view class="keyboard-row data-v-94d9c592"><view class="key zero data-v-94d9c592" bindtap="{{x}}">0</view></view></view><view wx:if="{{y}}" class="bottom-actions data-v-94d9c592"><button class="action-btn primary data-v-94d9c592" type="primary" bindtap="{{z}}">结束对局</button></view></view>
|
||||
@@ -1,30 +1,92 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../../../common/vendor.js");
|
||||
const common_assets = require("../../../common/assets.js");
|
||||
const utils_request = require("../../../utils/request.js");
|
||||
const utils_CommonValues = require("../../../utils/CommonValues.js");
|
||||
const _sfc_main = {
|
||||
__name: "singleplay",
|
||||
setup(__props) {
|
||||
common_vendor.ref(null);
|
||||
const getuserinfo = () => {
|
||||
utils_request.GET("/score/info/list", null).then((res) => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:113", "获取用户信息成功:", res.data);
|
||||
if (res.data && res.data.code === 200 && Array.isArray(res.data.rows)) {
|
||||
const userList = res.data.rows;
|
||||
const selfPlayer = players.value.find((p) => p.id === "self");
|
||||
players.value = selfPlayer ? [selfPlayer] : [];
|
||||
userList.forEach((user) => {
|
||||
if (user.nickName) {
|
||||
let avatarUrl = user.avatars;
|
||||
if (avatarUrl) {
|
||||
if (avatarUrl.startsWith("/")) {
|
||||
avatarUrl = `${utils_CommonValues.BASE_URL}${avatarUrl}`;
|
||||
} else if (!avatarUrl.startsWith("http://") && !avatarUrl.startsWith("https://")) {
|
||||
avatarUrl = `${utils_CommonValues.BASE_URL}/${avatarUrl}`;
|
||||
}
|
||||
} else {
|
||||
avatarUrl = "/static/avatar14.png";
|
||||
}
|
||||
const newPlayer = {
|
||||
id: `player_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
|
||||
name: user.nickName,
|
||||
// 使用API返回的nickName作为玩家名称
|
||||
avatar: avatarUrl,
|
||||
// 使用处理后的头像URL
|
||||
score: 0,
|
||||
roundScores: []
|
||||
};
|
||||
players.value.push(newPlayer);
|
||||
}
|
||||
});
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:152", "玩家列表更新完成:", players.value);
|
||||
common_vendor.index.showToast({
|
||||
title: `成功添加${userList.length}位玩家`,
|
||||
icon: "success"
|
||||
});
|
||||
} else {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/singleplay.vue:158", "API返回数据结构异常:", res.data);
|
||||
common_vendor.index.showToast({
|
||||
title: "获取玩家信息失败,数据结构异常",
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
}).catch((err) => {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/singleplay.vue:165", "获取用户信息失败:", err);
|
||||
const errorMsg = err.userFriendlyMsg || "获取玩家信息失败";
|
||||
common_vendor.index.showToast({
|
||||
title: errorMsg,
|
||||
icon: "none",
|
||||
duration: 2e3
|
||||
});
|
||||
});
|
||||
};
|
||||
const voiceBroadcast = common_vendor.ref(false);
|
||||
const tableMode = common_vendor.ref(false);
|
||||
const roomId = common_vendor.ref("");
|
||||
const storedUserInfo = common_vendor.index.getStorageSync("userInfo");
|
||||
const currentUser = common_vendor.ref({
|
||||
id: "self",
|
||||
name: "玩家50950",
|
||||
avatar: "https://t14.baidu.com/it/u=3165460156,649373630&fm=224&app=112&f=JPEG?w=500&h=500"
|
||||
name: (storedUserInfo == null ? void 0 : storedUserInfo.name) || "玩家50920",
|
||||
avatar: (storedUserInfo == null ? void 0 : storedUserInfo.avatar) || "/static/logo.png"
|
||||
});
|
||||
const rounds = common_vendor.ref([]);
|
||||
const players = common_vendor.ref([
|
||||
{
|
||||
id: "self",
|
||||
name: "玩家50950",
|
||||
avatar: "https://t14.baidu.com/it/u=3165460156,649373630&fm=224&app=112&f=JPEG?w=500&h=500",
|
||||
score: 0
|
||||
name: currentUser.value.name || "玩家50920",
|
||||
avatar: currentUser.value.avatar || "/static/logo.png",
|
||||
score: 0,
|
||||
roundScores: []
|
||||
// 存储每局的分数
|
||||
}
|
||||
]);
|
||||
const tablePlayer = {
|
||||
id: "table",
|
||||
name: "台板",
|
||||
avatar: "/static/robot.png",
|
||||
score: 0
|
||||
score: 0,
|
||||
roundScores: []
|
||||
// 存储每局的分数
|
||||
};
|
||||
const displayPlayers = common_vendor.computed(() => {
|
||||
if (tableMode.value) {
|
||||
@@ -38,7 +100,7 @@ const _sfc_main = {
|
||||
}
|
||||
});
|
||||
const addPlayer = () => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:130", "添加玩家");
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:237", "添加玩家");
|
||||
const defaultPlayerName = "请输入玩家名称";
|
||||
common_vendor.index.showModal({
|
||||
title: "添加玩家",
|
||||
@@ -54,8 +116,10 @@ const _sfc_main = {
|
||||
const newPlayer = {
|
||||
id: `player_${Date.now()}`,
|
||||
name: playerName,
|
||||
avatar: "/static/people.png",
|
||||
score: 0
|
||||
avatar: "/static/avatar14.png",
|
||||
score: 0,
|
||||
roundScores: []
|
||||
// 存储每局的分数
|
||||
};
|
||||
players.value.push(newPlayer);
|
||||
if (voiceBroadcast.value) {
|
||||
@@ -72,12 +136,12 @@ const _sfc_main = {
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/singleplay.vue:177", "添加玩家失败:", err);
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/singleplay.vue:285", "添加玩家失败:", err);
|
||||
}
|
||||
});
|
||||
};
|
||||
const transferScorer = () => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:184", "转让计分员");
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:292", "转让计分员");
|
||||
common_vendor.index.showModal({
|
||||
title: "提示",
|
||||
content: "房间内暂无扫码或分享加入房间的玩家,无法转让计分员。",
|
||||
@@ -85,81 +149,55 @@ const _sfc_main = {
|
||||
confirmText: "确定",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:196", "用户确认提示");
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:304", "用户确认提示");
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/singleplay.vue:200", "显示提示失败:", err);
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/singleplay.vue:308", "显示提示失败:", err);
|
||||
}
|
||||
});
|
||||
};
|
||||
const editUserInfo = () => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:207", "跳转到用户信息编辑页面");
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:315", "跳转到用户信息编辑页面");
|
||||
common_vendor.index.navigateTo({
|
||||
url: `/pages/index/singleplay/change?userData=${encodeURIComponent(JSON.stringify(currentUser.value))}`
|
||||
});
|
||||
};
|
||||
const editScore = (index) => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:246", "编辑分数", index);
|
||||
const player = displayPlayers.value[index];
|
||||
if (player.id === "table") {
|
||||
common_vendor.index.showModal({
|
||||
title: "修改台板分数",
|
||||
content: `当前分数: ${player.score}`,
|
||||
editable: true,
|
||||
placeholderText: "请输入新分数",
|
||||
success: (res) => {
|
||||
if (res.confirm && res.content !== null) {
|
||||
const newScore = parseInt(res.content);
|
||||
if (!isNaN(newScore)) {
|
||||
const tableIndex = players.value.findIndex((p) => p.id === "table");
|
||||
if (tableIndex !== -1) {
|
||||
players.value[tableIndex].score = newScore;
|
||||
} else {
|
||||
tablePlayer.score = newScore;
|
||||
}
|
||||
if (voiceBroadcast.value) {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:272", `语音播报: 台板 分数更新为 ${newScore}`);
|
||||
}
|
||||
} else {
|
||||
common_vendor.index.showToast({
|
||||
title: "请输入有效的数字",
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
const updateUserData = (updatedUser) => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:325", "更新用户数据", updatedUser);
|
||||
currentUser.value = { ...updatedUser };
|
||||
const selfPlayerIndex = players.value.findIndex((p) => p.id === "self");
|
||||
if (selfPlayerIndex !== -1) {
|
||||
players.value[selfPlayerIndex] = {
|
||||
...players.value[selfPlayerIndex],
|
||||
name: updatedUser.name,
|
||||
avatar: updatedUser.avatar
|
||||
};
|
||||
}
|
||||
common_vendor.index.setStorageSync("userInfo", updatedUser);
|
||||
common_vendor.index.setStorageSync("currentUserInfo", updatedUser);
|
||||
};
|
||||
const editScore = (playerIndex) => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:347", "编辑分数,玩家索引:", playerIndex);
|
||||
displayPlayers.value[playerIndex];
|
||||
if (rounds.value.length === 0) {
|
||||
common_vendor.index.showToast({
|
||||
title: "暂无局数记录,无法编辑分数",
|
||||
icon: "none"
|
||||
});
|
||||
return;
|
||||
}
|
||||
common_vendor.index.showModal({
|
||||
title: "修改分数",
|
||||
content: `${player.score}`,
|
||||
editable: true,
|
||||
placeholderText: "请输入新分数",
|
||||
success: (res) => {
|
||||
if (res.confirm && res.content !== null) {
|
||||
const newScore = parseInt(res.content);
|
||||
if (!isNaN(newScore)) {
|
||||
const playerIndex = players.value.findIndex((p) => p.id === player.id);
|
||||
if (playerIndex !== -1) {
|
||||
players.value[playerIndex].score = newScore;
|
||||
}
|
||||
if (voiceBroadcast.value) {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:304", `语音播报: ${player.name} 分数更新为 ${newScore}`);
|
||||
}
|
||||
} else {
|
||||
common_vendor.index.showToast({
|
||||
title: "请输入有效的数字",
|
||||
icon: "none"
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
const currentRound = rounds.value.length;
|
||||
const playersToPass = [...displayPlayers.value];
|
||||
common_vendor.index.setStorageSync("currentPlayers", JSON.stringify(playersToPass));
|
||||
common_vendor.index.setStorageSync("currentRound", currentRound);
|
||||
common_vendor.index.setStorageSync("selectedPlayerIndex", playerIndex);
|
||||
common_vendor.index.navigateTo({
|
||||
url: "/pages/index/singleplay/scoring"
|
||||
});
|
||||
};
|
||||
const startScoring = () => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:319", "开局计分");
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:383", "开局计分");
|
||||
if (displayPlayers.value.length < 2) {
|
||||
common_vendor.index.showToast({
|
||||
title: "玩家数不超过两个人时无法点击进行开始计分",
|
||||
@@ -167,20 +205,17 @@ const _sfc_main = {
|
||||
});
|
||||
return;
|
||||
}
|
||||
players.value.forEach((player) => {
|
||||
player.score = 0;
|
||||
});
|
||||
if (tableMode.value) {
|
||||
tablePlayer.score = 0;
|
||||
}
|
||||
const newRound = rounds.value.length + 1;
|
||||
rounds.value.push(newRound);
|
||||
const playersToPass = [...displayPlayers.value];
|
||||
common_vendor.index.setStorageSync("currentPlayers", JSON.stringify(playersToPass));
|
||||
common_vendor.index.setStorageSync("currentRound", newRound);
|
||||
common_vendor.index.navigateTo({
|
||||
url: "/pages/index/singleplay/scoring"
|
||||
});
|
||||
};
|
||||
const settleRoom = () => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:354", "结算房间");
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:414", "结算房间");
|
||||
let result = "结算结果:\n";
|
||||
displayPlayers.value.forEach((player) => {
|
||||
result += `${player.name}: ${player.score}分
|
||||
@@ -202,7 +237,8 @@ const _sfc_main = {
|
||||
});
|
||||
};
|
||||
common_vendor.onMounted(() => {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:381", "单人模式页面加载完成");
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:441", "单人模式页面加载完成");
|
||||
getuserinfo();
|
||||
roomId.value = Math.floor(1e3 + Math.random() * 9e3).toString();
|
||||
common_vendor.index.setNavigationBarTitle({
|
||||
title: `单人 - ${roomId.value}号房间`
|
||||
@@ -212,28 +248,60 @@ const _sfc_main = {
|
||||
if (updatedPlayers) {
|
||||
try {
|
||||
const parsedPlayers = JSON.parse(updatedPlayers);
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:399", "收到更新的玩家数据:", parsedPlayers);
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:460", "收到更新的玩家数据:", parsedPlayers);
|
||||
const currentRound = common_vendor.index.getStorageSync("currentRound") || 1;
|
||||
const roundIndex = currentRound - 1;
|
||||
parsedPlayers.forEach((updatedPlayer) => {
|
||||
const playerIndex = players.value.findIndex((p) => p.id === updatedPlayer.id);
|
||||
if (playerIndex !== -1) {
|
||||
players.value[playerIndex].score = updatedPlayer.score;
|
||||
if (players.value[playerIndex].roundScores.length <= roundIndex) {
|
||||
players.value[playerIndex].roundScores.length = roundIndex + 1;
|
||||
}
|
||||
players.value[playerIndex].roundScores[roundIndex] = updatedPlayer.score;
|
||||
players.value[playerIndex].score = players.value[playerIndex].roundScores.reduce((sum, score) => sum + (score || 0), 0);
|
||||
} else if (updatedPlayer.id === "table") {
|
||||
tablePlayer.score = updatedPlayer.score;
|
||||
if (tablePlayer.roundScores.length <= roundIndex) {
|
||||
tablePlayer.roundScores.length = roundIndex + 1;
|
||||
}
|
||||
tablePlayer.roundScores[roundIndex] = updatedPlayer.score;
|
||||
tablePlayer.score = tablePlayer.roundScores.reduce((sum, score) => sum + (score || 0), 0);
|
||||
}
|
||||
});
|
||||
common_vendor.index.removeStorageSync("updatedPlayers");
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/singleplay.vue:417", "解析更新的玩家数据失败:", error);
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/singleplay.vue:496", "解析更新的玩家数据失败:", error);
|
||||
}
|
||||
}
|
||||
};
|
||||
common_vendor.index.$on("updatePlayers", updateListener);
|
||||
const userDataListener = (updatedUser) => {
|
||||
updateUserData(updatedUser);
|
||||
};
|
||||
common_vendor.index.$on("userDataUpdated", userDataListener);
|
||||
common_vendor.index.onShow(() => {
|
||||
updateListener();
|
||||
try {
|
||||
const storedUserInfo2 = common_vendor.index.getStorageSync("userInfo");
|
||||
if (storedUserInfo2) {
|
||||
common_vendor.index.__f__("log", "at pages/index/singleplay/singleplay.vue:518", "从本地存储加载用户信息:", storedUserInfo2);
|
||||
currentUser.value = { ...storedUserInfo2 };
|
||||
const selfPlayerIndex = players.value.findIndex((p) => p.id === "self");
|
||||
if (selfPlayerIndex !== -1) {
|
||||
players.value[selfPlayerIndex] = {
|
||||
...players.value[selfPlayerIndex],
|
||||
name: storedUserInfo2.name,
|
||||
avatar: storedUserInfo2.avatar
|
||||
};
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at pages/index/singleplay/singleplay.vue:533", "从本地存储获取用户信息失败:", error);
|
||||
}
|
||||
});
|
||||
common_vendor.onUnmounted(() => {
|
||||
common_vendor.index.$off("updatePlayers", updateListener);
|
||||
});
|
||||
});
|
||||
common_vendor.onUnmounted(() => {
|
||||
common_vendor.index.$off("updatePlayers");
|
||||
common_vendor.index.$off("userDataUpdated");
|
||||
});
|
||||
return (_ctx, _cache) => {
|
||||
return {
|
||||
@@ -253,13 +321,30 @@ const _sfc_main = {
|
||||
return {
|
||||
a: player.avatar,
|
||||
b: common_vendor.t(player.name),
|
||||
c: common_vendor.t(player.score),
|
||||
d: common_vendor.o(($event) => editScore(index), player.id),
|
||||
e: player.id
|
||||
c: player.id
|
||||
};
|
||||
}),
|
||||
n: common_vendor.o(startScoring),
|
||||
o: common_vendor.o(settleRoom)
|
||||
n: common_vendor.f(displayPlayers.value, (player, index, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(player.score),
|
||||
b: player.id
|
||||
};
|
||||
}),
|
||||
o: common_vendor.f(rounds.value, (round, roundIndex, i0) => {
|
||||
return {
|
||||
a: common_vendor.t(round),
|
||||
b: common_vendor.f(displayPlayers.value, (player, playerIndex, i1) => {
|
||||
return {
|
||||
a: common_vendor.t(player.roundScores[roundIndex] || 0),
|
||||
b: common_vendor.o(($event) => editScore(_ctx.index), player.id),
|
||||
c: player.id
|
||||
};
|
||||
}),
|
||||
c: round
|
||||
};
|
||||
}),
|
||||
p: common_vendor.o(startScoring),
|
||||
q: common_vendor.o(settleRoom)
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
<view class="singleplay data-v-d36a0b1a"><view class="top-functions data-v-d36a0b1a"><view class="function-btn data-v-d36a0b1a" bindtap="{{b}}"><image src="{{a}}" class="btn-icon data-v-d36a0b1a" mode="aspectFill"></image><text class="data-v-d36a0b1a">添加玩家</text></view><view class="function-btn data-v-d36a0b1a" bindtap="{{d}}"><image src="{{c}}" class="btn-icon data-v-d36a0b1a" mode="aspectFill"></image><text class="data-v-d36a0b1a">转让计分员</text></view><view class="switch-group data-v-d36a0b1a"><text class="data-v-d36a0b1a">语音播报</text><switch class="data-v-d36a0b1a" checked="{{e}}" bindchange="{{f}}" color="#007aff"/></view><view class="switch-group data-v-d36a0b1a"><text class="data-v-d36a0b1a">台板</text><switch class="data-v-d36a0b1a" checked="{{g}}" bindchange="{{h}}" color="#007aff"/></view></view><view class="game-record data-v-d36a0b1a"><view class="record-title data-v-d36a0b1a"> 对局记录 <text class="hint data-v-d36a0b1a">点击对局分数进行修改</text></view><view class="user-section data-v-d36a0b1a"><text class="user-hint data-v-d36a0b1a">点击自己头像编辑用户头像和昵称~</text><view class="user-info data-v-d36a0b1a" bindtap="{{k}}"><image class="user-avatar data-v-d36a0b1a" src="{{i}}" mode="aspectFill"></image><view class="user-details data-v-d36a0b1a"><view class="user-name data-v-d36a0b1a">{{j}} <text class="self-tag data-v-d36a0b1a">自己</text></view></view></view></view><view class="players-section data-v-d36a0b1a"><view class="section-header data-v-d36a0b1a"><text class="header-title data-v-d36a0b1a">玩家</text><text class="player-count data-v-d36a0b1a">({{l}}位)</text></view><view class="players-table data-v-d36a0b1a"><view class="table-header data-v-d36a0b1a"><view class="player-column data-v-d36a0b1a">玩家</view><view class="score-column data-v-d36a0b1a">总分</view></view><view class="table-body data-v-d36a0b1a"><view wx:for="{{m}}" wx:for-item="player" wx:key="e" class="player-row data-v-d36a0b1a"><view class="player-info data-v-d36a0b1a"><image class="data-v-d36a0b1a" src="{{player.a}}" mode="aspectFill"></image><text class="data-v-d36a0b1a">{{player.b}}</text></view><view class="score-display data-v-d36a0b1a" bindtap="{{player.d}}">{{player.c}}</view></view></view></view></view></view><view class="bottom-buttons data-v-d36a0b1a"><button class="start-btn data-v-d36a0b1a" type="primary" bindtap="{{n}}">开局计分</button><button class="settle-btn data-v-d36a0b1a" type="default" bindtap="{{o}}">结算房间</button></view></view>
|
||||
<view class="singleplay data-v-d36a0b1a"><view class="top-functions data-v-d36a0b1a"><view class="function-btn data-v-d36a0b1a" bindtap="{{b}}"><image src="{{a}}" class="btn-icon data-v-d36a0b1a" mode="aspectFill"></image><text class="data-v-d36a0b1a">添加玩家</text></view><view class="function-btn data-v-d36a0b1a" bindtap="{{d}}"><image src="{{c}}" class="btn-icon data-v-d36a0b1a" mode="aspectFill"></image><text class="data-v-d36a0b1a">转让计分员</text></view><view class="switch-group data-v-d36a0b1a"><text class="data-v-d36a0b1a">语音播报</text><switch class="data-v-d36a0b1a" checked="{{e}}" bindchange="{{f}}" color="#007aff"/></view><view class="switch-group data-v-d36a0b1a"><text class="data-v-d36a0b1a">台板</text><switch class="data-v-d36a0b1a" checked="{{g}}" bindchange="{{h}}" color="#007aff"/></view></view><view class="game-record data-v-d36a0b1a"><view class="record-title data-v-d36a0b1a"> 对局记录 <text class="hint data-v-d36a0b1a">点击对局分数进行修改</text></view><view class="user-section data-v-d36a0b1a"><text class="user-hint data-v-d36a0b1a">点击自己头像编辑用户头像和昵称~</text><view class="user-info data-v-d36a0b1a" bindtap="{{k}}"><image class="user-avatar data-v-d36a0b1a" src="{{i}}" mode="aspectFill"></image><view class="user-details data-v-d36a0b1a"><view class="user-name data-v-d36a0b1a">{{j}} <text class="self-tag data-v-d36a0b1a">自己</text></view></view></view></view><view class="players-section data-v-d36a0b1a"><view class="section-header data-v-d36a0b1a"><text class="header-title data-v-d36a0b1a">玩家</text><text class="player-count data-v-d36a0b1a">({{l}}位)</text></view><view class="players-table-container vertical data-v-d36a0b1a"><view class="players-table vertical data-v-d36a0b1a"><view class="table-row header-row data-v-d36a0b1a"><view class="header-cell player-column data-v-d36a0b1a">玩家</view><view wx:for="{{m}}" wx:for-item="player" wx:key="c" class="data-cell data-v-d36a0b1a"><view class="player-info data-v-d36a0b1a"><image class="data-v-d36a0b1a" src="{{player.a}}" mode="aspectFill"></image><text class="data-v-d36a0b1a">{{player.b}}</text></view></view></view><view class="table-row data-v-d36a0b1a"><view class="header-cell score-column data-v-d36a0b1a">总分</view><view wx:for="{{n}}" wx:for-item="player" wx:key="b" class="data-cell score-display data-v-d36a0b1a">{{player.a}}</view></view><view wx:for="{{o}}" wx:for-item="round" wx:key="c" class="table-row data-v-d36a0b1a"><view class="header-cell score-column data-v-d36a0b1a">第{{round.a}}局</view><view wx:for="{{round.b}}" wx:for-item="player" wx:key="c" bindtap="{{player.b}}" class="data-cell score-display data-v-d36a0b1a">{{player.a}}</view></view></view></view></view></view><view class="bottom-buttons data-v-d36a0b1a"><button class="start-btn data-v-d36a0b1a" type="primary" bindtap="{{p}}">开局计分</button><button class="settle-btn data-v-d36a0b1a" type="default" bindtap="{{q}}">结算房间</button></view></view>
|
||||
@@ -133,83 +133,111 @@
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 15rpx;
|
||||
}
|
||||
.players-section .section-header .header-title.data-v-d36a0b1a {
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.players-section .section-header .player-count.data-v-d36a0b1a {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
/* 玩家表格容器 - 实现横向滚动 */
|
||||
.players-table-container.data-v-d36a0b1a {
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
border-radius: 10rpx;
|
||||
border: 1rpx solid #e0e0e0;
|
||||
}
|
||||
/* 垂直表格容器 - 实现垂直滚动和横向滑动 */
|
||||
.players-table-container.vertical.data-v-d36a0b1a {
|
||||
overflow-y: auto;
|
||||
overflow-x: auto;
|
||||
max-height: 500rpx;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
/* 优化移动端滚动体验 */
|
||||
}
|
||||
/* 玩家表格 */
|
||||
.players-table.data-v-d36a0b1a {
|
||||
border: 1rpx solid #e0e0e0;
|
||||
border-radius: 10rpx;
|
||||
overflow: hidden;
|
||||
min-width: 100%;
|
||||
overflow: visible;
|
||||
}
|
||||
.players-table .table-header.data-v-d36a0b1a {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
background-color: #f5f5f5;
|
||||
border-bottom: 1rpx solid #e0e0e0;
|
||||
}
|
||||
.players-table .table-header .player-column.data-v-d36a0b1a {
|
||||
flex: 2;
|
||||
padding: 15rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
border-right: 1rpx solid #e0e0e0;
|
||||
}
|
||||
.players-table .table-header .score-column.data-v-d36a0b1a {
|
||||
flex: 1;
|
||||
padding: 15rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
}
|
||||
.players-table .table-body .player-row.data-v-d36a0b1a {
|
||||
/* 垂直表格样式 */
|
||||
.players-table.vertical .table-row.data-v-d36a0b1a {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
border-bottom: 1rpx solid #e0e0e0;
|
||||
}
|
||||
.players-table .table-body .player-row.data-v-d36a0b1a:last-child {
|
||||
.players-table.vertical .table-row.data-v-d36a0b1a:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.players-table .table-body .player-row .player-info.data-v-d36a0b1a {
|
||||
flex: 2;
|
||||
.players-table.vertical .header-row.data-v-d36a0b1a {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
.players-table.vertical .header-cell.data-v-d36a0b1a {
|
||||
width: 150rpx;
|
||||
flex-shrink: 0;
|
||||
padding: 15rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
border-right: 1rpx solid #e0e0e0;
|
||||
background-color: #f5f5f5;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 15rpx;
|
||||
justify-content: center;
|
||||
}
|
||||
.players-table.vertical .player-column.data-v-d36a0b1a {
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.players-table.vertical .score-column.data-v-d36a0b1a {
|
||||
text-align: center;
|
||||
}
|
||||
.players-table.vertical .data-cell.data-v-d36a0b1a {
|
||||
min-width: 120rpx;
|
||||
flex-shrink: 0;
|
||||
padding: 15rpx;
|
||||
border-right: 1rpx solid #e0e0e0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
/* 最后一列不需要右边框 */
|
||||
}
|
||||
.players-table .table-body .player-row .player-info image.data-v-d36a0b1a {
|
||||
.players-table.vertical .data-cell.data-v-d36a0b1a:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
.players-table.vertical .player-info.data-v-d36a0b1a {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 8rpx;
|
||||
width: 100%;
|
||||
}
|
||||
.players-table.vertical .player-info image.data-v-d36a0b1a {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.players-table .table-body .player-row .player-info text.data-v-d36a0b1a {
|
||||
font-size: 26rpx;
|
||||
.players-table.vertical .player-info text.data-v-d36a0b1a {
|
||||
font-size: 24rpx;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
word-break: break-word;
|
||||
}
|
||||
.players-table .table-body .player-row .score-display.data-v-d36a0b1a {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 15rpx;
|
||||
.players-table.vertical .score-display.data-v-d36a0b1a {
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
color: #007aff;
|
||||
}
|
||||
.players-table .table-body .player-row .score-display.data-v-d36a0b1a:active {
|
||||
.players-table.vertical .score-display.data-v-d36a0b1a:active {
|
||||
background-color: #f0f8ff;
|
||||
}
|
||||
/* 底部操作按钮 */
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"libVersion": "3.11.1",
|
||||
"projectname": "scoring",
|
||||
"setting": {
|
||||
"urlCheck": true,
|
||||
"coverView": true,
|
||||
"lazyloadPlaceholderEnable": false,
|
||||
"skylineRenderEnable": false,
|
||||
"preloadBackgroundData": false,
|
||||
"autoAudits": false,
|
||||
"showShadowRootInWxmlPanel": true,
|
||||
"compileHotReLoad": true
|
||||
}
|
||||
"libVersion": "3.11.1",
|
||||
"projectname": "scoring",
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"coverView": true,
|
||||
"lazyloadPlaceholderEnable": false,
|
||||
"skylineRenderEnable": false,
|
||||
"preloadBackgroundData": false,
|
||||
"autoAudits": false,
|
||||
"showShadowRootInWxmlPanel": true,
|
||||
"compileHotReLoad": true
|
||||
}
|
||||
}
|
||||
BIN
scoring/unpackage/dist/dev/mp-weixin/static/avatar14.png
vendored
Normal file
BIN
scoring/unpackage/dist/dev/mp-weixin/static/avatar14.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
@@ -1,4 +1,4 @@
|
||||
"use strict";
|
||||
const BASE_URL = "http://172.20.10.2:8080";
|
||||
const BASE_URL = "http://10.87.64.114:8080";
|
||||
exports.BASE_URL = BASE_URL;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/CommonValues.js.map
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
const common_vendor = require("../common/vendor.js");
|
||||
const utils_CommonValues = require("./CommonValues.js");
|
||||
const api_login = require("../api/login.js");
|
||||
function GET(url, data) {
|
||||
return SIMPLE(url, data, "GET");
|
||||
}
|
||||
function GET_TOKEN(url, data, token) {
|
||||
return SIMPLE_TOKEN(url, data, token, "GET");
|
||||
}
|
||||
@@ -10,19 +13,24 @@ function POST(url, data) {
|
||||
}
|
||||
let requestTime = 0;
|
||||
async function SIMPLE(url, data, method) {
|
||||
if (requestTime == 0) {
|
||||
token = await api_login.loginSystem();
|
||||
if (token.data) {
|
||||
SIMPLE(url, data, method);
|
||||
return;
|
||||
let token = common_vendor.index.getStorageSync("APP_TOKEN") || "";
|
||||
if (requestTime == 0 && false) {
|
||||
try {
|
||||
token = await api_login.loginSystem();
|
||||
if (typeof token === "string") {
|
||||
requestTime += 1;
|
||||
}
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("log", "at utils/request.js:44", "登录系统失败:", error);
|
||||
}
|
||||
} else if (requestTime == 0) {
|
||||
requestTime += 1;
|
||||
} else {
|
||||
var token = common_vendor.index.getStorageSync("APP_TOKEN");
|
||||
}
|
||||
const fullUrl = `${utils_CommonValues.BASE_URL}${url}`;
|
||||
common_vendor.index.__f__("log", "at utils/request.js:51", `[网络请求] ${method} ${fullUrl}`, data);
|
||||
return new Promise((resolve, reject) => {
|
||||
common_vendor.index.request({
|
||||
url: `${utils_CommonValues.BASE_URL}${url}`,
|
||||
url: fullUrl,
|
||||
method,
|
||||
header: {
|
||||
"Content-Type": "application/json;charset=utf-8",
|
||||
@@ -31,22 +39,46 @@ async function SIMPLE(url, data, method) {
|
||||
dataType: "json",
|
||||
data,
|
||||
success: (res) => {
|
||||
if (res.data.code == "200" || res.data.statusCode == "200") {
|
||||
resolve(res.data);
|
||||
common_vendor.index.__f__("log", "at utils/request.js:64", `[网络响应] ${method} ${fullUrl}`, res.data);
|
||||
if (res.statusCode === 200) {
|
||||
resolve(res);
|
||||
} else {
|
||||
reject(res);
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
common_vendor.index.__f__("error", "at utils/request.js:74", `[网络错误] ${method} ${fullUrl}`, err);
|
||||
let errorMsg = "网络请求失败";
|
||||
if (err.errMsg && err.errMsg.includes("url not in domain list")) {
|
||||
errorMsg = "请求地址未在小程序管理后台配置,请联系管理员";
|
||||
{
|
||||
common_vendor.index.__f__("error", "at utils/request.js:81", "\n=== 开发环境网络请求错误解决方案 ===");
|
||||
common_vendor.index.__f__("error", "at utils/request.js:82", "错误原因:请求的URL不在小程序合法域名列表中");
|
||||
common_vendor.index.__f__("error", "at utils/request.js:83", "当前请求URL:", fullUrl);
|
||||
common_vendor.index.__f__("error", "at utils/request.js:84", "解决方案:");
|
||||
common_vendor.index.__f__("error", "at utils/request.js:85", '1. 在微信开发者工具中,点击右上角的"详情"');
|
||||
common_vendor.index.__f__("error", "at utils/request.js:86", '2. 选择"本地设置"');
|
||||
common_vendor.index.__f__("error", "at utils/request.js:87", '3. 勾选"不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书"');
|
||||
common_vendor.index.__f__("error", "at utils/request.js:88", "4. 重新编译小程序");
|
||||
common_vendor.index.__f__("error", "at utils/request.js:89", "==================================\n");
|
||||
}
|
||||
} else if (err.errMsg && err.errMsg.includes("connect fail")) {
|
||||
errorMsg = "网络连接失败,请检查网络设置";
|
||||
} else if (err.errMsg && err.errMsg.includes("localhost")) {
|
||||
errorMsg = "无法连接到本地服务器,请检查BASE_URL配置";
|
||||
}
|
||||
err.userFriendlyMsg = errorMsg;
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
function SIMPLE_TOKEN(url, data, token, method) {
|
||||
const fullUrl = `${utils_CommonValues.BASE_URL}${url}`;
|
||||
common_vendor.index.__f__("log", "at utils/request.js:105", `[网络请求] ${method} ${fullUrl}`, data);
|
||||
return new Promise((resolve, reject) => {
|
||||
common_vendor.index.request({
|
||||
url: `${utils_CommonValues.BASE_URL}${url}`,
|
||||
url: fullUrl,
|
||||
method,
|
||||
header: {
|
||||
"Content-Type": "application/json;charset=utf-8",
|
||||
@@ -55,18 +87,28 @@ function SIMPLE_TOKEN(url, data, token, method) {
|
||||
dataType: "json",
|
||||
data,
|
||||
success: (res) => {
|
||||
if (res.data.code == "200" || res.data.statusCode == "200") {
|
||||
resolve(res.data);
|
||||
common_vendor.index.__f__("log", "at utils/request.js:118", `[网络响应] ${method} ${fullUrl}`, res.data);
|
||||
if (res.statusCode === 200) {
|
||||
resolve(res);
|
||||
} else {
|
||||
reject(res);
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
common_vendor.index.__f__("error", "at utils/request.js:128", `[网络错误] ${method} ${fullUrl}`, err);
|
||||
let errorMsg = "网络请求失败";
|
||||
if (err.errMsg && err.errMsg.includes("url not in domain list")) {
|
||||
errorMsg = "请求地址未在小程序管理后台配置,请联系管理员";
|
||||
} else if (err.errMsg && err.errMsg.includes("connect fail")) {
|
||||
errorMsg = "网络连接失败,请检查网络设置";
|
||||
}
|
||||
err.userFriendlyMsg = errorMsg;
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.GET = GET;
|
||||
exports.GET_TOKEN = GET_TOKEN;
|
||||
exports.POST = POST;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/request.js.map
|
||||
|
||||
Reference in New Issue
Block a user