123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- <template>
- <section class="wrap__four">
- <img src="@/public/images/banner02.png" class="banner-bg" />
- <div class="mask-bg"></div>
- <div class="wrap__four-body">
- <div class="wrap__four-total trans-300">
- <!-- <span>10,117,195</span> -->
- <!-- <a-statistic title="" :value="statisticNumber" /> -->
- <a-statistic title="" :value="computeStatisticValue(Date.now())" />
- </div>
- <div class="wrap__four-desc trans-300">
- <span>{{ $t('system["包裹运送到全球,而且还在不断增加..."]') }}</span>
- </div>
- <div class="wrap__four-tips">
- <span>{{ $t('system["自 Vava buy.com 成立以来"]') }}</span>
- </div>
- </div>
- </section>
- </template>
- <script setup lang="ts">
- import { ref, onBeforeUnmount, onMounted } from 'vue'
- const statisticNumber = ref<number>(0)
- const statisticTimer = ref<number>(-1)
- const computeDelay = ref<number>(1000 * 60 * 60 * 1)
- const statisticStorageKey: string = 'statistic_time'
- // 获取统计值
- function initForStatistic() {
- statisticNumber.value = getStatisticValue()
- const nowTime = Date.now()
- const oldTime = !!localStorage.getItem(statisticStorageKey)
- ? Number(localStorage.getItem(statisticStorageKey))
- : nowTime
- let step_temp = Math.floor((nowTime - oldTime) / computeDelay.value)
- console.log('(nowTime - oldTime)', nowTime - oldTime)
- console.log('step_temp', step_temp)
- if (step_temp > 0) {
- statisticNumber.value = computeStatisticValue(oldTime + computeDelay.value * step_temp)
- localStorage.setItem(statisticStorageKey, `${oldTime + computeDelay.value * step_temp}`)
- } else {
- !localStorage.getItem(statisticStorageKey) &&
- localStorage.setItem(statisticStorageKey, `${nowTime}`)
- }
- }
- function getStatisticValue(): number {
- let oldVal: string | null = localStorage.getItem(statisticStorageKey)
- const nowTime: number = Date.now()
- let result: number = computeStatisticValue(!!oldVal ? Number(oldVal) : nowTime)
- return result
- }
- // 计算统计值
- function computeStatisticValue(value: number): number {
- return Number((value / (1000 * 60 * 60)).toFixed(0))
- }
- // 添加计时器
- function addInterval(delay = 1000 * 30) {
- statisticTimer.value = setInterval(() => {
- initForStatistic()
- }, delay)
- }
- // 移除计时器
- function removeInterval() {
- clearInterval(statisticTimer.value)
- statisticTimer.value = -1
- }
- /* ------------------------------ 生命周期钩子 ------------------------------ */
- onMounted(() => {
- initForStatistic()
- addInterval()
- })
- onBeforeUnmount(() => {
- removeInterval()
- })
- </script>
- <style lang="less" scoped>
- .wrap__four {
- display: flex;
- justify-content: center;
- position: relative;
- width: 100%;
- height: auto;
- .banner-bg {
- width: 100%;
- max-width: 1200px;
- max-width: 75rem;
- height: auto;
- min-height: 260px;
- object-fit: cover;
- }
- .mask-bg {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- background: linear-gradient(270deg, #000000 0%, rgba(0, 0, 0, 0) 100%);
- }
- .wrap__four-body {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- text-align: center;
- .wrap__four-total {
- margin-bottom: 30px;
- margin-bottom: 1.875rem;
- :deep(.ant-statistic-content-value-int) {
- font-family: Poppins;
- font-size: 120px;
- font-size: 7.5rem;
- font-weight: 600;
- color: #ffffff;
- }
- }
- .wrap__four-desc {
- font-family: Source Han Sans;
- font-size: 26px;
- font-size: 1.625rem;
- font-weight: bold;
- font-variation-settings: 'opsz' auto;
- font-feature-settings: 'kern' on;
- color: #ffffff;
- }
- .wrap__four-tips {
- margin-top: 80px;
- margin-top: 5rem;
- font-family: Source Han Sans;
- font-weight: 500;
- font-size: 15px;
- font-size: 0.9375rem;
- color: rgba(255, 255, 255, 0.75);
- }
- }
- }
- </style>
- <style lang="less" scoped>
- @import url(./css/styles@1200.less);
- @import url(./css/styles@1024.less);
- @import url(./css/styles@768.less);
- </style>
|