wangfukang 1 week ago
parent
commit
51eec2ee3b
  1. 15
      package5/components/planet/planet-adventure-entry.vue
  2. 2
      package5/components/planet/planet-rank.vue
  3. 2
      package5/components/planet/planet-tasks.vue
  4. 2
      package5/components/planet/rank-item.vue
  5. 96
      package5/planet/adventure.vue
  6. 2
      package5/planet/drawResult.vue
  7. 53
      package5/planet/index.vue
  8. 8
      package5/planet/more.vue
  9. 6
      package5/planet/rank.vue

15
package5/components/planet/planet-adventure-entry.vue

@ -3,8 +3,8 @@
<view class="pa" @tap="$emit('start')">
<view class="pa-badge">开始排位</view>
<view class="pa-left">
<view class="pa-kicker">COLLEGE ROCKET</view>
<view class="pa-title">学院排位赛</view>
<view class="pa-kicker">{{socialMode ? 'FRIEND ROCKET' : 'COLLEGE ROCKET'}}</view>
<view class="pa-title">{{socialMode ? '同城排位赛' : '学院排位赛'}}</view>
<view class="pa-sub">每天21:30开奖 · 个人前五名发现金</view>
<view class="pa-reward">
<text>第1 ¥5</text>
@ -22,7 +22,7 @@
<view class="pa pa-pk" @tap.stop="$emit('arena')">
<view class="pa-badge">开始PK</view>
<view class="pa-left">
<view class="pa-kicker">COLLEGE ROCKET</view>
<view class="pa-kicker">{{socialMode ? 'FRIEND ROCKET' : 'COLLEGE ROCKET'}}</view>
<view class="pa-title">组队PK赛</view>
<view class="pa-sub">好友组队挑战胜出赢星球券</view>
<view class="pa-reward pk">
@ -41,7 +41,14 @@
</template>
<script>
export default {}
export default {
props: {
socialMode: {
type: Boolean,
default: false
}
}
}
</script>
<style lang="scss" scoped>

2
package5/components/planet/planet-rank.vue

@ -7,7 +7,7 @@
</view>
<view class="pr-game-copy">
<text class="pr-kicker">SCHOOL RICH LIST</text>
<text class="pr-title">全校首富雷达</text>
<text class="pr-title">区域首富雷达</text>
<text class="pr-sub">锁定券王发起追捕抢回今日补给权</text>
</view>
<view class="pr-remain">

2
package5/components/planet/planet-tasks.vue

@ -5,7 +5,7 @@
<text class="pt-kicker">SUPPLY MAP</text>
<text class="pt-title">星球补给地图</text>
</view>
<text class="pt-sub">完成校园行动点亮补给点</text>
<text class="pt-sub">完成行动点亮补给点</text>
</view>
<view class="pt-list">
<view class="pt-item" v-for="(t, i) in taskCards" :key="i" :class="t.cardClass">

2
package5/components/planet/rank-item.vue

@ -15,7 +15,7 @@
<view class="ri-name">{{item.nickname || '神秘同学'}}</view>
<view class="ri-bounty">{{item.ticketCount}} 张星球券</view>
<view class="ri-tags">
<text class="ri-danger">{{item.dangerLevelName || '校园玩家'}}</text>
<text class="ri-danger">{{item.dangerLevelName || '区域玩家'}}</text>
<text class="ri-keep" v-if="item.rankKeepDays > 0">霸榜 {{item.rankKeepDays}} </text>
</view>
<view class="ri-action"

96
package5/planet/adventure.vue

