x1ongzhu 2 jaren geleden
bovenliggende
commit
3a44356917
3 gewijzigde bestanden met toevoegingen van 211 en 209 verwijderingen
  1. 6 0
      src/styles/main.less
  2. 21 22
      src/views/BLFPage.vue
  3. 184 187
      src/views/HomePage.vue

+ 6 - 0
src/styles/main.less

@@ -1,3 +1,9 @@
+@media screen and (min-width: 480px) {
+    // ion-app {
+    //     width: 480px;
+    //     margin: 0 calc((100vw - 480px) / 2);
+    // }
+}
 :root {
     --van-primary-color: #2d2d2d;
     --van-tabbar-item-icon-margin-bottom: 2px;

+ 21 - 22
src/views/BLFPage.vue

@@ -2,21 +2,21 @@
     <ion-page>
         <ion-content>
             <img class="top-img" src="@/assets/blfBg.jpg" alt="" />
-
-            <div class="box">
-                <img src="@/assets/blfimg3.png" alt="" class="box-img" />
-                <div class="box-text">
-                    <div class="text2">{{ $t('blf.tips', { rate }) }}</div>
-                </div>
-                <div class="num">
-                    <div class="num-title">{{ $t('blf.has') }}</div>
-                    <div class="progress">
-                        <van-progress :percentage="progress" />
+            <UseElementBounding v-slot="{ height }">
+                <div class="box">
+                    <img src="@/assets/blfimg3.png" alt="" class="box-img" />
+                    <div class="box-text" :style="{ top: height * 0.64 + 'px' }">
+                        <div class="text2">{{ $t('blf.tips', { rate }) }}</div>
+                    </div>
+                    <div class="num">
+                        <div class="num-title">{{ $t('blf.has') }}</div>
+                        <div class="progress">
+                            <van-progress :percentage="progress" />
+                        </div>
+                        <div class="progress-val">{{ now }}/{{ total }}</div>
                     </div>
-                    <div class="progress-val">{{ now }}/{{ total }}</div>
                 </div>
-            </div>
-
+            </UseElementBounding>
             <div class="buy">
                 <!-- <van-button
                     class="animate__animated animate__headShake animate__infinite"
@@ -107,6 +107,7 @@ import { closeOutline } from 'ionicons/icons'
 import { IonModal, IonContent } from '@ionic/vue'
 import activeIcon from '@/assets/icon_gouxuan_pre2.png'
 import icon from '@/assets/icon_gouxuan_huise.png'
+import { UseElementBounding } from '@vueuse/components'
 
 const userStore = useUserStore()
 const user = computed(() => {
@@ -257,21 +258,20 @@ ion-content {
 .box {
     margin: 15px 20px;
     position: relative;
+    font-size: 0;
     .box-img {
         width: 100%;
     }
 
     .box-text {
         position: absolute;
-        top: 62.6vw;
-        padding: 0 8vw;
-        height: 20vw;
+        width: 72%;
+        left: 0;
+        right: 0;
+        margin: auto;
         text-align: center;
-        .f();
-        .text2 {
-            font-size: 12px;
-            color: #fff3cf;
-        }
+        font-size: 12px;
+        color: #fff3cf;
     }
 }
 
@@ -281,7 +281,6 @@ ion-content {
     right: 0;
     bottom: 0;
     width: 100%;
-    height: 20vw;
     border-radius: 0px 0px 8px 8px;
     .f-col();
     padding: 15px 0;

+ 184 - 187
src/views/HomePage.vue

@@ -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 }}&nbsp;
                                 {{ $t('rank.withdrawRechargeRate') }}{{ parseInt(item.roi * 100) }}%
                             </div> -->
-                                <div class="text">
-                                    {{ $t('balance.withdraw') }}&nbsp;<span class="nor">{{ $t('balance.symbol') }}</span
-                                    >{{ item.money }}
+                                    <div class="text">
+                                        {{ $t('balance.withdraw') }}&nbsp;<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 }}&nbsp;
                                 {{ $t('rank.withdrawRechargeRate') }}{{ parseInt(item.roi * 100) }}%
                             </div> -->
-                                <div class="text">
-                                    {{ $t('balance.withdraw') }}&nbsp;<span class="nor">{{ $t('balance.symbol') }}</span
-                                    >{{ item.money }}
+                                    <div class="text">
+                                        {{ $t('balance.withdraw') }}&nbsp;<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;