|
|
@@ -1,169 +1,181 @@
|
|
|
<template>
|
|
|
<ion-page>
|
|
|
<ion-content fullscreen class="home">
|
|
|
- <!-- 轮播图模块 -->
|
|
|
- <div class="swiper-content">
|
|
|
- <van-swipe class="mySwiper" :autoplay="5000">
|
|
|
+ <UseElementBounding v-slot="{ width }">
|
|
|
+ <van-swipe class="mySwiper" :autoplay="5000" :style="{ height: width * 0.65 + 'px' }">
|
|
|
<van-swipe-item v-for="(item, index) in topBanners" :key="index">
|
|
|
- <van-image :src="item.pic" fit="cover" height="65vw" width="100vw" />
|
|
|
+ <van-image :src="item.pic" fit="cover" :width="width" :height="width * 0.65" />
|
|
|
</van-swipe-item>
|
|
|
<van-swipe-item :key="999">
|
|
|
<van-image
|
|
|
src="https://paimaide.s3.ap-northeast-1.amazonaws.com/image/2023-03-13-16-01-05mrZJlQJL.jpg"
|
|
|
fit="cover"
|
|
|
- height="65vw"
|
|
|
- width="100vw"
|
|
|
+ :width="width"
|
|
|
+ :height="width * 0.65"
|
|
|
@click="customer"
|
|
|
/>
|
|
|
</van-swipe-item>
|
|
|
</van-swipe>
|
|
|
- </div>
|
|
|
- <div class="img-btns">
|
|
|
- <img
|
|
|
- src="@/assets/INTRO.png"
|
|
|
- class="tutorial-btn animate__animated animate__heartBeat animate__infinite"
|
|
|
- alt=""
|
|
|
- srcset=""
|
|
|
- @click="showIntroVideo"
|
|
|
- />
|
|
|
- <img
|
|
|
- src="@/assets/OPNAVI.png"
|
|
|
- class="tutorial-btn animate__animated animate__heartBeat animate__infinite"
|
|
|
- alt=""
|
|
|
- srcset=""
|
|
|
- @click="showTutorialVideo"
|
|
|
- />
|
|
|
- <img
|
|
|
- src="@/assets/TUTORIAL.png"
|
|
|
- class="tutorial-btn animate__animated animate__heartBeat animate__infinite"
|
|
|
- alt=""
|
|
|
- srcset=""
|
|
|
- @click="showGraphicTutorial"
|
|
|
- />
|
|
|
- </div>
|
|
|
- <!-- 通知 -->
|
|
|
- <div class="notice-box" v-if="news.length > 0">
|
|
|
- <van-notice-bar ref="noticeBarRef" left-icon="volume-o">
|
|
|
- <template #left-icon>
|
|
|
- <van-badge
|
|
|
- dot
|
|
|
- :offset="[-4, 4]"
|
|
|
- class="animate__animated animate__rubberBand animate__infinite"
|
|
|
- v-if="recentNews"
|
|
|
- >
|
|
|
- <img class="bar-icon" src="../assets/home_icon_redian.png" alt="" @click="showConsoleEve" />
|
|
|
- </van-badge>
|
|
|
-
|
|
|
- <img
|
|
|
- class="bar-icon"
|
|
|
- v-else
|
|
|
- src="../assets/home_icon_redian.png"
|
|
|
- alt=""
|
|
|
- @click="showConsoleEve"
|
|
|
- />
|
|
|
- <div class="driver"></div>
|
|
|
- </template>
|
|
|
- <van-swipe
|
|
|
- vertical
|
|
|
- class="notice-swipe"
|
|
|
- :autoplay="3000"
|
|
|
- :touchable="false"
|
|
|
- :show-indicators="false"
|
|
|
- >
|
|
|
- <van-swipe-item
|
|
|
- v-for="(item, index) in news"
|
|
|
- :key="index"
|
|
|
- @click="router.push({ name: 'news' })"
|
|
|
+ <div class="img-btns">
|
|
|
+ <img
|
|
|
+ src="@/assets/INTRO.png"
|
|
|
+ class="tutorial-btn animate__animated animate__heartBeat animate__infinite"
|
|
|
+ alt=""
|
|
|
+ srcset=""
|
|
|
+ @click="showIntroVideo"
|
|
|
+ />
|
|
|
+ <img
|
|
|
+ src="@/assets/OPNAVI.png"
|
|
|
+ class="tutorial-btn animate__animated animate__heartBeat animate__infinite"
|
|
|
+ alt=""
|
|
|
+ srcset=""
|
|
|
+ @click="showTutorialVideo"
|
|
|
+ />
|
|
|
+ <img
|
|
|
+ src="@/assets/TUTORIAL.png"
|
|
|
+ class="tutorial-btn animate__animated animate__heartBeat animate__infinite"
|
|
|
+ alt=""
|
|
|
+ srcset=""
|
|
|
+ @click="showGraphicTutorial"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="notice-box" v-if="news.length > 0">
|
|
|
+ <van-notice-bar ref="noticeBarRef" left-icon="volume-o">
|
|
|
+ <template #left-icon>
|
|
|
+ <van-badge
|
|
|
+ dot
|
|
|
+ :offset="[-4, 4]"
|
|
|
+ class="animate__animated animate__rubberBand animate__infinite"
|
|
|
+ v-if="recentNews"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class="bar-icon"
|
|
|
+ src="../assets/home_icon_redian.png"
|
|
|
+ alt=""
|
|
|
+ @click="showConsoleEve"
|
|
|
+ />
|
|
|
+ </van-badge>
|
|
|
+
|
|
|
+ <img
|
|
|
+ class="bar-icon"
|
|
|
+ v-else
|
|
|
+ src="../assets/home_icon_redian.png"
|
|
|
+ alt=""
|
|
|
+ @click="showConsoleEve"
|
|
|
+ />
|
|
|
+ <div class="driver"></div>
|
|
|
+ </template>
|
|
|
+ <van-swipe
|
|
|
+ vertical
|
|
|
+ class="notice-swipe"
|
|
|
+ :autoplay="3000"
|
|
|
+ :touchable="false"
|
|
|
+ :show-indicators="false"
|
|
|
>
|
|
|
- <div class="notic-news">
|
|
|
- <span class="van-ellipsis">{{ item.title }}</span>
|
|
|
- <ion-icon class="right-icon" :icon="intoIcon"></ion-icon>
|
|
|
- </div>
|
|
|
- </van-swipe-item>
|
|
|
- </van-swipe>
|
|
|
- </van-notice-bar>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="rank-content">
|
|
|
- <img class="rank-bg" src="../assets/png-kuang.png" alt="" />
|
|
|
- <div class="rank-box" @click="router.push({ name: 'rank' })">
|
|
|
- <div class="rank-list">
|
|
|
- <div class="rank-info" v-for="(item, index) in recentWidthdraw" :key="index">
|
|
|
- <div class="rank-info-left">
|
|
|
- <div class="name">{{ item.nickname }}</div>
|
|
|
- <!-- <div class="text">
|
|
|
+ <van-swipe-item
|
|
|
+ v-for="(item, index) in news"
|
|
|
+ :key="index"
|
|
|
+ @click="router.push({ name: 'news' })"
|
|
|
+ >
|
|
|
+ <div class="notic-news">
|
|
|
+ <span class="van-ellipsis">{{ item.title }}</span>
|
|
|
+ <ion-icon class="right-icon" :icon="intoIcon"></ion-icon>
|
|
|
+ </div>
|
|
|
+ </van-swipe-item>
|
|
|
+ </van-swipe>
|
|
|
+ </van-notice-bar>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="rank-content">
|
|
|
+ <img class="rank-bg" src="../assets/png-kuang.png" alt="" />
|
|
|
+ <div class="rank-box" @click="router.push({ name: 'rank' })">
|
|
|
+ <div class="rank-list">
|
|
|
+ <div class="rank-info" v-for="(item, index) in recentWidthdraw" :key="index">
|
|
|
+ <div class="rank-info-left">
|
|
|
+ <div class="name">{{ item.nickname }}</div>
|
|
|
+ <!-- <div class="text">
|
|
|
{{ $t('balance.withdraw') }}{{ item.withdrawAccumulation }}
|
|
|
{{ $t('rank.withdrawRechargeRate') }}{{ parseInt(item.roi * 100) }}%
|
|
|
</div> -->
|
|
|
- <div class="text">
|
|
|
- {{ $t('balance.withdraw') }} <span class="nor">{{ $t('balance.symbol') }}</span
|
|
|
- >{{ item.money }}
|
|
|
+ <div class="text">
|
|
|
+ {{ $t('balance.withdraw') }} <span class="nor">{{
|
|
|
+ $t('balance.symbol')
|
|
|
+ }}</span
|
|
|
+ >{{ item.money }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <ion-icon class="right-icon" :icon="intoIcon"></ion-icon>
|
|
|
- </div>
|
|
|
- <div class="rank-info" v-for="(item, index) in recentWidthdraw" :key="index">
|
|
|
- <div class="rank-info-left">
|
|
|
- <div class="name">{{ item.nickname }}</div>
|
|
|
- <!-- <div class="text">
|
|
|
+ <ion-icon class="right-icon" :icon="intoIcon"></ion-icon>
|
|
|
+ </div>
|
|
|
+ <div class="rank-info" v-for="(item, index) in recentWidthdraw" :key="index">
|
|
|
+ <div class="rank-info-left">
|
|
|
+ <div class="name">{{ item.nickname }}</div>
|
|
|
+ <!-- <div class="text">
|
|
|
{{ $t('balance.withdraw') }}{{ item.withdrawAccumulation }}
|
|
|
{{ $t('rank.withdrawRechargeRate') }}{{ parseInt(item.roi * 100) }}%
|
|
|
</div> -->
|
|
|
- <div class="text">
|
|
|
- {{ $t('balance.withdraw') }} <span class="nor">{{ $t('balance.symbol') }}</span
|
|
|
- >{{ item.money }}
|
|
|
+ <div class="text">
|
|
|
+ {{ $t('balance.withdraw') }} <span class="nor">{{
|
|
|
+ $t('balance.symbol')
|
|
|
+ }}</span
|
|
|
+ >{{ item.money }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
- <ion-icon class="right-icon" :icon="intoIcon"></ion-icon>
|
|
|
+ <ion-icon class="right-icon" :icon="intoIcon"></ion-icon>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <!-- 初级场 -->
|
|
|
-
|
|
|
- <template v-for="(item, index) in saleBatches" :key="index">
|
|
|
- <div class="level">
|
|
|
- <van-cell :title="item.name" :value="$t('home.all')" @click="goList(item)" :border="false" is-link>
|
|
|
- <template #title>
|
|
|
- <div class="cell-title" :class="[`level_` + index]">
|
|
|
- <span>
|
|
|
- <span>{{ item.name }}</span>
|
|
|
- <img class="title-bg" src="@/assets/title-bg.png" alt="" />
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <template #right-icon>
|
|
|
- <ion-icon class="right-icon" :icon="intoIcon"></ion-icon>
|
|
|
- </template>
|
|
|
- </van-cell>
|
|
|
|
|
|
- <div class="second">
|
|
|
- <van-image @click="goList(item)" :src="item.cover" fit="scale-down" />
|
|
|
+ <!-- 初级场 -->
|
|
|
|
|
|
- <!-- <img class="second-btn" v-if="index === 0" src="../assets/TUTORIAL.png" alt="" /> -->
|
|
|
- <template v-if="item.empty !== null && item.id != 11547">
|
|
|
- <div
|
|
|
- class="status hot animate__animated animate__tada animate__infinite"
|
|
|
- v-if="getStatus(item) === '抢购中'"
|
|
|
- >
|
|
|
- <img src="../assets/info_icon_qianggouzhong.png" alt="" />
|
|
|
- <span>{{ $t('product.hot') }}</span>
|
|
|
- </div>
|
|
|
- <div class="status" v-else-if="getStatus(item)">
|
|
|
- <img src="../assets/info_icon_shijian.png" alt="" />
|
|
|
- <span>{{ $t('product.start', { time: formatTime(item.saleStart) }) }}</span>
|
|
|
- <span v-if="getStatus(item) === '已抢光'">({{ $t('blf.finish') }})</span>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
+ <template v-for="(item, index) in saleBatches" :key="index">
|
|
|
+ <div class="level">
|
|
|
+ <van-cell
|
|
|
+ :title="item.name"
|
|
|
+ :value="$t('home.all')"
|
|
|
+ @click="goList(item)"
|
|
|
+ :border="false"
|
|
|
+ is-link
|
|
|
+ >
|
|
|
+ <template #title>
|
|
|
+ <div class="cell-title" :class="[`level_` + index]">
|
|
|
+ <span>
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ <img class="title-bg" src="@/assets/title-bg.png" alt="" />
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template #right-icon>
|
|
|
+ <ion-icon class="right-icon" :icon="intoIcon"></ion-icon>
|
|
|
+ </template>
|
|
|
+ </van-cell>
|
|
|
+
|
|
|
+ <div class="second">
|
|
|
+ <van-image @click="goList(item)" :src="item.cover" fit="scale-down" />
|
|
|
+
|
|
|
+ <!-- <img class="second-btn" v-if="index === 0" src="../assets/TUTORIAL.png" alt="" /> -->
|
|
|
+ <template v-if="item.empty !== null && item.id != 11547">
|
|
|
+ <div
|
|
|
+ class="status hot animate__animated animate__tada animate__infinite"
|
|
|
+ v-if="getStatus(item) === '抢购中'"
|
|
|
+ >
|
|
|
+ <img src="../assets/info_icon_qianggouzhong.png" alt="" />
|
|
|
+ <span>{{ $t('product.hot') }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="status" v-else-if="getStatus(item)">
|
|
|
+ <img src="../assets/info_icon_shijian.png" alt="" />
|
|
|
+ <span>{{ $t('product.start', { time: formatTime(item.saleStart) }) }}</span>
|
|
|
+ <span v-if="getStatus(item) === '已抢光'">({{ $t('blf.finish') }})</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
+ </template>
|
|
|
|
|
|
- <div class="tools">
|
|
|
- <!-- <div class="tool">
|
|
|
+ <div class="tools">
|
|
|
+ <!-- <div class="tool">
|
|
|
<img src="../assets/home_icon_pingtaixieyi.png" alt="" />
|
|
|
<span>{{ $t('common.eula') }}</span>
|
|
|
</div>
|
|
|
@@ -171,13 +183,14 @@
|
|
|
<img src="../assets/home_icon_liucheng.png" alt="" />
|
|
|
<span>{{ $t('common.guide') }}</span>
|
|
|
</div> -->
|
|
|
- <div class="tool-info" @click="showTutorialVideo">
|
|
|
- <img src="../assets/png-TUTORIAL.png" alt="" />
|
|
|
- </div>
|
|
|
- <div class="tool-info" @click="showIntroVideo">
|
|
|
- <img src="../assets/png-AGREEMENT.png" alt="" />
|
|
|
+ <div class="tool-info" @click="showTutorialVideo">
|
|
|
+ <img src="../assets/png-TUTORIAL.png" alt="" />
|
|
|
+ </div>
|
|
|
+ <div class="tool-info" @click="showIntroVideo">
|
|
|
+ <img src="../assets/png-AGREEMENT.png" alt="" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ </UseElementBounding>
|
|
|
</ion-content>
|
|
|
</ion-page>
|
|
|
</template>
|
|
|
@@ -201,6 +214,7 @@ import { getUtcTime } from '@/plugins/time'
|
|
|
import { useUserStore } from '@/stores/user'
|
|
|
import { showVideoModal } from '@/components/videoModal'
|
|
|
import NewsModal from '@/components/NewsModal.vue'
|
|
|
+import { UseElementBounding } from '@vueuse/components'
|
|
|
|
|
|
const router = useRouter()
|
|
|
const i18n = useI18n()
|
|
|
@@ -419,7 +433,6 @@ ion-content {
|
|
|
--background: no-repeat center/cover url('@/assets/home_bg.jpg');
|
|
|
}
|
|
|
.mySwiper {
|
|
|
- height: 65vw;
|
|
|
:deep(.swiper-pagination-bullet) {
|
|
|
background-color: var(--ion-text-color);
|
|
|
width: 12px;
|
|
|
@@ -435,35 +448,21 @@ ion-content {
|
|
|
}
|
|
|
}
|
|
|
.img-btns {
|
|
|
- position: absolute;
|
|
|
- top: 49.2vw;
|
|
|
+ position: relative;
|
|
|
z-index: 20;
|
|
|
.f();
|
|
|
justify-content: space-between;
|
|
|
- left: 15px;
|
|
|
- right: 15px;
|
|
|
-
|
|
|
+ margin-top: -60px;
|
|
|
+ padding: 0 20px;
|
|
|
img {
|
|
|
width: 110px;
|
|
|
display: block;
|
|
|
}
|
|
|
}
|
|
|
-// }
|
|
|
-// .tutorial-btn {
|
|
|
-// position: absolute;
|
|
|
-// top: 50.2vw;
|
|
|
-// width: 90px;
|
|
|
-// display: block;
|
|
|
-// z-index: 20;
|
|
|
-// left: 50%;
|
|
|
-// margin-left: -45px;
|
|
|
-// }
|
|
|
.notice-box {
|
|
|
- position: absolute;
|
|
|
- top: calc(56.2vw + 20px);
|
|
|
- left: 20px;
|
|
|
- right: 20px;
|
|
|
+ position: relative;
|
|
|
z-index: 20;
|
|
|
+ margin: 10px 20px 0 20px;
|
|
|
background: linear-gradient(#dfffcd 0%, #91fac5 48%, #49f3bb 100%);
|
|
|
border-radius: 8px;
|
|
|
padding: 1px;
|
|
|
@@ -515,7 +514,31 @@ ion-content {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+.rank-content {
|
|
|
+ height: 76px;
|
|
|
+ margin: 10px 20px 10px 20px;
|
|
|
+ position: relative;
|
|
|
+ .f();
|
|
|
+ justify-content: center;
|
|
|
+
|
|
|
+ .rank-bg {
|
|
|
+ height: 75px;
|
|
|
+ display: block;
|
|
|
+ position: absolute;
|
|
|
+ width: 100%;
|
|
|
+ top: 0px;
|
|
|
+ left: 0px;
|
|
|
+ z-index: 0;
|
|
|
+ }
|
|
|
|
|
|
+ .rank-box {
|
|
|
+ position: relative;
|
|
|
+ z-index: 1;
|
|
|
+ width: calc(100% - 8px);
|
|
|
+ height: 65px;
|
|
|
+ overflow: hidden;
|
|
|
+ }
|
|
|
+}
|
|
|
:deep(.van-cell) {
|
|
|
--van-cell-background: transparent;
|
|
|
--van-cell-active-color: transparent;
|
|
|
@@ -663,32 +686,6 @@ ion-content {
|
|
|
color: var(--ion-color-step-350);
|
|
|
}
|
|
|
|
|
|
-.rank-content {
|
|
|
- height: 76px;
|
|
|
- margin: 2px 20px 10px;
|
|
|
- position: relative;
|
|
|
- .f();
|
|
|
- justify-content: center;
|
|
|
- margin-top: 41px;
|
|
|
-
|
|
|
- .rank-bg {
|
|
|
- height: 75px;
|
|
|
- display: block;
|
|
|
- position: absolute;
|
|
|
- width: 100%;
|
|
|
- top: 0px;
|
|
|
- left: 0px;
|
|
|
- z-index: 0;
|
|
|
- }
|
|
|
-
|
|
|
- .rank-box {
|
|
|
- position: relative;
|
|
|
- z-index: 1;
|
|
|
- width: calc(100% - 8px);
|
|
|
- height: 65px;
|
|
|
- overflow: hidden;
|
|
|
- }
|
|
|
-}
|
|
|
.rank-list {
|
|
|
padding: 9px 12px;
|
|
|
animation: goDown linear 20s infinite;
|