From 8bc4fa31dfb3da2819d93a34398d7da9fb8a6045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E8=82=96=E7=A3=8A?= <18851179580@163.com> Date: Wed, 4 Sep 2024 18:04:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A7=92=E6=9D=80=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/model-seckill/index.vue | 44 +++++++++++++++++++++----- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/src/components/model-seckill/index.vue b/src/components/model-seckill/index.vue index 3d543562..ac022ba9 100644 --- a/src/components/model-seckill/index.vue +++ b/src/components/model-seckill/index.vue @@ -8,7 +8,7 @@ {{ form.topic_text }}
|
-
+
距离结束
@@ -24,6 +24,9 @@
+
+ 活动已结束 +
{{ form.button_text }} @@ -181,14 +184,8 @@ onBeforeMount(async () => { const url = await online_url('/static/plugins/seckill/images/diy/').then(res => res); new_url.value = url + 'time.png'; }) - const form = computed(() => props.value?.content || {}); const new_style = computed(() => props.value?.style || {}); -const time_config = [ - { key: 'hour', value: 12 }, - { key: 'minute', value: 30 }, - { key: 'second', value: 52 }, -] const time_bg = computed(() => { const { countdown_bg_color_list, countdown_direction } = new_style.value; // 渐变 @@ -275,12 +272,43 @@ const default_list = { ], }; const list = ref([]); +const time_config = reactive([ + { key: 'hour', value: '12' }, + { key: 'minute', value: '30' }, + { key: 'second', value: '52' }, +]); +const endTime = ref('2024-09-07 12:30:52'); +const intervalId = ref(undefined); +const updateCountdown = () => { + const now = new Date(); + const distance = new Date(endTime.value).getTime() - now.getTime(); + // 如果倒计时结束,显示结束信息 + if (distance < 0) { + clearInterval(intervalId.value); + return; + } + // 计算时间 + const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); + const seconds = Math.floor((distance % (1000 * 60)) / 1000); + time_config.forEach((item) => { + if (item.key == 'hour') { + item.value = hours < 10 ? '0' + hours : hours.toString(); + } else if (item.key == 'minute') { + item.value = minutes < 10 ? '0' + minutes : minutes.toString(); + } else if (item.key == 'second') { + item.value = seconds < 10 ? '0' + seconds : seconds.toString(); + } + }); +} +// 更新倒计时函数 onMounted(() => { SeckillAPI.getSeckillList({}).then((res: any) => { const data = res.data; - console.log(res.data); if (!isEmpty(data.current)) { list.value = data.current.goods; + endTime.value = data.current.time_end; + intervalId.value = setInterval(updateCountdown, 1000); } else { list.value = Array(4).fill(default_list); }