基于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倒计时内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • axios的拦截请求与响应方法

    axios的拦截请求与响应方法

    今天小编就为大家分享一篇axios的拦截请求与响应方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Vue 入口与 initGlobalAPI实例剖析

    Vue 入口与 initGlobalAPI实例剖析

    这篇文章主要为大家介绍了Vue 入口与 initGlobalAPI实例剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • vue自定义全局共用函数详解

    vue自定义全局共用函数详解

    今天小编就为大家分享一篇vue自定义全局共用函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue 动态添加路由及生成菜单的方法示例

    Vue 动态添加路由及生成菜单的方法示例

    这篇文章主要介绍了Vue 动态添加路由及生成菜单的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Vue如何实现利用vuex永久储存数据

    Vue如何实现利用vuex永久储存数据

    这篇文章主要介绍了Vue如何实现利用vuex永久储存数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vue组件(全局,局部,动态加载组件)

    vue组件(全局,局部,动态加载组件)

    组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。这篇文章主要介绍了vue组件(全局,局部,动态加载组件),需要的朋友可以参考下
    2018-09-09
  • vue实现三级联动动态菜单

    vue实现三级联动动态菜单

    这篇文章主要为大家详细介绍了vue实现三级联动动态菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • vue如何动态配置ip与端口

    vue如何动态配置ip与端口

    这篇文章主要介绍了vue如何动态配置ip与端口,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue loadmore 组件滑动加载更多源码解析

    vue loadmore 组件滑动加载更多源码解析

    这篇文章主要介绍了vue loadmore 组件滑动加载更多源码解析,需要的朋友可以参考下
    2017-07-07
  • Vue子组件监听父组件值的变化

    Vue子组件监听父组件值的变化

    这篇文章主要介绍了Vue子组件监听父组件值的变化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论