@ -2,15 +2,15 @@
<view class="boost">
<view class="nav" :style="{height: navHeight + 'px', paddingTop: statusBarHeight + 'px'}">
<view class="nav-back" @tap="goBack"><text></text></view>
<view class="nav-title">{{isDailyMode ? '学院排位赛' : 'PK局'}}</view>
<view class="nav-title">{{isDailyMode ? rankEventName : 'PK局'}}</view>
</view>
<scroll-view scroll-y class="page" :style="{paddingTop: (navHeight + 10) + 'px'}">
<view class="hero" v-if="isDailyMode">
<view class="hero-kicker">COLLEGE ROCKET</view>
<view class="hero-kicker">{{isSocialArea ? 'FRIEND ROCKET' : 'COLLEGE ROCKET'}}</view>
<view class="hero-title">{{pageTitle}}</view>
<view class="college-picker" @tap="openCollegePicker">
<text>{{college ? '已选择学院' : '先选择学院'}}</text>
<text>{{college ? ('已选择' + teamLabel) : ('先选择' + teamLabel)}}</text>
<text>{{collegeName}} </text>
</view>
<view class="rocket">
@ -42,8 +42,8 @@
<view class="glory-mini-item" v-for="(item,i) in compactGloryList" :key="item._key" :class="'rank-' + i">
<view class="mini-medal">{{gloryMedals[i] || (i + 1)}}</view>
<view class="mini-main">
<text>{{item.nickname || '匿名同学'}}</text>
<text>{{item.college || '神秘学院'}}</text>
<text>{{item.nickname || anonymousUserLabel}}</text>
<text>{{item.college || mysteryTeamLabel}}</text>
</view>
<view class="mini-score">{{item.durationSeconds || 0}}s</view>
</view>
@ -52,14 +52,14 @@
</view>
<view class="rank-mini-panel">
<view class="rank-mini-title">
<text>学院排位榜</text>
<text>{{teamLabel}}排位榜</text>
<text>推进值</text>
</view>
<view class="college-mini-list" v-if="compactCollegeRanks.length">
<view class="college-mini-item" v-for="(item,i) in compactCollegeRanks" :key="i">
<view class="mini-medal">{{i + 1}}</view>
<view class="mini-main">
<text>{{item.college || item.nickname || '未知学院'}}</text>
<text>{{item.college || item.nickname || unknownTeamLabel}}</text>
<view class="mini-bar"><view :style="{width: (item.percent || 8) + '%'}"></view></view>
</view>
<view class="mini-score college-score">{{item.score || 0}}</view>
@ -77,14 +77,14 @@
<text>{{cleared ? clearedPillText : timerText}}</text>
</view>
</view>
<button class="arena-share" v-if="isPkMode" open-type="share">邀请同学来擂台</button>
<button class="arena-share" v-if="isPkMode" open-type="share">邀请好友来擂台</button>
<view class="start-strip" :class="{disabled: actionLocked && isDailyMode}" v-if="!playing && !cleared" @tap="startLevel">
<text>{{isDailyMode ? '开始游戏' : '开始PK'}}</text>
<text>先点这里再开始消除卡牌</text>
</view>
<view class="start-strip done" v-if="cleared && isDailyMode">
<text>今日已通关</text>
<text>{{dailyResultText || '明天再来为学院继续推进'}}</text>
<text>{{dailyResultText || ('明天再来为' + teamLabel + '继续推进')}}</text>
</view>
<view class="tips">
@ -154,15 +154,15 @@
<view class="modal-card">
<view class="modal-title">{{modal.title}}</view>
<view class="modal-sub">{{modal.sub}}</view>
<button class="invite-share" v-if="modal.invite" open-type="share">邀请好友为学院助力</button>
<button class="invite-share" v-if="modal.invite" open-type="share">邀请好友为{{teamLabel}}助力</button>
<view class="main-btn" @tap="closeModal">知道了</view>
</view>
</view>
<view v-if="collegeModal" class="modal">
<view class="modal-card college-modal">
<view class="modal-title">选择你的学院</view>
<view class="modal-sub">学院来自当前校区后台配置可随时修改当天通关后会为所选学院贡献推进值</view>
<view class="modal-title">选择你的{{teamLabel}}</view>
<view class="modal-sub">{{teamLabel}}来自当前{{regionLabel}}后台配置可随时修改当天通关后会为所选{{teamLabel}}贡献推进值</view>
<scroll-view scroll-y class="college-list">
<view
class="college-option"
@ -173,11 +173,11 @@
<text>{{item.icon || '🎓'}}</text>
<view>
<text>{{item.collegeName}}</text>
<text>{{item.shortName || '学院战队'}}</text>
<text>{{item.shortName || defaultTeamShortName}}</text>
</view>
</view>
</scroll-view>
<view class="empty" v-if="!colleges.length">当前校区还没有配置学院请联系后台先维护学院配置</view>
<view class="empty" v-if="!colleges.length">当前{{regionLabel}}还没有配置{{teamLabel}}请联系后台先维护{{teamLabel}}配置</view>
<view class="main-btn" @tap="closeCollegePicker">确定</view>
</view>
</view>
@ -185,7 +185,7 @@
<view v-if="rewardModal.show" class="modal">
<view class="modal-card reward-modal">
<view class="modal-title">昨日奖励记录</view>
<view class="modal-sub">个人前五显示通关秒数学院前三显示学院分数</view>
<view class="modal-sub">个人前五显示通关秒数{{teamLabel}}前三显示{{teamLabel}}分数</view>
<view class="reward-modal-grid">
<view class="reward-modal-panel">
<view class="reward-modal-head">
@ -196,7 +196,7 @@
<view class="reward-record-row" v-for="(item,i) in personalRewardList" :key="item._key">
<view class="mini-medal">{{gloryMedals[i] || item.rankNo || (i + 1)}}</view>
<view class="mini-main">
<text>{{item.nickname || '匿名同学'}}</text>
<text>{{item.nickname || anonymousUserLabel}}</text>
<text class="reward-content personal">{{item.rewardContent || '现金奖励待发放'}}</text>
</view>
<view class="mini-score">{{item.durationSeconds || 0}}s</view>
@ -206,20 +206,20 @@
</view>
<view class="reward-modal-panel">
<view class="reward-modal-head">
<text>学院前三</text>
<text>{{teamLabel}}前三</text>
<text>分数</text>
</view>
<view v-if="collegeRewardList.length" class="reward-record-list">
<view class="reward-record-row" v-for="(item,i) in collegeRewardList" :key="item._key">
<view class="mini-medal">{{item.rankNo || (i + 1)}}</view>
<view class="mini-main">
<text>{{item.college || item.nickname || '未知学院'}}</text>
<text class="reward-content college">{{item.rewardContent || '学院奖励待发放'}}</text>
<text>{{item.college || item.nickname || unknownTeamLabel}}</text>
<text class="reward-content college">{{item.rewardContent || (teamLabel + '奖励待发放')}}</text>
</view>
<view class="mini-score college-score">{{item.score || 0}}</view>
</view>
</view>
<view class="empty mini-empty" v-else>昨日暂无学院奖励</view>
<view class="empty mini-empty" v-else>昨日暂无{{teamLabel}}奖励</view>
</view>
</view>
<view class="main-btn" @tap="closeRewardModal">知道了</view>
@ -276,12 +276,37 @@
loading: false,
personalRewardList: [],
collegeRewardList: []
}
},
areaKind: 1
}
},
computed: {
isSocialArea() {
return Number(this.areaKind) === 2
},
rankEventName() {
return this.isSocialArea ? '同城排位赛' : '学院排位赛'
},
teamLabel() {
return this.isSocialArea ? '战队' : '学院'
},
regionLabel() {
return this.isSocialArea ? '区域' : '校区'
},
anonymousUserLabel() {
return this.isSocialArea ? '匿名好友' : '匿名同学'
},
mysteryTeamLabel() {
return this.isSocialArea ? '神秘战队' : '神秘学院'
},
unknownTeamLabel() {
return this.isSocialArea ? '未知战队' : '未知学院'
},
defaultTeamShortName() {
return this.isSocialArea ? '好友战队' : '学院战队'
},
collegeName() {
return this.college || '我的学院'
return this.college || ('我的' + this.teamLabel)
},
isDailyMode() {
return this.mode === 'daily'
@ -300,7 +325,9 @@
heroSub() {
if (this.isPkMode) return '同一房间使用完全一致的卡牌布局。每人只有一次机会,退出或失败都会记录成绩。'
if (this.isChallengeMode) return '复刻好友通关布局,挑战同一组卡牌,结束后会显示领先或落后秒数。'
return '21:30结算学院榜券奖励,前三名学院参与者每人得3/2/1张星球券;个人最快通关前五名可获得现金奖励5/4/3/2/1元。'
return this.isSocialArea
? '21:30结算战队榜券奖励,前三名战队参与者每人得3/2/1张星球券;个人最快通关前五名可获得现金奖励5/4/3/2/1元。'
: '21:30结算学院榜券奖励,前三名学院参与者每人得3/2/1张星球券;个人最快通关前五名可获得现金奖励5/4/3/2/1元。'
},
gameTitle() {
if (this.isPkMode) return '擂台关卡'
@ -455,6 +482,7 @@
this.userId = uni.getStorageSync('id') || ''
this.nickname = uni.getStorageSync('nickName') || uni.getStorageSync('nickname') || ''
this.avatar = uni.getStorageSync('avatarUrl') || uni.getStorageSync('avatar') || ''
this.syncAreaKind()
try {
const area = uni.getStorageSync('area')
if (area) this.regionId = JSON.parse(area).id || ''
@ -480,6 +508,7 @@
}
},
onShow() {
this.syncAreaKind()
if (!this.playing || !this.startTs) return
const elapsed = Math.floor((Date.now() - this.startTs) / 1000)
this.timeLeft = Math.max(0, this.timeLimit - elapsed)
@ -499,11 +528,26 @@
}
const collegeParam = this.college ? ('?college=' + encodeURIComponent(this.college)) : ''
return {
title: this.college ? `来为${this.college}助力,冲学院排位榜!` : '学院排位赛,来帮学院冲榜',
title: this.college
? `来为${this.college}助力,冲${this.teamLabel}排位榜!`
: `${this.rankEventName},来帮${this.teamLabel}冲榜`,
path: buildHomeSharePath('/package5/planet/adventure' + collegeParam)
}
},
methods: {
syncAreaKind(areaObj) {
let area = areaObj
if (!area) {
try {
const cached = uni.getStorageSync('area')
area = cached ? (typeof cached === 'string' ? JSON.parse(cached) : cached) : null
} catch (e) {
area = null
}
}
const kind = area ? Number(area.areaKind) : 1
this.areaKind = kind === 2 ? 2 : 1
},
initNavHeight() {
try {
const menu = uni.getMenuButtonBoundingClientRect && uni.getMenuButtonBoundingClientRect()
@ -1440,7 +1484,7 @@
this.modal = {
show: true,
title: '排位成功',
sub: `${this.collegeName} 获得 ${progress} 点推进值。分享给好友继续为学院助力,每个人都会随机生成自己的关卡。`,
sub: `${this.collegeName} 获得 ${progress} 点推进值。分享给好友继续为${this.teamLabel}助力,每个人都会随机生成自己的关卡。`,
invite: true,
duration
}
@ -1580,7 +1624,7 @@
},
closeCollegePicker() {
if (!this.college) {
this.tui.toast('请先选择学院')
this.tui.toast('请先选择' + this.teamLabel)
return
}
this.collegeModal = false

2
package5/planet/drawResult.vue

@ -107,7 +107,7 @@
if (area) this.regionId = JSON.parse(area).id || ''
} catch (e) {}
if (!this.regionId) {
this.tui.toast('未获取到区信息,开奖仅限本区域内进行')
this.tui.toast('未获取到区信息,开奖仅限本区域内进行')
return
}
this.loadResult()

53
package5/planet/index.vue

@ -92,7 +92,7 @@
id="guide-adventure"
class="guide-anchor-wrap"
:class="{'guide-focus-target': guideFocus.key === 'adventure'}">
<planet-adventure-entry @start="goAdventure" @arena="goArena"></planet-adventure-entry>
<planet-adventure-entry :social-mode="isSocialArea" @start="goAdventure" @arena="goArena"></planet-adventure-entry>
</view>
<view
@ -198,9 +198,9 @@
<view class="win-card rank-reward-card" @tap.stop>
<view class="win-burst"></view>
<view class="win-medal rank-reward-medal">TOP</view>
<view class="win-title">学院排位赛获奖啦</view>
<view class="win-sub">{{rankTopRewardModal.data.title || '学院排位赛荣耀榜奖励'}}</view>
<view class="win-tip">奖励已发放到账户余额继续为学院冲榜吧</view>
<view class="win-title">{{rankEventName}}获奖啦</view>
<view class="win-sub">{{rankTopRewardModal.data.title || (rankEventName + '荣耀榜奖励')}}</view>
<view class="win-tip">奖励已发放到账户余额继续为{{teamLabel}}冲榜吧</view>
<view class="win-btn" @tap.stop="closeRankTopReward">知道了</view>
</view>
</view>
@ -286,7 +286,7 @@
<view class="guide-list">
<view class="guide-item">
<text>1</text>
<view>每天签到开补给箱学院排位赛都能获得星球券和现金奖励</view>
<view>每天签到开补给箱{{rankEventName}}都能获得星球券和现金奖励</view>
</view>
<view class="guide-item">
<text>2</text>
@ -375,6 +375,7 @@
guideVisible: false,
taskDrawerVisible: false,
guidePausedStep: null,
areaKind: 1,
guideFocus: {
show: false,
key: '',
@ -398,6 +399,15 @@
}
},
computed: {
isSocialArea() {
return Number(this.areaKind) === 2
},
rankEventName() {
return this.isSocialArea ? '同城排位赛' : '学院排位赛'
},
teamLabel() {
return this.isSocialArea ? '战队' : '学院'
},
stars() {
const arr = []
for (let n = 1; n <= 20; n++) {
@ -439,8 +449,8 @@
{
key: 'adventure',
icon: '赛',
name: '学院排位赛赢现金',
desc: '为学院冲榜,个人排名也有奖励'
name: this.rankEventName + '赢现金',
desc: this.isSocialArea ? '为战队冲榜,个人排名也有奖励' : '为学院冲榜,个人排名也有奖励'
},
{
key: 'pk',
@ -543,7 +553,7 @@
{ key: 'box', index: 2, name: '幸运盲盒舱领券', desc: '抽盲盒有机会获得额外星球券', action: '去领取' },
{ key: 'hunt', index: 3, name: '发起掠夺', desc: '去财富排名页随机偷取星球券', action: '去掠夺' },
{ key: 'pool', index: 4, name: '投入券', desc: '投入星球券参与22:00开奖', action: '去投券' },
{ key: 'adventure', index: 5, name: '参与学院排位赛', desc: '打开学院排位赛页面了解奖励', action: '去排位' }
{ key: 'adventure', index: 5, name: '参与' + this.rankEventName, desc: '打开' + this.rankEventName + '页面了解奖励', action: '去排位' }
]
}
},
@ -555,6 +565,7 @@
this.userId = uni.getStorageSync('id') || ''
this.nickname = uni.getStorageSync('nickName') || uni.getStorageSync('nickname') || ''
this.avatar = uni.getStorageSync('avatarUrl') || uni.getStorageSync('avatar') || ''
this.syncAreaKind()
try {
const area = uni.getStorageSync('area')
if (area) {
@ -572,6 +583,7 @@
},
onShow() {
this.enableShareMenu()
this.syncAreaKind()
if (!this.hasLogin()) return
if (this.loadedOnce) {
this.loadHome(true)
@ -681,7 +693,7 @@
}
if (!this.regionId) {
this.loading = false
this.tui.toast('未获取到区信息,白嫖星球仅限本区域内进行')
this.tui.toast('未获取到区信息,白嫖星球仅限本区域内进行')
return
}
if (!silent) this.loading = true
@ -1047,7 +1059,7 @@
anchor: 'guide-adventure',
scrollAnchor: 'guide-adventure',
title: '这里是游戏版块',
desc: '学院排位赛、组队PK、盲盒和补给地图都在这里。'
desc: this.rankEventName + '、组队PK、盲盒和补给地图都在这里。'
}
}
const target = map[task.key]
@ -1196,8 +1208,23 @@
}
}
},
syncAreaKind(areaObj) {
let area = areaObj
if (!area) {
try {
const cached = uni.getStorageSync('area')
area = cached ? (typeof cached === 'string' ? JSON.parse(cached) : cached) : null
} catch (e) {
area = null
}
}
const kind = area ? Number(area.areaKind) : 1
this.areaKind = kind === 2 ? 2 : 1
},
onRandomSearch() {
this.startSearch('/app/planet/search/random', {}, { nickname: '随机同校区玩家' })
this.startSearch('/app/planet/search/random', {}, {
nickname: this.isSocialArea ? '随机同城玩家' : '随机同校区玩家'
})
},
onDailyCollect() {
if (!this.home.dailyLoop || !this.home.dailyLoop.signedToday) {
@ -1222,7 +1249,9 @@
this.huntModal.show = true
this.huntModal.phase = 'searching'
this.huntModal.result = null
this.huntModal.target = target || { nickname: '同校区玩家' }
this.huntModal.target = target || {
nickname: this.isSocialArea ? '同城玩家' : '同校区玩家'
}
setTimeout(() => { this.huntModal.phase = 'locking' }, 900)
setTimeout(() => { this.huntModal.phase = 'chasing' }, 1800)
this.tui.request(url, 'POST', Object.assign({

8
package5/planet/more.vue

@ -41,7 +41,7 @@
<text class="guide-icon">🎁</text>
<view>
<text>下单得券</text>
<text>外卖团购等校园订单完成后系统自动发放星球券</text>
<text>外卖团购等订单完成后系统自动发放星球券</text>
</view>
<text class="guide-action" @tap.stop="scrollToSupply('task')">去完成</text>
</view>
@ -69,13 +69,13 @@
<view class="section-head">
<view>
<view class="section-kicker">CAMPUS SUPPLY</view>
<view class="section-title">校园补给任务</view>
<view class="section-title">补给任务</view>
</view>
<!-- <view class="section-pill warn">可领券</view> -->
</view>
<view class="task-tip">
<text>💡</text>
<text>重点看右侧按钮显示领取的任务可以直接拿券显示去完成的任务完成校园订单后系统自动发放星球券</text>
<text>重点看右侧按钮显示领取的任务可以直接拿券显示去完成的任务完成订单后系统自动发放星球券</text>
</view>
<planet-tasks
:tasks="home.tasks"
@ -197,7 +197,7 @@
}
if (!this.regionId) {
this.loading = false
this.tui.toast('未获取到区信息')
this.tui.toast('未获取到区信息')
return
}
if (!silent) this.loading = true

6
package5/planet/rank.vue

@ -23,7 +23,7 @@
</view>
<view class="radar-copy">
<view class="radar-kicker">SCHOOL RICH LIST</view>
<view class="radar-title">全校首富雷达</view>
<view class="radar-title">区域首富雷达</view>
<view class="radar-sub">从榜单里选定目标发起星际追查抢回今日补给权</view>
</view>
<view class="radar-count">
@ -50,7 +50,7 @@
<view class="podium-prize">排名越高 · 越容易被盯上</view>
</view>
<view class="reward-rule">
<view class="reward-main">每日 21:30 区分别结算排行榜前 5 名瓜分星球券</view>
<view class="reward-main">每日 21:30 按区分别结算排行榜前 5 名瓜分星球券</view>
<view class="reward-chips">
<text>第1名 +5</text>
<text>第2名 +4</text>
@ -254,7 +254,7 @@
}
if (!this.regionId) {
this.loading = false
this.tui.toast('未获取到区信息')
this.tui.toast('未获取到区信息')
return
}
if (reset) {

Loading…
Cancel
Save