基于uniapp+vue3 实现72小时倒计时功能

 更新时间:2025年05月06日 11:31:23   作者:洪洪呀  
数组项有一个下单时间 ,比如今天下单在72小时内可以继续支付,超过则默认取消订单,下面通过实例代码介绍uniapp+vue3 实现72小时倒计时功能,感兴趣的朋友一起看看吧

功能介绍 ,数组项有一个下单时间 ,比如今天下单在72小时内可以继续支付,超过则默认取消订单

页面按钮处 加上倒计时

<!-- 倒计时 -->
<text v-if="item.timeLeft > 0">{{ formatTime(item.remaining) }}</text>

逻辑处理

// 第一步 处理接口返回的数据 原本是没有倒计时 remaining这个值的 我们根据状态给数组项加上
const listData = ref([])
console.log("列表数据", res);
res.forEach((item) => {
	if (item.actions.pay) {
		const createTime = new Date(item.create_time).getTime(); // 下单时间处理
		item.endTime = createTime + 72 * 3600 * 1000; // 计算72小时截止时间
		item.remaining = 0; // 剩余时间(毫秒)
		item.timeLeft = true; // 倒计时状态
	}
})
updateAllTimers();
// 第二步 统一定时器
let timer;
// 第三步 更新所有倒计时 这里的listData是页面渲染的数组
const updateAllTimers = () => {
	const now = Date.now();
	listData.value.forEach(item => {
		const diff = item.endTime - now;
		item.remaining = diff;
		item.timeLeft = diff > 0;
	});
};
// 第四步 时间格式化函数
const formatTime = (milliseconds) => {
	if (milliseconds <= 0) return '00:00:00';
	const totalSeconds = Math.floor(milliseconds / 1000);
	const hours = Math.floor(totalSeconds / 3600).toString().padStart(2, '0');
	const minutes = Math.floor((totalSeconds % 3600) / 60).toString().padStart(2, '0');
	const seconds = (totalSeconds % 60).toString().padStart(2, '0');
	return `${hours}:${minutes}:${seconds}`;
};
// 生命周期管理
onMounted(() => {
	timer = setInterval(updateAllTimers, 1000);
});
// 卸载
onUnmounted(() => {
	clearInterval(timer);
});

到此这篇关于基于uniapp+vue3 实现72小时倒计时功能的文章就介绍到这了,更多相关vue倒计时内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解如何在Electron中存取本地文件

    详解如何在Electron中存取本地文件

    在Electron 中,存取本地文件,有很多种办法,本文介绍最常用的一种办法, 通过 Electron 框架提供的能力,和 Node.js 的 fs 文件管理模块实现本地文件的存取,需要的小伙伴可以参考下
    2023-11-11
  • vue3 + elementPlus reset重置表单问题

    vue3 + elementPlus reset重置表单问题

    这篇文章主要介绍了vue3 + elementPlus reset重置表单问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Vue3使用Echarts导致tooltip失效问题及解决方法

    Vue3使用Echarts导致tooltip失效问题及解决方法

    Vue3 使用 proxy 对象代理,而 echarts 则使用了大量的全等(===), 对比失败从而导致了bug,这篇文章主要介绍了Vue3使用Echarts导致tooltip失效问题及解决方法,需要的朋友可以参考下
    2023-08-08
  • 在vue中通过axios异步使用echarts的方法

    在vue中通过axios异步使用echarts的方法

    本篇文章主要介绍了在vue中通过axios异步使用echarts的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Vue插槽的作用

    Vue插槽的作用

    插槽(slot)是 vue 为组件的封装者提供的能力。允许开发者在封装组件时,把不确定的、希望由用户指定的部分定义为插槽。可以把插槽认为是组件封装期间,为用户预留的内容的占位符
    2022-09-09
  • Vue嵌套路由的各种用法详解

    Vue嵌套路由的各种用法详解

    在 Vue 中,嵌套路由和 Element Plus 的 Menu 组件是构建复杂单页面应用(SPA)时的常用组合,通过嵌套路由,可以实现多级页面结构,以下是结合 Vue 嵌套路由和 Element Plus Menu 的各种用法和场景的详细介绍,需要的朋友可以参考下
    2025-01-01
  • vue3.0 setup中使用vue-router问题

    vue3.0 setup中使用vue-router问题

    这篇文章主要介绍了vue3.0 setup中使用vue-router问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • VUE3学习教程之全局组件和局部组件

    VUE3学习教程之全局组件和局部组件

    组件(Component)是Vue.js最强大的功能之一,组件可以扩展 HTML 元素,封装可重用的代码,这篇文章主要给大家介绍了关于VUE3学习教程之全局组件和局部组件的相关资料,需要的朋友可以参考下
    2022-01-01
  • 如何使用el-table+el-tree+el-select动态选择对应值

    如何使用el-table+el-tree+el-select动态选择对应值

    小编在做需求时,遇到了在el-table表格中加入多条数据,并且每条数据要通过el-select来选取相应的值,做到动态选择,下面这篇文章主要给大家介绍了关于如何使用el-table+el-tree+el-select动态选择对应值的相关资料,需要的朋友可以参考下
    2023-01-01
  • 关于在vue中实现过渡动画的代码示例

    关于在vue中实现过渡动画的代码示例

    Vue是一款流行的前端框架,支持过渡动画的实现是其中的一项重要特性,在Vue中,使用过渡动画可以为用户提供更加友好的用户体验,下面我将为大家介绍一下子如何在Vue中实现过渡动画,需要的朋友可以参考下
    2023-06-06

最新评论