init: laimiao-web-new

This commit is contained in:
light committed 2026-11-07 10:43:06 +08:00
commit c226cf7054
122 files changed
+18458

No files matched your search

+53
View File
@@ -0,0 +1,53 @@
<script setup lang="ts">
import { onMounted, onUnmounted, ref } from 'vue'
import RechargeDialog from '../components/RechargeDialog.vue'
import ScoreDetailDialog from '../components/ScoreDetailDialog.vue'
import { getMyTeam } from '../utils/teamApi'
const rechargeOpen = ref(false)
const scoreDetailOpen = ref(false)
const teamId = ref(localStorage.getItem('team_id') || '')
const teamScore = ref(Number(localStorage.getItem('team_score') || 0))
async function syncTeam(): Promise<void> {
const team = await getMyTeam()
if (!team) return
teamId.value = String(team.team_id)
teamScore.value = team.score ?? 0
window.dispatchEvent(new CustomEvent('laimiao:team-updated', { detail: { score: teamScore.value } }))
}
function openRecharge(): void {
void syncTeam()
rechargeOpen.value = true
}
function openScoreDetail(): void {
void syncTeam()
scoreDetailOpen.value = true
}
function handlePaymentSuccess(): void {
void syncTeam()
}
onMounted(() => {
window.addEventListener('laimiao:open-recharge', openRecharge)
window.addEventListener('laimiao:open-score-detail', openScoreDetail)
})
onUnmounted(() => {
window.removeEventListener('laimiao:open-recharge', openRecharge)
window.removeEventListener('laimiao:open-score-detail', openScoreDetail)
})
</script>
<template>
<RechargeDialog
v-model:isOpen="rechargeOpen"
:team-id="teamId"
vip-type="laimiao"
@payment-success="handlePaymentSuccess"
/>
<ScoreDetailDialog v-model:isOpen="scoreDetailOpen" :team-id="teamId" :team-score="teamScore" />
</template>