From eae888d7c9cb5c68bfc3384ae167a9f2546d5db5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B0=E5=B2=A9?= Date: Thu, 20 Nov 2025 15:48:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=8F=91=E7=A7=AF=E5=88=86=E5=85=91?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 9 +- src/components/points-and-badge/badge.vue | 4 +- src/pages/competition/matching.vue | 13 +- src/pages/competition/pk.vue | 18 ++- src/pages/competition/ranking.vue | 5 +- src/pages/competition/result.vue | 88 ++++++----- .../competition/style/matching-prelude.scss | 11 ++ src/pages/examination/components/dialog.vue | 3 +- src/pages/pointsRedemption/index.vue | 138 ++++++++++++------ 9 files changed, 192 insertions(+), 97 deletions(-) diff --git a/.env.development b/.env.development index 94c1bf8b..cdb41669 100644 --- a/.env.development +++ b/.env.development @@ -5,17 +5,16 @@ ENV = 'development' # VITE_APP_BASE_API_Url = 'https://aits.jlbank.com.cn:7001' -VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7002' +# VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7002' # VITE_APP_BASE_API_Url = 'http://192.168.247.200' # VITE_APP_BASE_API_Url = 'http://aitscdn.jlbank.com.cn:7001' # VITE_APP_BASE_API_Url = 'http://192.168.108.129' # dev -#VITE_APP_BASE_API_Url = 'http://25.18.122.65:7001' +VITE_APP_BASE_API_Url = 'http://25.18.122.65:7001' # sit - # VITE_APP_BASE_API_Url = 'http://25.18.122.91:9786' # UAT # VITE_APP_BASE_API_Url = 'http://25.18.122.78:9786' @@ -31,11 +30,11 @@ VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7002' # VITE_APP_BASE_H5_API_Url = 'http://25.18.122.65:7001' -#VITE_APP_BASE_H5_API_Url = 'http://25.18.122.91:9786' +# VITE_APP_BASE_H5_API_Url = 'http://25.18.122.91:9786' # VITE_APP_BASE_H5_API_Url = 'http://25.18.122.78:9786' # VITE_APP_BASE_H5_API_Url_TRAAPP = 'http://192.168.247.200' # VITE_APP_BASE_H5_API_Url_TRAAPP = 'http://25.64.32.158:9601' # VITE_APP_BASE_H5_API_Url_TEST = 'http://127.0.0.1:5000' -#VITE_APP_BASE_H5_API_Url_TRAEXAM = 'http://192.168.247.200' +# VITE_APP_BASE_H5_API_Url_TRAEXAM = 'http://192.168.247.200' # VITE_APP_BASE_H5_API_Url_TRAASK = 'http://25.64.32.154:9605' diff --git a/src/components/points-and-badge/badge.vue b/src/components/points-and-badge/badge.vue index 7a1089c6..c6823583 100644 --- a/src/components/points-and-badge/badge.vue +++ b/src/components/points-and-badge/badge.vue @@ -64,8 +64,8 @@ let CloseComplete const title = computed(() => badgesList.value.length === 1 - ? '恭喜你获得新徽章' - : `恭喜你获得${titleNumberText[badgesList.value.length - 1]}枚新徽章` + ? '恭喜你获得徽章' + : `恭喜你获得${titleNumberText[badgesList.value.length - 1]}枚徽章` ); const buttonColor = 'linear-gradient( 270deg, #F81758 0%, #FFA062 100%)'; const customStyle = { diff --git a/src/pages/competition/matching.vue b/src/pages/competition/matching.vue index 3f36ee62..94dbe151 100644 --- a/src/pages/competition/matching.vue +++ b/src/pages/competition/matching.vue @@ -99,9 +99,14 @@ - 双人对战规则说明 + + 规则说明 + + + + - {{ ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'|| data_info.ruleDesc }} + {{ data_info.ruleDesc }} @@ -117,10 +122,10 @@ import { queryTraCompetitionInfoByPkUser } from '@/api/competition'; import { onLoad } from '@dcloudio/uni-app'; import { defaultAnonymousAvatar } from '@/enum'; - import { pkAnonymousClose, pkAnonymousOpen, pkRankingList, pkRules, switchIcon } from '@/common/imgSvg'; + import { pkAnonymousClose, pkAnonymousOpen, pkRankingList, pkRules, switchIcon, optionErrorIcon } from '@/common/imgSvg'; import { queryTraUserAnonyByUserId, updateTraUserAnony } from '@/api/user'; import selectionInstitutions from '@/components/selection-institutions/index.vue'; - import { nextTick } from 'process'; + const data_info = reactive({ userId: '', diff --git a/src/pages/competition/pk.vue b/src/pages/competition/pk.vue index 361c1d4a..ccd393e6 100644 --- a/src/pages/competition/pk.vue +++ b/src/pages/competition/pk.vue @@ -412,7 +412,16 @@ // console.log('倒计时时间', practiceRemainingTime.value); // Pk时间到 if (practiceRemainingTime.value <= 0) { - + console.log('Pk时间到,带走的数据', pkData); + common.setPageCache('competition_pk_to_resulf', pkData); + if (practiceTimeTimer) { + clearInterval(practiceTimeTimer); + } + nextTick(() => { + common.redirectTo( + `/pages/competition/result?mode=${mode}&execId=${pkData.execId}&orgId=${pkData.orgId}&papersId=${pkData.papersId}` + ); + }); } }, 1000); @@ -425,7 +434,6 @@ return; } Object.assign(pkData, pkDataParams); - console.log('pkData', pkData); pkDataParams.qnsInfoVos.forEach((res) => { topicList.push({ ...res, @@ -446,6 +454,12 @@ onMounted(() => { startTimer(); // 启动/恢复定时器 }); + onUnmounted(() => { + // 卸载定时器 + if (practiceTimeTimer) { + clearInterval(practiceTimeTimer); + } + }) onBackPress((res) => res.from === 'backbutton'); diff --git a/src/pages/competition/ranking.vue b/src/pages/competition/ranking.vue index 32467cca..7fdef394 100644 --- a/src/pages/competition/ranking.vue +++ b/src/pages/competition/ranking.vue @@ -37,7 +37,7 @@ :src="item.ossAddr" mode="aspectFit" > - + {{ item.isAnony === 'N' ? item.userName : formatName(item.userName) }} @@ -66,7 +66,7 @@ :src="userRankObj.ossAddr" mode="aspectFit" > - + {{ userRankObj.isAnony === 'N' ? userRankObj.userName : formatName(userRankObj.userName) }} {{ userRankObj.orgName }} @@ -87,6 +87,7 @@ import { formatSecondsToMS } from './js/tool'; import { ref } from 'vue'; import { formatName } from '@/common/common'; + import { defaultAnonymousAvatar } from '@/enum'; const papersId = ref(''); const orgId = ref(''); const userList = ref([]); diff --git a/src/pages/competition/result.vue b/src/pages/competition/result.vue index 59e67c68..9681961c 100644 --- a/src/pages/competition/result.vue +++ b/src/pages/competition/result.vue @@ -37,7 +37,9 @@ - {{ pkData.isAnony === 'N' ?pkData.userName:formatName(pkData.userName) }} + + {{ pkData.isAnony === 'N' ? pkData.userName : formatName(pkData.userName) }} + 正确/总题数 {{ pkData.correctNub }} @@ -60,7 +62,9 @@ - {{ pkData.pkIsAnony === 'N' ? pkData.userNamePk : formatName(pkData.userNamePk) }} + + {{ pkData.pkIsAnony === 'N' ? pkData.userNamePk : formatName(pkData.userNamePk) }} + 正确/总题数 {{ pkData.correctNubPk }} @@ -81,7 +85,7 @@ - 查看排行榜 + 查看排行榜 @@ -131,8 +135,8 @@ totalScore: 0, // 我方总分 int // 对方的 - userIdPk: '', // 用户Id String - userNamePk: '', // 用户姓名 String + userIdPk: '', // 对方用户Id String + userNamePk: '', // 对方用户姓名 String imgPk: '', // 对方头像 String pkIsAnony: '', // 匿名 String correctNubPk: 0, // 正确数 int @@ -146,8 +150,7 @@ common.navigateBack(2); } else if (type === 'continue') { common.navigateBack(); - } else if (type === 'toRanking' && mode.value ==='pk_in') { - + } else if (type === 'toRanking' && mode.value === 'pk_in') { common.navigateTo(`/pages/competition/ranking?papersId=${pkData.papersId}&orgId=${pkData.orgId}`); } }; @@ -160,43 +163,56 @@ const pkDataInit = common.getPageCache('competition_pk_to_resulf'); const userInfo = getUserInfo(); console.log('userInfo', userInfo); + console.log('pkDataInit', pkDataInit); Object.assign(pkData, { - userName: userInfo.userName, + userName: pkDataInit.userName ?? '', isAnony: pkDataInit.isAnony ?? '', - pkIsAnony: pkDataInit.pkIsAnony ?? '' + pkIsAnony: pkDataInit.pkIsAnony ?? '', + userNamePk: pkDataInit.pkUserName ?? '' }); }); onMounted(() => { action.value = 'loading'; + setTimeout(() => { queryCompetitionAnswerResult({ execId: pkData.execId }).then(({ body }) => { - const userResult = body.userResult; - pkData.answerResult = body.answerResult; // 答题结果 Y代表我赢,N代表我输 - pkData.timeDifference = body.timeDifference; // 时差 int 单位 s - Object.assign(pkData, { - // 自己的 - isAnony: userResult.isAnony, // 匿名 String - correctNub: userResult.correctNub, // 正确数 int - qnsNub: userResult.qnsNub, // 总数 int - timeTaken: userResult.timeTaken, // 用时 int - totalScore: userResult.totalScore || 0, // 我方总分 - // 对方的 - userIdPk: userResult.userIdPk, // 用户Id String - userNamePk: userResult.userNamePk, // 用户姓名 String - imgPk: userResult.imgPk, // 用户姓名 String - pkIsAnony: userResult.isAnonyPk, // 匿名 String - correctNubPk: userResult.correctNubPk, // 正确数 int - qnsNubPk: userResult.qnsNubPk || 0, // 总数 int - timeTakenPk: userResult.timeTakenPk || 0, // 用时 int - totalScorePk: userResult.totalScorePk || 0 // 对方总分 - }); - nextTick(() => { - action.value = 'result'; - }); - if(mode.value === 'pk_in') { - console.log('调用它'); - pointAndBadgesRun('11') - } + // 计算需要额外延时的时间 + const currentTime = Math.floor(Date.now() / 1000); + // 2. 计算对手的答题结束时间(秒) + const opponentEndTime = body.endTime + body.timeDifference; + // 3. 计算当前时间到对手结束时间的延迟时间(秒),负数则取0 + const delayTime = Math.max(0, opponentEndTime - currentTime); + console.log('计算需要额外延时的时间', delayTime); + setTimeout(() => { + const userResult = body.userResult; + pkData.answerResult = body.answerResult; // 答题结果 Y代表我赢,N代表我输 + pkData.timeDifference = body.timeDifference; // 时差 int 单位 s + Object.assign(pkData, { + // 自己的 + isAnony: userResult.isAnony, // 匿名 String + userName: userResult.userName, // 匿名 String + correctNub: userResult.correctNub, // 正确数 int + qnsNub: userResult.qnsNub, // 总数 int + timeTaken: userResult.timeTaken, // 用时 int + totalScore: userResult.totalScore || 0, // 我方总分 + // 对方的 + userIdPk: userResult.userIdPk, // 用户Id String + userNamePk: userResult.userNamePk, // 用户姓名 String + imgPk: userResult.imgPk, // 用户姓名 String + pkIsAnony: userResult.isAnonyPk, // 匿名 String + correctNubPk: userResult.correctNubPk, // 正确数 int + qnsNubPk: userResult.qnsNubPk || 0, // 总数 int + timeTakenPk: userResult.timeTakenPk || 0, // 用时 int + totalScorePk: userResult.totalScorePk || 0 // 对方总分 + }); + nextTick(() => { + action.value = 'result'; + }); + if (mode.value === 'pk_in') { + console.log('调用它'); + pointAndBadgesRun('11'); + } + }, delayTime); }); }, 2000); }); diff --git a/src/pages/competition/style/matching-prelude.scss b/src/pages/competition/style/matching-prelude.scss index d1e7b914..809d12a9 100644 --- a/src/pages/competition/style/matching-prelude.scss +++ b/src/pages/competition/style/matching-prelude.scss @@ -326,6 +326,17 @@ color: #000000; font-style: normal; border-bottom: 2rpx solid #efefef; + + } + .title_back_icon{ + position: absolute; + right: 20rpx; + top: 20rpx; + padding: 10rpx; + .img{ + width: 34rpx; + height: 34rpx; + } } .note_div { padding: 20rpx 0 80rpx 0; diff --git a/src/pages/examination/components/dialog.vue b/src/pages/examination/components/dialog.vue index dd337d3b..299b5876 100644 --- a/src/pages/examination/components/dialog.vue +++ b/src/pages/examination/components/dialog.vue @@ -11,6 +11,7 @@ + {{ msg }} {{ item?.name || '' }} @@ -95,9 +96,9 @@ font-family: PingFangSC; text-align: center; font-style: normal; - font-weight: 400; font-size: 30rpx; color: #333333; + font-weight: 600; } .button_div { diff --git a/src/pages/pointsRedemption/index.vue b/src/pages/pointsRedemption/index.vue index c2ba8a6f..774f50da 100644 --- a/src/pages/pointsRedemption/index.vue +++ b/src/pages/pointsRedemption/index.vue @@ -1,9 +1,9 @@ - + + 活动介绍 + {{ data.actEvent }} + 物品图片 + + + + + +