diff --git a/package1/buyFood/buyFood.vue b/package1/buyFood/buyFood.vue index 55bf091..9655003 100644 --- a/package1/buyFood/buyFood.vue +++ b/package1/buyFood/buyFood.vue @@ -334,7 +334,7 @@ ¥ + @input="onCommissionPopupInput" /> 取消 diff --git a/package1/components/planet/planet-box.vue b/package1/components/planet/planet-box.vue index e346dbe..1840f92 100644 --- a/package1/components/planet/planet-box.vue +++ b/package1/components/planet/planet-box.vue @@ -183,70 +183,71 @@ .pb.compact { flex: 1; min-width: 0; - min-height: 190rpx; + min-height: 368rpx; margin-top: 0; - padding: 22rpx 18rpx; + padding: 28rpx 22rpx; border-radius: 34rpx; flex-direction: column; align-items: flex-start; + justify-content: space-between; } .pb.compact .pb-tag { right: 18rpx; - top: 14rpx; - font-size: 15rpx; + top: 18rpx; + font-size: 17rpx; } .pb.compact .pb-visual { - width: 94rpx; - height: 94rpx; + width: 126rpx; + height: 126rpx; } .pb.compact .pb-glow { - width: 112rpx; - height: 112rpx; + width: 148rpx; + height: 148rpx; } .pb.compact .pb-box { - width: 66rpx; - height: 68rpx; - border-radius: 18rpx; + width: 90rpx; + height: 92rpx; + border-radius: 22rpx; } .pb.compact .pb-box-lid { - left: -6rpx; - top: -14rpx; - width: 78rpx; - height: 26rpx; + left: -8rpx; + top: -18rpx; + width: 106rpx; + height: 34rpx; } .pb.compact .pb-box-face { - width: 32rpx; - height: 32rpx; - line-height: 32rpx; - font-size: 22rpx; + width: 42rpx; + height: 42rpx; + line-height: 42rpx; + font-size: 28rpx; } .pb.compact .pb-mid { margin-left: 0; - margin-top: 10rpx; + margin-top: 8rpx; } .pb.compact .pb-title { - font-size: 27rpx; + font-size: 31rpx; } .pb.compact .pb-desc { - font-size: 20rpx; - line-height: 28rpx; - margin-top: 6rpx; + font-size: 22rpx; + line-height: 32rpx; + margin-top: 8rpx; } .pb.compact .pb-btn { - margin-top: 14rpx; - height: 48rpx; - line-height: 48rpx; - padding: 0 18rpx; - font-size: 21rpx; + margin-top: 18rpx; + height: 58rpx; + line-height: 58rpx; + padding: 0 24rpx; + font-size: 24rpx; } diff --git a/package1/components/planet/planet-daily-loop.vue b/package1/components/planet/planet-daily-loop.vue index 0f7c7b1..c751a9e 100644 --- a/package1/components/planet/planet-daily-loop.vue +++ b/package1/components/planet/planet-daily-loop.vue @@ -2,14 +2,10 @@ - 2 MIN DAILY + JOIN DAILY {{progressTitle}} 完成任务可获得星球券与开奖权重 - - 星球补给地图 - 进入 - @@ -605,7 +605,6 @@ .ph-period { position: relative; text-align: center; - color: #7E9691; font-size: 22rpx; font-weight: 700; margin-right: 12rpx; diff --git a/package1/components/planet/planet-operate.vue b/package1/components/planet/planet-operate.vue index ad6e63b..098b5e8 100644 --- a/package1/components/planet/planet-operate.vue +++ b/package1/components/planet/planet-operate.vue @@ -37,7 +37,7 @@ {{o.cycleHours}}h · 投入{{o.investTickets}}券 - 预计收获 {{o.expectedTotal}} 券 + 预计 {{o.matureTime}} 收获 {{o.expectedTotal}} 券 {{o.status === 2 ? '已收' : '收获'}} @@ -48,10 +48,10 @@ TOWER 防御塔 Lv{{state.towerLevel || 1}} - 拦截 {{state.towerInterceptRate || 0}}% · 反击 {{state.towerCounterRate || 0}}% · 伤害 {{state.towerDamage || 0}} + 拦截概率 {{state.towerInterceptRate || 0}}% · 反击概率 {{state.towerCounterRate || 0}}% 下一级 Lv{{nextTower.level}} - 拦截 {{nextTower.interceptRate || 0}}% · 反击 {{nextTower.counterRate || 0}}% · 伤害 {{nextTower.damage || 0}} + 拦截概率 {{nextTower.interceptRate || 0}}% · 反击概率 {{nextTower.counterRate || 0}}% 升级消耗 {{nextTower.upgradeCost || 0}} 张星球券 @@ -59,7 +59,7 @@ 🛡️ - 被偷券时更容易挡住,还能反击消耗对方体力。 + 被偷券时更容易挡住,还能反击掉落对方星球券。 @@ -123,7 +123,7 @@ .po-tool-tip { position: relative; z-index: 1; display: flex; gap: 12rpx; margin-top: 16rpx; padding: 16rpx 18rpx; border-radius: 24rpx; background: rgba(255,184,77,0.13); border: 2rpx solid rgba(255,184,77,0.22); color: #7A5420; font-size: 22rpx; line-height: 1.45; font-weight: 800; max-width: 430rpx; } .po-tool-tip text:first-child { flex-shrink: 0; } .po-tool-tip.tower-tip { background: rgba(79,183,255,0.13); border-color: rgba(79,183,255,0.22); color: #315A78; } - .po-tree { position: absolute; right: 54rpx; top: 34rpx; width: 140rpx; height: 150rpx; animation: treeBreath 2.6s ease-in-out infinite; } + .po-tree { position: absolute; right: 6rpx; top: 34rpx; width: 140rpx; height: 150rpx; animation: treeBreath 2.6s ease-in-out infinite; } .po-tree-crown { width: 130rpx; height: 110rpx; border-radius: 70rpx 70rpx 50rpx 50rpx; background: radial-gradient(circle at 35% 28%, #FFFFFF, #A8F7C1 42%, #35D6A6); box-shadow: 0 18rpx 38rpx rgba(53,214,166,0.24); } .po-tree-body { margin: -12rpx auto 0; width: 28rpx; height: 66rpx; border-radius: 20rpx; background: linear-gradient(180deg, #F5C68A, #D8894F); } @keyframes treeBreath { 0%,100%{ transform: translateY(0) scale(1); } 50%{ transform: translateY(-10rpx) scale(1.04); } } diff --git a/package1/order/orderDetail.vue b/package1/order/orderDetail.vue index 812f193..ecfca8b 100644 --- a/package1/order/orderDetail.vue +++ b/package1/order/orderDetail.vue @@ -702,7 +702,7 @@ ¥ + @input="onAdditionalFeeInput" /> 取消 diff --git a/package1/planet/adventure.vue b/package1/planet/adventure.vue index db23814..9626ce1 100644 --- a/package1/planet/adventure.vue +++ b/package1/planet/adventure.vue @@ -27,55 +27,64 @@ - + - 今日最快通关榜 - 学院荣耀 + 榜单速览 + 昨日获奖榜单 - - - {{gloryMedals[i] || (i + 1)}} - - {{item.college || '神秘学院'}} - {{item.nickname || '匿名同学'}} + + + + 个人排位榜 + 最快通关 - {{item.durationSeconds || 0}}s + + + {{gloryMedals[i] || (i + 1)}} + + {{item.nickname || '匿名同学'}} + {{item.college || '神秘学院'}} + + {{item.durationSeconds || 0}}s + + + 第一枚金牌等你来拿 - - 今天还没人通关,第一枚金牌等你来拿 - - - - - 学院推进榜 - 我的学院第 {{home.myRankNo || '-'}} 名 - - - {{i + 1}} - - {{item.college || item.nickname || '未知学院'}} - + + + 学院排位榜 + 推进值 + + + + {{i + 1}} + + {{item.college || item.nickname || '未知学院'}} + + + {{item.score || 0}} + + + 快来抢第一棒 - {{item.score || 0}} - 今天还没有学院上榜,快来抢第一棒 {{gameTitle}} - {{cleared ? '已通关' : timerText}} + {{cleared ? clearedPillText : timerText}} 邀请同学来擂台 - + {{isDailyMode ? '开始游戏' : '开始PK'}} 先点这里,再开始消除卡牌 - 今日已排位 - 明天再来为学院继续推进 + 今日已通关 + {{dailyResultText || '明天再来为学院继续推进'}} @@ -90,6 +99,10 @@ {{timeLeft}}秒 {{timerHint}} + + {{dailyRestartLeft}} + 今日剩余 + @@ -125,8 +138,11 @@ - - {{isDailyMode ? '重开本关' : '查看同局'}} + + {{playing ? '重开本关' : '开始排位'}} + + + 查看同局 {{startButtonText}} @@ -165,6 +181,50 @@ 确定 + + + + 昨日奖励记录 + 个人前五显示通关秒数,学院前三显示学院分数。 + + + + 个人前五 + 秒数 + + + + {{gloryMedals[i] || item.rankNo || (i + 1)}} + + {{item.nickname || '匿名同学'}} + {{item.rewardContent || '现金奖励待发放'}} + + {{item.durationSeconds || 0}}s + + + 昨日暂无个人奖励 + + + + 学院前三 + 分数 + + + + {{item.rankNo || (i + 1)}} + + {{item.college || item.nickname || '未知学院'}} + {{item.rewardContent || '学院奖励待发放'}} + + {{item.score || 0}} + + + 昨日暂无学院奖励 + + + 知道了 + + @@ -205,7 +265,16 @@ moveCount: 0, buildingLevel: false, prebuildTimer: null, - modal: { show: false, title: '', sub: '' } + needRebuildOnStart: false, + actionLocked: false, + dailyRestartCount: 0, + modal: { show: false, title: '', sub: '' }, + rewardModal: { + show: false, + loading: false, + personalRewardList: [], + collegeRewardList: [] + } } }, computed: { @@ -243,6 +312,9 @@ if (this.isChallengeMode) return '开始挑战' return '开始排位' }, + dailyRestartLeft() { + return Math.max(0, 3 - this.dailyRestartCount) + }, collegeRanks() { const list = this.home.rankList || [] let max = 1 @@ -254,6 +326,54 @@ return item }) }, + compactGloryList() { + return (this.gloryList || []).slice(0, 5) + }, + personalRewardList() { + return this.withRewardKeys(this.rewardModal.personalRewardList || [], 'personal_reward') + }, + collegeRewardList() { + return this.withRewardKeys(this.rewardModal.collegeRewardList || [], 'college_reward') + }, + compactCollegeRanks() { + return (this.collegeRanks || []).slice(0, 3) + }, + myDailyDuration() { + const home = this.home || {} + const fields = [ + home.myDurationSeconds, + home.durationSeconds, + home.myBestDurationSeconds, + home.myRecord && home.myRecord.durationSeconds, + home.todayRecord && home.todayRecord.durationSeconds, + home.adventureRecord && home.adventureRecord.durationSeconds + ] + const value = fields.find(item => Number(item) > 0) + return value ? Number(value) : 0 + }, + myDailyScore() { + const home = this.home || {} + const fields = [ + home.myScore, + home.score, + home.myTodayScore, + home.myRecord && home.myRecord.score, + home.todayRecord && home.todayRecord.score, + home.adventureRecord && home.adventureRecord.score + ] + const value = fields.find(item => Number(item) > 0) + return value ? Number(value) : 0 + }, + dailyResultText() { + const parts = [] + if (this.myDailyDuration) parts.push(`用时 ${this.myDailyDuration}s`) + if (this.myDailyScore) parts.push(`推进值 ${this.myDailyScore}`) + return parts.join(' · ') + }, + clearedPillText() { + if (this.myDailyDuration) return `已通关 ${this.myDailyDuration}s` + return '已通关' + }, rocketPercent() { let mine = null for (let i = 0; i < this.collegeRanks.length; i++) { @@ -339,6 +459,7 @@ } catch (e) {} this.college = uni.getStorageSync('planetCollege_' + this.regionId) || '' if (this.isDailyMode && this.inviteCollege) this.college = this.inviteCollege + this.dailyRestartCount = this.getDailyRestartCount() this.loadColleges() this.loadHome() this.loadGlory() @@ -361,7 +482,7 @@ const elapsed = Math.floor((Date.now() - this.startTs) / 1000) this.timeLeft = Math.max(0, this.timeLimit - elapsed) if (this.timeLeft <= 0) { - this.failLevel('时间到了', '超过300秒,本关失败。不消耗次数,调整顺序再来一次。') + this.failLevel('时间到了', '超过300秒,本次挑战结束。') } else { this.startTimer(false) } @@ -454,6 +575,33 @@ } }) }, + openYesterdayRewards() { + if (!this.regionId || this.rewardModal.loading) return + this.rewardModal.show = true + this.rewardModal.loading = true + this.tui.request('/app/planet/adventure/yesterdayRewards', 'POST', { + regionId: this.regionId + }, false, false, true).then(res => { + this.rewardModal.loading = false + if (res.code == 200 && res.result) { + this.rewardModal.personalRewardList = res.result.personalRewardList || [] + this.rewardModal.collegeRewardList = res.result.collegeRewardList || [] + } else { + this.tui.toast(res.message) + } + }).catch(() => { + this.rewardModal.loading = false + }) + }, + closeRewardModal() { + this.rewardModal.show = false + }, + withRewardKeys(list, prefix) { + return (list || []).map((item, index) => { + item._key = item.id || item.userId || item.college || (prefix + '_' + index) + return item + }) + }, prepareSharedMode() { if (this.isPkMode && this.roomId && !this.fixedSeed) { this.checkPkRoomAvailable(() => { @@ -545,11 +693,19 @@ }, startLevel() { if (this.cleared || this.playing) return + if (this.isDailyMode && this.actionLocked) return + if (this.isDailyMode) this.actionLocked = true this.clearPrebuildTimer() if (!this.college && this.isDailyMode) { + this.actionLocked = false this.openCollegePicker() return } + if (this.isDailyMode && !this.canUseDailyRestart()) { + this.actionLocked = false + this.tui.toast('今日重开次数已用完') + return + } if (!this.isDailyMode) { this.startFixedMode() return @@ -562,18 +718,24 @@ college: this.college }).then(res => { if (res.code != 200 || !res.result) { + this.actionLocked = false this.tui.toast(res.message) return } this.session = res.result this.playing = true this.startTs = Date.now() - if (!this.cards.length) { + this.recordDailyRestartUse() + if (this.needRebuildOnStart || !this.cards.length) { this.roundSeed = this.newRoundSeed() this.buildLevel() if (!this.cards.length) this.buildLevel() + this.needRebuildOnStart = false } this.startTimer() + this.actionLocked = false + }).catch(() => { + this.actionLocked = false }) }, startFixedMode() { @@ -1178,7 +1340,7 @@ if (this.cards.every(item => item.removed) && this.slots.length === 0) { this.finishClear() } else if (this.cards.every(item => item.removed || item.selected) && this.slots.length > 0) { - this.failLevel('没有可消组合', '剩余卡牌无法凑成消除,本关失败。不消耗次数,换个顺序再来一次。') + this.failLevel('没有可消组合', '剩余卡牌无法凑成消除,本次挑战结束。') } else if (this.slots.length >= this.slotLimit) { this.failLevel() } @@ -1194,7 +1356,7 @@ const elapsed = Math.floor((Date.now() - this.startTs) / 1000) this.timeLeft = Math.max(0, this.timeLimit - elapsed) if (this.timeLeft <= 0) { - this.failLevel('时间到了', '超过300秒,本关失败。不消耗次数,调整顺序再来一次。') + this.failLevel('时间到了', '超过300秒,本次挑战结束。') } }, 1000) }, @@ -1259,6 +1421,11 @@ }).then(res => { if (res.code == 200) { this.cleared = true + this.home = Object.assign({}, this.home, { + myDurationSeconds: duration, + myScore: progress + }) + this.clearDailyRestartCount() this.modal = { show: true, title: '排位成功', @@ -1280,10 +1447,11 @@ this.submitCompetitive(false, Math.floor((Date.now() - this.startTs) / 1000), this.remainingCount) return } + this.needRebuildOnStart = true this.modal = { show: true, title: title || '槽位满了', - sub: sub || '本关失败,不消耗次数。换个顺序再推一次。' + sub: `${sub || '本次挑战结束。'}${this.dailyRestartLeft <= 0 ? ' 今日次数已用完。' : ' 今日还可开始 ' + this.dailyRestartLeft + ' 次。'}` } }, submitCompetitive(cleared, duration, remainingCards) { @@ -1336,16 +1504,52 @@ }, resetLevel() { if (this.cleared) return + if (this.isDailyMode && this.actionLocked) return + if (this.isDailyMode) this.actionLocked = true if (!this.isDailyMode && this.playing) { this.tui.toast('擂台/挑战只有一次机会,不能重开') return } + if (this.isDailyMode && !this.canUseDailyRestart()) { + this.actionLocked = false + this.tui.toast('今日重开次数已用完') + return + } + /* if (this.isDailyMode) this.recordDailyRestartUse() */ this.playing = false this.clearTimer() this.timeLeft = this.timeLimit this.roundSeed = this.fixedSeed || this.newRoundSeed() this.buildLevel() if (!this.cards.length) this.buildLevel() + this.needRebuildOnStart = false + this.actionLocked = false + }, + dailyRestartStorageKey() { + const uid = this.userId || uni.getStorageSync('id') || 'guest' + return `planetAdventureRestart_${uid}_${this.regionId || 'global'}_${this.todayKey()}` + }, + todayKey() { + const d = new Date() + const p = n => (n < 10 ? '0' + n : '' + n) + return `${d.getFullYear()}${p(d.getMonth() + 1)}${p(d.getDate())}` + }, + getDailyRestartCount() { + const count = parseInt(uni.getStorageSync(this.dailyRestartStorageKey()) || '0', 10) + return Number.isNaN(count) ? 0 : count + }, + canUseDailyRestart() { + return this.dailyRestartCount < 3 + }, + recordDailyRestartUse() { + const count = Math.min(3, this.getDailyRestartCount() + 1) + uni.setStorageSync(this.dailyRestartStorageKey(), count) + this.dailyRestartCount = count + return count + }, + clearDailyRestartCount() { + uni.removeStorageSync(this.dailyRestartStorageKey()) + this.dailyRestartCount = 0 }, closeModal() { this.modal.show = false @@ -1442,16 +1646,16 @@ .boost { min-height: 100vh; background: linear-gradient(155deg, #F3FFF4 0%, #EAF8FF 46%, #FFF7DE 100%); color: #12342F; } .nav { position: fixed; top: 0; left: 0; right: 0; z-index: 200; box-sizing: border-box; display: flex; align-items: center; justify-content: center; background: rgba(243,255,244,0.9); } .nav-back { position: absolute; left: 24rpx; bottom: 12rpx; width: 56rpx; height: 56rpx; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,.72); color: #12342F; box-shadow: 0 8rpx 20rpx rgba(18,52,47,.08); } - .nav-back text { font-size: 42rpx; line-height: 1; transform: translateY(-2rpx); } + .nav-back text { padding-bottom: 14rpx;padding-right: 4rpx;font-size: 62rpx; line-height: 1;font-weight: 500; transform: translateY(-2rpx); } .nav-title { padding-bottom: 14rpx; color: #12342F; font-size: 32rpx; font-weight: 900; } .page { height: 100vh; box-sizing: border-box; padding-left: 24rpx; padding-right: 24rpx; } - .hero, .glory-card, .rank-card, .game-card { margin-bottom: 24rpx; border-radius: 42rpx; background: rgba(255,255,255,0.82); padding: 30rpx; box-shadow: 0 16rpx 42rpx rgba(79,183,255,0.10); } + .hero, .rank-overview, .game-card { margin-bottom: 24rpx; border-radius: 42rpx; background: rgba(255,255,255,0.82); padding: 30rpx; box-shadow: 0 16rpx 42rpx rgba(79,183,255,0.10); } .hero-kicker { color: #FF9C42; font-size: 22rpx; font-weight: 900; letter-spacing: 2rpx; } .hero-title { margin-top: 10rpx; font-size: 42rpx; font-weight: 900; } .hero-sub, .tips { margin-top: 16rpx; color: #6B817D; font-size: 24rpx; line-height: 1.55; } .hero-reward-tip { position: relative; margin-top: 20rpx; padding: 20rpx 22rpx 20rpx 86rpx; border-radius: 24rpx; background: linear-gradient(135deg, rgba(255,247,221,0.96), rgba(255,255,255,0.9) 48%, rgba(229,255,246,0.92)); border: 3rpx solid rgba(255,184,77,0.58); box-shadow: 0 16rpx 34rpx rgba(255,184,77,0.18), inset 0 0 0 2rpx rgba(255,255,255,0.72); overflow: hidden; } .hero-reward-tip:before { content: ''; position: absolute; right: -48rpx; top: -62rpx; width: 180rpx; height: 180rpx; border-radius: 50%; background: radial-gradient(circle, rgba(255,184,77,0.26), transparent 66%); } - .hero-reward-tip:after { content: '现金奖励'; position: absolute; right: 18rpx; top: 14rpx; padding: 4rpx 14rpx; border-radius: 999rpx; background: linear-gradient(135deg, #FFB84D, #35D6A6); color: #FFFFFF; font-size: 19rpx; font-weight: 900; } + .hero-reward-tip:after { content: '现金奖励'; position: absolute; right: 10rpx; top: 14rpx; padding: 4rpx 14rpx; border-radius: 999rpx; background: linear-gradient(135deg, #FFB84D, #35D6A6); color: #FFFFFF; font-size: 19rpx; font-weight: 900; } .hero-reward-icon { position: absolute; left: 20rpx; top: 50%; transform: translateY(-50%); width: 48rpx; height: 48rpx; line-height: 48rpx; border-radius: 50%; text-align: center; background: rgba(255,255,255,0.82); box-shadow: 0 8rpx 18rpx rgba(255,184,77,0.18); font-size: 28rpx; } .hero-reward-copy { position: relative; z-index: 1; padding-right: 92rpx; color: #6A4A1D; font-size: 24rpx; line-height: 1.55; font-weight: 800; } .tips { display: flex; flex-direction: column; gap: 6rpx; } @@ -1461,8 +1665,12 @@ .countdown-main { display: flex; align-items: center; gap: 16rpx; } .countdown-main > text { width: 58rpx; height: 58rpx; line-height: 58rpx; border-radius: 50%; text-align: center; background: #fff; font-size: 32rpx; box-shadow: 0 8rpx 18rpx rgba(18,52,47,0.08); } .countdown-main view { display: flex; flex-direction: column; } + .countdown-main view:not(.restart-left) { flex: 1; min-width: 0; } .countdown-main view text:first-child { color: #12342F; font-size: 42rpx; font-weight: 900; line-height: 1; } .countdown-main view text:last-child { margin-top: 8rpx; color: #6B817D; font-size: 22rpx; } + .restart-left { width: 132rpx; height: 72rpx; border-radius: 22rpx; align-items: center; justify-content: center; background: rgba(255,255,255,0.78); border: 2rpx solid rgba(53,214,166,0.18); box-shadow: 0 8rpx 18rpx rgba(18,52,47,0.06); } + .countdown-main .restart-left text:first-child { color: #22B889; font-size: 30rpx; font-weight: 900; line-height: 1; } + .countdown-main .restart-left text:last-child { margin-top: 6rpx; color: #6B817D; font-size: 20rpx; font-weight: 800; } .countdown-card.warning .countdown-main view text:first-child { color: #D88400; } .countdown-card.danger .countdown-main view text:first-child { color: #F04444; } .countdown-track { margin-top: 16rpx; height: 14rpx; border-radius: 999rpx; background: rgba(255,255,255,0.72); overflow: hidden; } @@ -1481,17 +1689,25 @@ .rocket-progress { height: 100%; border-radius: 999rpx; background: linear-gradient(90deg, #35D6A6, #4FB7FF, #FFB84D); } .section-head { display: flex; justify-content: space-between; align-items: center; font-size: 24rpx; color: #6B817D; } .section-head text:first-child { color: #12342F; font-size: 31rpx; font-weight: 900; } - .glory-card { background: radial-gradient(circle at 90% 8%, rgba(255,184,77,.26), transparent 34%), linear-gradient(135deg, rgba(255,255,255,.92), rgba(242,250,255,.82)); } - .glory-list { margin-top: 18rpx; display: flex; flex-direction: column; gap: 14rpx; } - .glory-item { min-height: 86rpx; padding: 16rpx 18rpx; border-radius: 28rpx; background: rgba(255,255,255,.86); display: flex; align-items: center; gap: 16rpx; border: 2rpx solid rgba(255,255,255,.7); box-shadow: 0 12rpx 28rpx rgba(79,183,255,.08); } - .glory-item.rank-0 { background: linear-gradient(135deg, rgba(255,243,199,.96), rgba(255,255,255,.88)); box-shadow: 0 16rpx 34rpx rgba(255,184,77,.18); } - .glory-item.rank-1 { background: linear-gradient(135deg, rgba(241,245,249,.98), rgba(255,255,255,.88)); } - .glory-item.rank-2 { background: linear-gradient(135deg, rgba(255,235,213,.96), rgba(255,255,255,.88)); } - .glory-medal { width: 58rpx; height: 58rpx; line-height: 58rpx; border-radius: 50%; background: #fff; text-align: center; font-size: 32rpx; box-shadow: 0 8rpx 18rpx rgba(18,52,47,.08); } - .glory-user { flex: 1; min-width: 0; display: flex; flex-direction: column; } - .glory-user text:first-child { color: #12342F; font-size: 27rpx; font-weight: 900; } - .glory-user text:last-child { margin-top: 6rpx; color: #6B817D; font-size: 22rpx; } - .glory-time { min-width: 90rpx; text-align: right; color: #FF9C42; font-size: 31rpx; font-weight: 900; } + .reward-record-btn { padding: 8rpx 18rpx; border-radius: 999rpx; background: rgba(255,184,77,0.18); color: #D88400; font-size: 22rpx; font-weight: 900; border: 2rpx solid rgba(255,184,77,0.36); } + .rank-overview { padding: 24rpx; background: radial-gradient(circle at 90% 8%, rgba(255,184,77,.22), transparent 34%), linear-gradient(135deg, rgba(255,255,255,.9), rgba(242,250,255,.82)); } + .rank-mini-grid { margin-top: 18rpx; display: flex; gap: 16rpx; } + .rank-mini-panel { flex: 1; min-width: 0; padding: 16rpx; border-radius: 28rpx; background: rgba(255,255,255,.72); border: 2rpx solid rgba(255,255,255,.68); } + .rank-mini-title { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12rpx; } + .rank-mini-title text:first-child { color: #12342F; font-size: 24rpx; font-weight: 900; } + .rank-mini-title text:last-child { color: #8AA09C; font-size: 20rpx; font-weight: 800; } + .glory-mini-list, .college-mini-list { display: flex; flex-direction: column; gap: 8rpx; } + .glory-mini-item, .college-mini-item { min-height: 50rpx; display: flex; align-items: center; gap: 10rpx; } + .glory-mini-item.rank-0 .mini-score { color: #FF9C42; } + .mini-medal { width: 40rpx; height: 40rpx; line-height: 40rpx; border-radius: 50%; background: #FFF1C7; color: #B87932; text-align: center; font-size: 22rpx; font-weight: 900; flex-shrink: 0; } + .mini-main { flex: 1; min-width: 0; display: flex; flex-direction: column; } + .mini-main text:first-child { color: #12342F; font-size: 22rpx; font-weight: 900; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } + .mini-main text:last-child { margin-top: 2rpx; color: #8AA09C; font-size: 18rpx; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } + .mini-score { min-width: 58rpx; text-align: right; color: #FF9C42; font-size: 23rpx; font-weight: 900; } + .college-score { color: #22B889; } + .mini-bar { margin-top: 8rpx; height: 8rpx; background: #EEF7F4; border-radius: 999rpx; overflow: hidden; } + .mini-bar view { height: 100%; border-radius: 999rpx; background: linear-gradient(90deg, #35D6A6, #4FB7FF); } + .mini-empty { margin-top: 28rpx; font-size: 21rpx; text-align: center; } .timer-pill { min-width: 126rpx; height: 48rpx; padding: 0 18rpx; border-radius: 999rpx; background: #EFFFF8; color: #20B486; display: flex; align-items: center; justify-content: center; font-size: 26rpx; font-weight: 900; box-shadow: 0 8rpx 20rpx rgba(32,180,134,0.12); } .timer-pill.warning { background: #FFF4D7; color: #D88400; box-shadow: 0 8rpx 22rpx rgba(216,132,0,0.16); } .timer-pill.danger { background: #FFE8E8; color: #F04444; box-shadow: 0 8rpx 24rpx rgba(240,68,68,0.2); } @@ -1501,13 +1717,7 @@ .start-strip text:first-child { font-size: 30rpx; font-weight: 900; } .start-strip text:last-child { font-size: 22rpx; opacity: .88; } .start-strip.done { background: rgba(255,255,255,0.8); color: #6B817D; box-shadow: none; } - .college-row { margin-top: 18rpx; display: flex; align-items: center; gap: 16rpx; } - .medal { width: 48rpx; height: 48rpx; line-height: 48rpx; border-radius: 50%; text-align: center; background: #FFF1C7; color: #B87932; font-weight: 900; } - .college-main { flex: 1; min-width: 0; } - .college-main text { font-size: 25rpx; font-weight: 800; } - .bar { margin-top: 10rpx; height: 12rpx; background: #EEF7F4; border-radius: 999rpx; overflow: hidden; } - .bar view { height: 100%; border-radius: 999rpx; background: linear-gradient(90deg, #35D6A6, #4FB7FF); } - .score { width: 92rpx; text-align: right; color: #22B889; font-size: 28rpx; font-weight: 900; } + .start-strip.disabled { opacity: .45; } .empty { margin-top: 18rpx; color: #8AA09C; font-size: 24rpx; } .board { margin-top: 22rpx; height: 620rpx; border-radius: 36rpx; background: linear-gradient(155deg, rgba(234,248,255,0.9), rgba(255,248,222,0.72)); position: relative; overflow: hidden; z-index: 1; } .tile { position: absolute; width: 76rpx; height: 76rpx; border-radius: 22rpx; background: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 10rpx 22rpx rgba(66,99,94,0.12); border: 2rpx solid rgba(255,255,255,0.9); transition: transform .12s ease, opacity .12s ease; } @@ -1527,12 +1737,25 @@ .sub-btn, .main-btn { flex: 1; height: 82rpx; line-height: 82rpx; text-align: center; border-radius: 999rpx; font-size: 28rpx; font-weight: 900; } .sub-btn { background: rgba(255,255,255,0.78); color: #42635E; } .main-btn { background: linear-gradient(135deg, #35D6A6, #4FB7FF); color: #fff; box-shadow: 0 14rpx 34rpx rgba(53,214,166,0.2); } + .full-btn { width: 100%; } .main-btn.disabled { opacity: .45; } .modal { position: fixed; inset: 0; z-index: 9999; background: rgba(18,52,47,0.2); display: flex; align-items: center; justify-content: center; padding: 46rpx; } .modal-card { width: 100%; border-radius: 42rpx; background: #fff; padding: 42rpx; text-align: center; } .modal-title { font-size: 40rpx; font-weight: 900; } .modal-sub { margin: 18rpx 0 30rpx; color: #6B817D; font-size: 26rpx; line-height: 1.55; } .invite-share { margin: 0 0 18rpx; height: 76rpx; line-height: 76rpx; border-radius: 999rpx; background: linear-gradient(135deg, #35D6A6, #FFB84D); color: #fff; font-size: 27rpx; font-weight: 900; box-shadow: 0 14rpx 30rpx rgba(53,214,166,.18); } + .reward-modal { text-align: left; } + .reward-modal .modal-title, .reward-modal .modal-sub { text-align: center; } + .reward-modal-grid { display: flex; flex-direction: column; gap: 18rpx; margin-bottom: 26rpx; } + .reward-modal-panel { padding: 18rpx; border-radius: 26rpx; background: #F5FBFA; border: 2rpx solid rgba(53,214,166,0.12); } + .reward-modal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12rpx; } + .reward-modal-head text:first-child { color: #12342F; font-size: 26rpx; font-weight: 900; } + .reward-modal-head text:last-child { color: #8AA09C; font-size: 21rpx; font-weight: 800; } + .reward-record-list { display: flex; flex-direction: column; gap: 10rpx; } + .reward-record-row { min-height: 58rpx; display: flex; align-items: center; gap: 12rpx; } + .reward-record-row .reward-content { align-self: flex-start; display: inline-flex; width: fit-content; max-width: 100%; margin-top: 6rpx; padding: 4rpx 12rpx; border-radius: 999rpx; font-size: 20rpx; font-weight: 900; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } + .reward-record-row .reward-content.personal { color: #D88400; background: linear-gradient(135deg, rgba(255,184,77,0.22), rgba(255,245,214,0.96)); border: 2rpx solid rgba(255,184,77,0.46); box-shadow: 0 6rpx 14rpx rgba(255,184,77,0.12); } + .reward-record-row .reward-content.college { color: #16A779; background: linear-gradient(135deg, rgba(53,214,166,0.18), rgba(235,255,249,0.96)); border: 2rpx solid rgba(53,214,166,0.36); box-shadow: 0 6rpx 14rpx rgba(53,214,166,0.10); } .college-modal { text-align: left; } .college-modal .modal-title, .college-modal .modal-sub { text-align: center; } .college-list { max-height: 560rpx; margin-bottom: 24rpx; } diff --git a/package1/planet/drawResult.vue b/package1/planet/drawResult.vue index cdb8eb6..401fa8c 100644 --- a/package1/planet/drawResult.vue +++ b/package1/planet/drawResult.vue @@ -27,16 +27,36 @@ 本商圈暂未开奖,敬请期待 🌌 - 最近10期中奖记录 + + + RECENT DRAWS + 最近10期中奖记录 + + {{history.length}}期 + - - 第 {{h.record && h.record.periodNo}} 期 - {{drawDate(h.record && h.record.drawTime)}} + + + - - {{w.levelName}} - {{maskName(w.userName)}} - ¥{{Number(w.amount||0).toFixed(2)}} + + + + 第 {{h.record && h.record.periodNo}} 期 + 本期中奖名单 + + {{drawDate(h.record && h.record.drawTime)}} + + + + + {{w.levelName}} + {{maskName(w.userName)}} + + ¥{{Number(w.amount||0).toFixed(2)}} + + + 本期暂无中奖用户 @@ -188,7 +208,7 @@ .nav-back { position: absolute; left: 24rpx; - bottom: 12rpx; + bottom: 14rpx; width: 56rpx; height: 56rpx; border-radius: 50%; @@ -201,7 +221,10 @@ .nav-back-icon { color: #12342F; - font-size: 42rpx; + font-size: 64rpx; + font-weight: 500; + padding-right: 4rpx; + padding-bottom: 10rpx; line-height: 1; transform: translateY(-2rpx); } @@ -296,64 +319,191 @@ font-size: 26rpx; } + .dr-winners { + margin-top: 34rpx; + padding: 28rpx 22rpx 12rpx; + border-radius: 38rpx; + background: + linear-gradient(180deg, rgba(255,255,255,0.86), rgba(255,255,255,0.56)), + radial-gradient(circle at 88% 2%, rgba(79,183,255,0.16), transparent 38%); + border: 1rpx solid rgba(255,255,255,0.94); + box-shadow: 0 22rpx 52rpx rgba(35,107,96,0.09); + } + + .dr-sec-head { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 22rpx; + padding: 0 4rpx; + } + + .dr-sec-kicker { + color: #8DA8A2; + font-size: 18rpx; + font-weight: 900; + letter-spacing: 2rpx; + } + .dr-sec-title { - margin: 32rpx 0 18rpx; + margin-top: 6rpx; color: #12342F; - font-size: 30rpx; + font-size: 32rpx; font-weight: 900; } - .dr-winner { - display: flex; - align-items: center; - padding: 22rpx 24rpx; - margin-bottom: 14rpx; - border-radius: 28rpx; - background: rgba(255,255,255,0.72); - border: 1rpx solid rgba(255,255,255,0.9); - box-shadow: 0 12rpx 28rpx rgba(53,214,166,0.08); + .dr-sec-count { + padding: 8rpx 18rpx; + border-radius: 999rpx; + background: rgba(53,214,166,0.12); + color: #22B889; + font-size: 22rpx; + font-weight: 900; } .dr-history { - margin-bottom: 22rpx; - padding: 20rpx; + position: relative; + display: flex; + margin-bottom: 20rpx; + } + + .dr-history-mark { + position: relative; + width: 34rpx; + flex: 0 0 34rpx; + display: flex; + justify-content: center; + } + + .dr-history-dot { + position: relative; + z-index: 2; + width: 16rpx; + height: 16rpx; + margin-top: 32rpx; + border-radius: 50%; + background: linear-gradient(135deg, #35D6A6, #4FB7FF); + box-shadow: 0 0 0 8rpx rgba(53,214,166,0.14); + } + + .dr-history-line { + position: absolute; + top: 48rpx; + bottom: -24rpx; + width: 2rpx; + background: linear-gradient(180deg, rgba(53,214,166,0.3), rgba(79,183,255,0)); + } + + .dr-history:last-child .dr-history-line { + display: none; + } + + .dr-history-body { + flex: 1; + overflow: hidden; + padding: 24rpx; border-radius: 30rpx; - background: rgba(255,255,255,0.58); - border: 1rpx solid rgba(255,255,255,0.86); + background: rgba(255,255,255,0.82); + border: 1rpx solid rgba(255,255,255,0.95); + box-shadow: 0 14rpx 34rpx rgba(56,98,91,0.08); } .dr-history-head { display: flex; + align-items: flex-start; justify-content: space-between; - margin-bottom: 12rpx; - color: #42635E; + margin-bottom: 18rpx; + } + + .dr-history-label { + color: #315C55; font-size: 24rpx; font-weight: 900; } + .dr-history-sub { + margin-top: 6rpx; + color: #9AA9A5; + font-size: 20rpx; + font-weight: 700; + } + + .dr-history-date { + padding: 6rpx 14rpx; + border-radius: 999rpx; + background: rgba(18,52,47,0.06); + color: #42635E; + font-size: 22rpx; + font-weight: 800; + } + + .dr-winner-list { + padding-top: 2rpx; + } + + .dr-winner { + display: flex; + align-items: center; + justify-content: space-between; + padding: 18rpx 0; + border-top: 1rpx solid rgba(18,52,47,0.06); + } + + .dr-winner:first-child { + border-top: 0; + padding-top: 0; + } + + .dr-winner:last-child { + padding-bottom: 0; + } + + .dr-winner-left { + min-width: 0; + flex: 1; + display: flex; + align-items: center; + } + + .dr-history-empty { + padding: 18rpx 0 2rpx; + border-top: 1rpx solid rgba(18,52,47,0.06); + color: #9AA9A5; + font-size: 22rpx; + font-weight: 700; + } + .dr-w-level { font-size: 22rpx; - padding: 2rpx 14rpx; - border-radius: 8rpx; + line-height: 34rpx; + padding: 0 16rpx; + border-radius: 999rpx; background: rgba(53,214,166,0.14); color: #22B889; + font-weight: 900; + white-space: nowrap; } .dr-w-level.lv1 { background: rgba(255,122,89,0.14); color: #FF7A59; } .dr-w-level.lv2 { background: rgba(255,184,77,0.18); color: #C98716; } .dr-w-name { - flex: 1; + min-width: 0; margin-left: 18rpx; color: #12342F; font-size: 26rpx; font-weight: 700; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } .dr-w-amount { color: #22B889; font-size: 28rpx; - font-weight: 700; + font-weight: 900; + margin-left: 16rpx; + white-space: nowrap; } .dr-my-item { diff --git a/package1/planet/index.vue b/package1/planet/index.vue index bdfb6ee..e29530e 100644 --- a/package1/planet/index.vue +++ b/package1/planet/index.vue @@ -44,7 +44,6 @@ @@ -52,16 +51,32 @@ - - + + + + + 星球补给地图 + 进入 + + + 下单得券 + 种树得券 + 防御塔升级 + + + + + @@ -108,7 +123,7 @@ CURRENT POOL - 本期奖池详情 + 本期奖池规则 × @@ -128,7 +143,7 @@ {{(home.dailyLoop && home.dailyLoop.myWeightTickets) || 0}} - 我的权重 + 我的概率 @@ -137,30 +152,30 @@ ¥{{Number(r.amount || 0).toFixed(2)}} × {{r.quota || 0}}名 - 投入越多权重越高,但权重会递减;每人每期最多中一次,概率仅为实时估算。 + 投入越多概率越高,但权重会递减;每人每期最多中一次,概率仅为实时估算。 - BANJINLI GUIDE + BANJINGLI GUIDE 白嫖星球玩法说明书 1 - 每天签到、开补给箱、玩学院排位赛都能获得星球券。 + 每天签到、开补给箱、玩学院排位赛都能获得星球券和现金奖励。 2 - 把星球券投入奖池,券越多,开奖时瓜分现金奖励的权重越高。 + 把星球券投入奖池,券越多,开奖时瓜分现金奖励的概率越高。 3 - 排行榜里可以发起星际追查,有机会从榜上同学那里追回补给券。 + 财富排名里可以发起星际追查,可以互相偷取星球券。 4 - 补给地图保留农场券树、防御塔和校园下单给券任务,适合每天顺手经营。 + 补给地图:农场券树、防御塔和校园下单给券任务,适合每天顺手经营。 知道怎么玩了 @@ -758,13 +773,27 @@ display: flex; align-items: center; justify-content: center; - background: rgba(243,255,244,0.9); + background: + radial-gradient(circle at 50% 260rpx, rgba(255,255,255,0.72), rgba(255,255,255,0) 360rpx), + linear-gradient(155deg, #F3FFF4 0%, #EAF8FF 100%); + overflow: visible; + } + + .nav:after { + content: ''; + position: absolute; + left: 0; + right: 0; + bottom: -18rpx; + height: 20rpx; + background: linear-gradient(180deg, #EAF8FF 0%, rgba(234,248,255,0)); + pointer-events: none; } .nav-back { position: absolute; left: 24rpx; - bottom: 12rpx; + bottom: 14rpx; width: 56rpx; height: 56rpx; border-radius: 50%; @@ -777,8 +806,10 @@ .nav-back-icon { color: #12342F; - font-size: 42rpx; - font-weight: 300; + font-size: 64rpx; + font-weight: 500; + padding-bottom: 10rpx; + padding-right: 4rpx; line-height: 1; transform: translateY(-2rpx); } @@ -827,7 +858,7 @@ width: 100%; max-height: 78vh; overflow-y: auto; - background: linear-gradient(155deg, rgba(255,255,255,0.97), rgba(240,255,248,0.9)); + background: #fff; } .pool-detail-head { @@ -934,10 +965,111 @@ .planet-quick-row { margin-top: 24rpx; display: flex; - gap: 18rpx; + gap: 16rpx; align-items: stretch; } + .quick-box { + width: calc((100% - 16rpx) / 2); + flex: 0 0 calc((100% - 16rpx) / 2); + min-height: 368rpx; + } + + .planet-side-col { + flex: 1; + min-width: 0; + display: flex; + flex-direction: column; + gap: 14rpx; + } + + .planet-map-card { + min-height: 164rpx; + padding: 20rpx 18rpx; + box-sizing: border-box; + border-radius: 32rpx; + background: + radial-gradient(circle at 18% 30%, rgba(53,214,166,0.16), transparent 24%), + radial-gradient(circle at 86% 18%, rgba(79,183,255,0.18), transparent 28%), + linear-gradient(145deg, #FFFFFF, #E5FFF1); + color: #22B889; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + box-shadow: 0 14rpx 28rpx rgba(53,214,166,0.16); + border: 2rpx solid rgba(255,255,255,0.96); + position: relative; + overflow: hidden; + } + + .planet-map-orb { + position: absolute; + left: 14rpx; + top: 20rpx; + width: 30rpx; + height: 30rpx; + border-radius: 50%; + background: linear-gradient(145deg, #B9FFE3, #4FB7FF); + box-shadow: 0 0 22rpx rgba(53,214,166,0.28); + opacity: .72; + } + + .planet-map-head { + position: relative; + width: 100%; + display: flex; + align-items: center; + justify-content: flex-end; + gap: 10rpx; + } + + .planet-map-title { + flex: 1; + color: #13A77C; + font-size: 24rpx; + font-weight: 900; + line-height: 1.18; + text-align: right; + white-space: nowrap; + } + + .planet-map-btn { + position: relative; + padding: 5rpx 15rpx; + border-radius: 999rpx; + background: linear-gradient(135deg, #35D6A6, #4FB7FF); + color: #FFFFFF; + font-size: 18rpx; + font-weight: 900; + box-shadow: 0 10rpx 20rpx rgba(53,214,166,0.2); + white-space: nowrap; + } + + .planet-map-plays { + position: relative; + width: 100%; + display: flex; + flex-wrap: wrap; + gap: 8rpx; + } + + .planet-map-plays text { + padding: 7rpx 10rpx; + border-radius: 999rpx; + background: rgba(255,255,255,0.66); + color: #42635E; + font-size: 18rpx; + font-weight: 900; + line-height: 1; + box-shadow: inset 0 1rpx 0 rgba(255,255,255,0.86); + } + + .quick-me { + flex: 1; + min-height: 0; + } + /* 骨架屏 */ .skeleton { padding-top: 22rpx; diff --git a/package1/planet/more.vue b/package1/planet/more.vue index 49d35f6..1031ae0 100644 --- a/package1/planet/more.vue +++ b/package1/planet/more.vue @@ -1,8 +1,14 @@ - + + + + ‹ + + 星球排行榜 @@ -51,7 +57,7 @@ 🛡️ 升防御塔 - 提高被偷券时的拦截、反击和伤害能力。 + 提高被偷券时的拦截、反击能力。 去完成 @@ -113,7 +119,7 @@ 🌱 - 成熟后返还本金和收益,超过范围会无法种植。 + 成熟后返还本金和收益,超过范围会无法种植,收益券数会向下取整。 取消 @@ -139,6 +145,7 @@ return { statusBarHeight: 20, loading: true, + navHeight: 64, userId: '', regionId: '', nickname: '', @@ -342,9 +349,50 @@ background: linear-gradient(155deg, #F3FFF4 0%, #EAF8FF 46%, #FFF8DE 100%); color: #12342F; } - .nav { position: fixed; top: 0; left: 0; right: 0; height: 44px; z-index: 20; display: flex; align-items: center; justify-content: center; box-sizing: content-box; background: linear-gradient(180deg, rgba(243,255,244,0.96), rgba(243,255,244,0)); } - .nav-back { position: absolute; left: 20rpx; bottom: 0; height: 44px; width: 60rpx; display: flex; align-items: center; justify-content: center; } - .nav-back text { color: #12342F; font-size: 48rpx; font-weight: 300; } + .nav { + position: fixed; + top: 30rpx; + left: 0; + right: 0; + z-index: 20; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; + background: rgba(243,255,244,0.9); + } + + .nav-back { + position: absolute; + left: 24rpx; + bottom: 1rpx; + width: 56rpx; + height: 56rpx; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + background: rgba(255,255,255,.72); + box-shadow: 0 8rpx 20rpx rgba(18,52,47,.08); + } + + .nav-back-icon { + color: #12342F; + font-size: 64rpx; + font-weight: 500; + padding-bottom: 10rpx; + padding-right: 4rpx; + line-height: 1; + transform: translateY(-2rpx); + } + + .nav-title { + color: #12342F; + font-size: 32rpx; + font-weight: 900; + letter-spacing: 1rpx; + padding-bottom: 14rpx; + } .nav-title { color: #12342F; font-size: 34rpx; font-weight: 900; align-self: flex-end; padding-bottom: 6rpx; } .page { height: 100vh; box-sizing: border-box; padding-left: 22rpx; padding-right: 22rpx; } .loading-card { margin-top: 24rpx; height: 220rpx; border-radius: 38rpx; background: rgba(255,255,255,0.76); display: flex; align-items: center; justify-content: center; color: #6B817D; font-size: 26rpx; } diff --git a/package1/planet/pkHall.vue b/package1/planet/pkHall.vue index ef17ec2..05e4472 100644 --- a/package1/planet/pkHall.vue +++ b/package1/planet/pkHall.vue @@ -9,7 +9,7 @@ CAMPUS ARENA 同一关卡,拼手速和决策 - 独立于每日排位赛,房间内所有人使用同一个 seed。每人一次机会,第一名通吃奖池。 + 房间内使用同一个规则,每人一次机会,第一名通吃奖池。 创建房间 @@ -46,7 +46,7 @@ - {{record._title}} + {{record._meta}} {{record._result}} @@ -81,7 +81,7 @@ 创建星球擂台 - + 取消 @@ -126,7 +126,7 @@ form: { roomName: '今晚冲榜局', maxPlayers: '', - tickets: '', + tickets: 1, password: '' } } @@ -210,9 +210,9 @@ }, switchTab(tab) { this.activeTab = tab - if (tab === 'myRooms' && !this.myRooms.length) this.loadMyRooms(true) - if (tab === 'myRecords' && !this.myRecords.length) this.loadMyRecords(true) - if (tab === 'hotRooms' && !this.hotRooms.length) this.loadHotRooms(true) + if (tab === 'myRooms') this.loadMyRooms(true) + if (tab === 'myRecords') this.loadMyRecords(true) + if (tab === 'hotRooms') this.loadHotRooms(true) }, loadPageList(type, reset) { const config = { @@ -334,11 +334,7 @@ this.shareRoom = room }, createRoom() { - const tickets = Number(this.form.tickets || 1) - if (tickets <= 0) { - this.tui.toast('请输入入场券数量') - return - } + const tickets = this.normalizeTickets() if (this.myTicketCount === null) { this.loadTicketCount().then(() => { this.createRoom() @@ -374,6 +370,11 @@ this.joinRoom(res.result) }) }, + normalizeTickets() { + const tickets = parseInt(this.form.tickets || 1, 10) + this.form.tickets = Number.isNaN(tickets) || tickets < 1 ? 1 : tickets + return this.form.tickets + }, joinRoom(room) { this.tui.request('/app/planet/adventure/pk/roomInfo', 'POST', { userId: this.userId, @@ -489,7 +490,7 @@ .arena { min-height: 100vh; background: linear-gradient(155deg, #F7F2FF 0%, #EAF8FF 46%, #FFF7DE 100%); color: #172033; } .nav { position: fixed; top: 0; left: 0; right: 0; z-index: 20; box-sizing: border-box; display: flex; align-items: center; justify-content: center; background: rgba(247,242,255,.9); } .nav-back { position: absolute; left: 24rpx; bottom: 12rpx; width: 56rpx; height: 56rpx; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,.72); color: #172033; box-shadow: 0 8rpx 20rpx rgba(23,32,51,.08); } - .nav-back text { font-size: 42rpx; line-height: 1; transform: translateY(-2rpx); } + .nav-back text { padding-bottom: 14rpx;padding-right: 4rpx;font-size: 62rpx; line-height: 1;font-weight: 500; transform: translateY(-2rpx); } .nav-title { padding-bottom: 14rpx; font-size: 32rpx; font-weight: 900; } .page { height: 100vh; box-sizing: border-box; padding-left: 24rpx; padding-right: 24rpx; } .hero, .section, .panel { margin-bottom: 24rpx; border-radius: 42rpx; background: rgba(255,255,255,.84); padding: 30rpx; box-shadow: 0 18rpx 48rpx rgba(124,58,237,.10); } @@ -521,7 +522,7 @@ .record-card { margin-top: 16rpx; padding: 24rpx; border-radius: 30rpx; background: linear-gradient(135deg, rgba(255,255,255,.94), rgba(247,250,255,.84)); display: flex; align-items: center; justify-content: space-between; border: 2rpx solid rgba(124,58,237,.10); } .record-main { flex: 1; min-width: 0; } .record-title { color: #172033; font-size: 29rpx; font-weight: 900; } - .record-meta { margin-top: 8rpx; color: #667085; font-size: 22rpx; } + .record-meta { margin-top: 8rpx; color: #667085; font-size: 24rpx; } .record-badge { margin-left: 18rpx; min-width: 110rpx; height: 58rpx; line-height: 58rpx; border-radius: 999rpx; text-align: center; font-size: 23rpx; font-weight: 900; background: #EEF2FF; color: #7C3AED; } .record-badge.win { background: linear-gradient(135deg, #FFB84D, #FF7A59); color: #fff; box-shadow: 0 12rpx 24rpx rgba(255,122,89,.18); } .record-badge.lose { background: #FEE2E2; color: #EF4444; } diff --git a/package1/planet/rank.vue b/package1/planet/rank.vue index 30e15ad..acbbc74 100644 --- a/package1/planet/rank.vue +++ b/package1/planet/rank.vue @@ -1,8 +1,14 @@ - + + + + ‹ + + 星球排行榜 @@ -40,16 +46,16 @@ TOP HUNTERS ARE WATCHING 前三领奖台 - 抢榜越高 · 越容易被盯上 + 排名越高 · 越容易被盯上 - 每日 21:30 按校区分别结算,有券前 5 名瓜分星球券 + 每日 21:30 按校区分别结算,排行榜前 5 名瓜分星球券 - 第1名 +5 - 第2名 +4 - 第3名 +3 - 第4名 +2 - 第5名 +1 + 第1名 +5券 + 第2名 +4券 + 第3名 +3券 + 第4名 +2券 + 第5名 +1券 @@ -155,6 +161,7 @@ return { statusBarHeight: 20, loading: true, + navHeight: 64, userId: '', regionId: '', nickname: '', @@ -365,10 +372,50 @@