update
This commit is contained in:
@@ -3,10 +3,8 @@
|
||||
<div class="scene-item item-1" @click="handleGoHome">
|
||||
<img src="../assets/images/new/go-home.png" alt="回到首页">
|
||||
</div>
|
||||
<div class="scene-item item-2">
|
||||
<img src="../assets/images/new/music.png" alt="音乐">
|
||||
</div>
|
||||
<div class="confirm-layout">
|
||||
|
||||
<div class="confirm-layout" v-if="isConfirmBtnDisplay">
|
||||
<div class="scene-item item-3" @click="handleConfirmClick">
|
||||
<img src="../assets/images/new/confirm-btn.png" alt="确定">
|
||||
</div>
|
||||
@@ -22,13 +20,15 @@
|
||||
>
|
||||
<div
|
||||
class="carousel-track"
|
||||
:style="{ transform: `translateX(calc(-${currentIndex * 100}% + ${currentIndex * 60}px))`, transition: isTransitioning ? 'transform 0.3s ease' : 'none' }"
|
||||
:style="{ transform: `translateX(calc(-${currentIndex * 104}% + ${currentIndex * 60}px))`, transition: isTransitioning ? 'transform 0.3s ease' : 'none' }"
|
||||
>
|
||||
|
||||
<div
|
||||
v-for="(slide, index) in slides"
|
||||
:key="index"
|
||||
:class="['carousel-slide', { active: currentIndex === index }]"
|
||||
>
|
||||
<img v-show="slide.show" class="complete-icon" src="../assets/images/new/complete-icon.png" alt="">
|
||||
<img :src="slide.image" :alt="slide.title" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -49,38 +49,91 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted, onUnmounted } from 'vue'
|
||||
import { ref, onMounted, onUnmounted, watch, computed } from 'vue'
|
||||
import ModalTransition from "./ModalTransition.vue"
|
||||
import globalToastEvent, { ToastType } from '../globalToastEvent';
|
||||
import { Request } from "../libs/utils"
|
||||
import slider1 from '../assets/images/new/slider1.png';
|
||||
import slider2 from '../assets/images/new/slider2.png';
|
||||
import slider3 from '../assets/images/new/slider3.png';
|
||||
import slider4 from '../assets/images/new/slider4.png';
|
||||
import slider5 from '../assets/images/new/slider5.png';
|
||||
import { globalStore } from "../globalstore.js";
|
||||
|
||||
const props = defineProps({
|
||||
show: false,
|
||||
})
|
||||
|
||||
const emit = defineEmits(['update:show'])
|
||||
const handleGoHome = () => {
|
||||
emit('close')
|
||||
}
|
||||
const emit = defineEmits(['close'])
|
||||
|
||||
// 轮播图数据
|
||||
const slides = ref([
|
||||
{
|
||||
image: new URL('../assets/images/new/slider1.png', import.meta.url).href,
|
||||
image: slider1,
|
||||
title: '轮播图1',
|
||||
link: '/home' // 点击跳转的路由
|
||||
id: 1,
|
||||
show: true,
|
||||
},
|
||||
{
|
||||
image: new URL('../assets/images/new/slider1.png', import.meta.url).href,
|
||||
image: slider2,
|
||||
title: '轮播图2',
|
||||
link: '/lottery'
|
||||
id: 2,
|
||||
show: true,
|
||||
},
|
||||
{
|
||||
image: new URL('../assets/images/new/slider1.png', import.meta.url).href,
|
||||
image: slider3,
|
||||
title: '轮播图3',
|
||||
link: '/address'
|
||||
id: 3,
|
||||
show: true,
|
||||
},
|
||||
{
|
||||
image: slider4,
|
||||
title: '轮播图4',
|
||||
id: 4,
|
||||
show: true,
|
||||
},
|
||||
{
|
||||
image: slider5,
|
||||
title: '轮播图5',
|
||||
id: 5,
|
||||
show: true,
|
||||
}
|
||||
])
|
||||
|
||||
const isConfirmBtnDisplay = computed(() => {
|
||||
const slide = slides.value?.[currentIndex.value];
|
||||
return !globalStore.completed_games_today.includes(`game${slide.id}`);
|
||||
})
|
||||
|
||||
const getGameInfo = async () => {
|
||||
const result = await Request('game/info', { refresh_official: true, refresh_cap_scan: true }, "GET")
|
||||
if (result?.res?.status === 200) {
|
||||
console.log(result)
|
||||
// globalStore.completed_games_today = result.json.completed_games_today || [];
|
||||
globalStore.completed_games_today = ['game1', 'game3']; // 测试数据
|
||||
slides.value = slides.value.map(slide => ({
|
||||
...slide,
|
||||
show: globalStore.completed_games_today.includes(`game${slide.id}`)
|
||||
}));
|
||||
} else {
|
||||
weui.alert("获取游戏数据失败,请刷新页面重试");
|
||||
emit('close');
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
watch(() => props.show, async (newVal) => {
|
||||
if (!newVal) {
|
||||
return
|
||||
}
|
||||
getGameInfo();
|
||||
}, { immediate: true })
|
||||
|
||||
const handleGoHome = () => {
|
||||
emit('close')
|
||||
}
|
||||
|
||||
|
||||
const currentIndex = ref(0)
|
||||
const startX = ref(0)
|
||||
const moveX = ref(0)
|
||||
@@ -141,24 +194,37 @@ const goToSlide = (index) => {
|
||||
isTransitioning.value = true
|
||||
currentIndex.value = index
|
||||
stopAutoPlay()
|
||||
startAutoPlay()
|
||||
// startAutoPlay()
|
||||
}
|
||||
|
||||
const hasVisitedBefore = localStorage.getItem('hasVisitedGameSwiper');
|
||||
|
||||
const handleConfirmClick = () => {
|
||||
const handleConfirmClick = async () => {
|
||||
const loading = weui.loading()
|
||||
const slide = slides.value?.[currentIndex.value]
|
||||
if (!slide) return
|
||||
handleSlideClick(slide)
|
||||
|
||||
// 点击确定按钮开始游戏,调用一次game log接口
|
||||
const gameSource = `game${slide.id}`;
|
||||
globalStore.game_id = gameSource;
|
||||
let gameLogRes = await Request("game/log", { source: globalStore.game_id }, "POST");
|
||||
if (!gameLogRes || !gameLogRes.res || (gameLogRes.res.status !== 200 && gameLogRes.res.status !== 201)) {
|
||||
emit('close')
|
||||
loading.hide()
|
||||
return
|
||||
} else {
|
||||
globalStore.current_game_log_id = gameLogRes.json.log_id;
|
||||
}
|
||||
}
|
||||
|
||||
const handleSlideClick = (slide) => {
|
||||
|
||||
if (!hasVisitedBefore) {
|
||||
localStorage.setItem('hasVisitedGameSwiper', 'true');
|
||||
globalToastEvent.emit(ToastType.SHOW_GAMEDEMO)
|
||||
globalToastEvent.emit(ToastType.SHOW_GAMEPAGE)
|
||||
globalToastEvent.emit(ToastType.SHOW_GAMEPAGE, slide)
|
||||
} else {
|
||||
globalToastEvent.emit(ToastType.SHOW_GAMEPAGE)
|
||||
globalToastEvent.emit(ToastType.SHOW_GAMEPAGE, slide)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,6 +254,12 @@ onUnmounted(() => {
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.complete-icon {
|
||||
width: 14vw !important;
|
||||
position: absolute;
|
||||
left: 2vw;
|
||||
top: -2vw;
|
||||
}
|
||||
.scene-item {
|
||||
position: fixed;
|
||||
cursor: pointer;
|
||||
@@ -207,8 +279,8 @@ onUnmounted(() => {
|
||||
.item-1 {
|
||||
width: 14vw;
|
||||
height: 14vw;
|
||||
top: 8vw;
|
||||
left: 2vw;
|
||||
top: 6.8vw;
|
||||
left: 3vw;
|
||||
animation-delay: 0s;
|
||||
}
|
||||
.item-2 {
|
||||
|
||||
Reference in New Issue
Block a user