yanjinhui
10 天以前 c5de0d98241f8c8349fa38851b77efcfc61e4d26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<script setup lang="ts">
import { ContentWrap } from '@/components/ContentWrap'
import { useI18n } from '@/hooks/web/useI18n'
import { CountTo } from '@/components/CountTo'
import { ElRow, ElCol, ElInputNumber, ElInput } from 'element-plus'
import { ref, unref } from 'vue'
 
const { t } = useI18n()
 
const countRef = ref<ComponentRef<typeof CountTo>>()
 
const startVal = ref(0)
 
const endVal = ref(1314512)
 
const duration = ref(3000)
 
const decimals = ref(0)
 
const separator = ref(',')
 
const prefix = ref('¥ ')
 
const suffix = ref(' rmb')
 
const autoplay = ref(false)
 
const start = () => {
  unref(countRef)?.start()
}
 
const pauseResume = () => {
  unref(countRef)?.pauseResume()
}
</script>
 
<template>
  <ContentWrap :title="t('countToDemo.countTo')" :message="t('countToDemo.countToDes')">
    <div class="text-center mb-40px">
      <CountTo
        ref="countRef"
        :start-val="startVal"
        :end-val="endVal"
        :duration="duration"
        :decimals="decimals"
        :separator="separator"
        :prefix="prefix"
        :suffix="suffix"
        :autoplay="autoplay"
        class="text-30px font-bold text-[var(--el-color-primary)]"
      />
    </div>
    <ElRow :gutter="20" justify="space-between">
      <ElCol :xl="8" :lg="8" :md="12" :sm="24" :xs="24">
        <div class="flex mb-20px items-center">
          <span class="min-w-90px text-right">{{ t('countToDemo.startVal') }}:</span>
          <ElInputNumber v-model="startVal" :min="0" />
        </div>
      </ElCol>
      <ElCol :xl="8" :lg="8" :md="12" :sm="24" :xs="24">
        <div class="flex mb-20px items-center">
          <span class="min-w-90px text-right">{{ t('countToDemo.endVal') }}:</span>
          <ElInputNumber v-model="endVal" :min="1" />
        </div>
      </ElCol>
      <ElCol :xl="8" :lg="8" :md="12" :sm="24" :xs="24">
        <div class="flex mb-20px items-center">
          <span class="min-w-90px text-right">{{ t('countToDemo.duration') }}:</span>
          <ElInputNumber v-model="duration" :min="1000" />
        </div>
      </ElCol>
      <ElCol :xl="8" :lg="8" :md="12" :sm="24" :xs="24">
        <div class="flex mb-20px items-center">
          <span class="min-w-90px text-right">{{ t('countToDemo.separator') }}:</span>
          <ElInput v-model="separator" />
        </div>
      </ElCol>
      <ElCol :xl="8" :lg="8" :md="12" :sm="24" :xs="24">
        <div class="flex mb-20px items-center">
          <span class="min-w-90px text-right">{{ t('countToDemo.prefix') }}:</span>
          <ElInput v-model="prefix" />
        </div>
      </ElCol>
      <ElCol :xl="8" :lg="8" :md="12" :sm="24" :xs="24">
        <div class="flex mb-20px items-center">
          <span class="min-w-90px text-right">{{ t('countToDemo.suffix') }}:</span>
          <ElInput v-model="suffix" />
        </div>
      </ElCol>
      <ElCol :span="24">
        <div class="text-center">
          <BaseButton type="primary" @click="start">{{ t('countToDemo.start') }}</BaseButton>
          <BaseButton @click="pauseResume">
            {{ t('countToDemo.pause') }}/{{ t('countToDemo.resume') }}
          </BaseButton>
        </div>
      </ElCol>
    </ElRow>
  </ContentWrap>
</template>