uniapp多订单30分钟倒计时


前言

商城项目中,往往会遇到多个订单30分钟倒计时的功能,如何实现(超级简单)…


一、准备?

uniapp项目
1.使用的是uView 框架自行安装https://www.uviewui.com/components/intro.html
2.找到对应组件
在这里插入图片描述

二、使用步骤

1.无脑粘贴(注意数据格式)

<template>
     <view class="page-main">
        
		<view class="" v-for="time in data">
				<u-count-down :time="time.timer" format="HH:mm:ss" @change="change" @finish="finish(time.id)"></u-count-down>
		</view>


     </view>
 </template>
 <script>
     export default {
         data() {
             return {
              	//模拟的后端接口请求过来的数据 注意查看uview官方文档uview中time绑定的是时间戳格式,请求接口的时候转换一下就行
				 data:[
					 {id:1,timer:'2023-08-10 10:28:15',timer2:null,cs:0},
					 {id:2,timer:'2023-08-10 10:16:00',timer2:null,cs:0},
					
				 ],
			
             }
         },
		 onLoad() {
			 this.staet()
		 },
         methods: {
			staet(){
			//处理接口中时间格式time为下单时间
			//new Date(i.timer).getTime()就是把下单时间转换成时间戳 
			//new Date(i.timer).getTime() + 10* 60 * 1000  就是把下单时间转换成时间戳 加上10分钟的时间
			//new Date().getTime() 当前时间时间戳
			//(new Date(i.timer).getTime() + 10* 60 * 1000) - (new Date().getTime());这样求出来就是倒计时
				const a= this.data.map(i=>{
					 const timestamp = (new Date(i.timer).getTime() + 10* 60 * 1000) - (new Date().getTime());
					  return {...i, timer: timestamp};
					  //改变原数组中time时间格式 变成时间戳的格式
				})
				this.data = a
				// console.log(a,"85")
			},
			//过程中,倒计时变化时触发
			 change(time){
				// console.log(time) 
			 },
			//订单倒计时为0执行的事件
			 finish(id){
				 console.log(id,”号订单到时间了“)
			 },
			 
          
         }
     }
 </script>


赞一个再走

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现订单30分钟倒计时的基本思路是: 1. 在订单创建时记录下订单的创建时间戳 2. 定义一个定时器,在每次进入订单详情页面时启动定时器,定时器每秒钟将当前时间戳与订单创建时间戳相减,得到剩余的秒数,然后将这个秒数转换为分钟和秒数的形式,显示在页面上 3. 当剩余时间为0时,停止定时器,并提示用户订单已超时 下面是一个简单的示例代码: ``` <template> <view> <text v-if="remainingTime > 0">{{ remainingMinutes }}:{{ remainingSeconds }}</text> <text v-else>订单已超时</text> </view> </template> <script> export default { data() { return { createTime: 0, // 订单创建时间戳 remainingTime: 0 // 剩余时间(秒) } }, mounted() { // 获取订单创建时间戳 this.createTime = new Date().getTime() // 启动定时器 this.timer = setInterval(() => { const currentTime = new Date().getTime() const diffTime = Math.floor((currentTime - this.createTime) / 1000) this.remainingTime = 1800 - diffTime // 30分钟 = 1800秒 if (this.remainingTime <= 0) { clearInterval(this.timer) // 停止定时器 } }, 1000) }, computed: { remainingMinutes() { return Math.floor(this.remainingTime / 60) }, remainingSeconds() { return this.remainingTime % 60 } }, beforeDestroy() { clearInterval(this.timer) // 组件销毁时停止定时器 } } </script> ``` 在以上示例代码中,我们在页面挂载时获取订单创建时间戳,并启动定时器。在每次定时器执行时,计算当前时间戳与订单创建时间戳之间的差值,然后将这个差值转换为剩余时间,并将剩余时间显示在页面上。当剩余时间为0时,停止定时器,提示用户订单已超时。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值