Uniapp实现多个订单批量待付款倒计时
思路
当客户不付款生成一个待付款的订单这个待付款的订单需要获取它30分钟后的时间然后保存到数据库
然后前台将当前时间减去从数据库拿到的时间进行倒计时
注意 必须要24小时制的时间
首先准备一个times.js
/*** 订单未付款 倒计时 * @param {*} time 结束时间*/
function countDownFun(time) {let startTime = new Date().getTime();console.log("startTime:"+startTime)// let startTime = new Date(); //当前时间let end = new Date(time).getTime(); //结束时间console.log("end:"+end)// console.log(end)let result = parseInt((end - startTime) / 1000); //计算出豪秒let d = parseInt(result / (24 * 60 * 60)); //用总共的秒数除以1天的秒数let h = parseInt((result / (60 * 60)) % 24); //精确小时,用去余let m = parseInt((result / 60) % 60); //剩余分钟就是用1小时等于60分钟进行趣余let s = parseInt(result % 60);//统一格式的显示d < 10 ? d = '0' + d : d;h < 10 ? h = '0' + h : h;m < 10 ? m = '0' + m : m;s < 10 ? s = '0' + s : s;//当倒计时结束时,改变内容if (result <= 0) {return "订单超时";}if (d == '00') {return h + "时" + m + "分" + s + "秒";;}if (d == '00' && h == '00') {return m + "分" + s + "秒";;}if (d == '00' && h == '00' && m == '00') {return s + "秒";;}return d + "天" + h + "时" + m + "分" + s + "秒";
}module.exports = {countDownFun}
方法(超时就重新获取一遍订单 times==你从后台获取的订单数据) toBePaid: []
timer(times) {let that = this;this.myInterv = setInterval(() => {//reserveNotimes.forEach((item, index) => {if (item.currentTime == '订单超时') {let url = "localhost:9977/reserve/UpdatePaYstate"uni.request({url: url,method: "post",header: {'content-type': 'application/x-www-form-urlencoded'},data: {reserveNo: item.reserveNo,},suess: (res) => {//再查询一遍数据that.getToBePaid(that.optionsid)}})} else { //关键点 item.expiretime==你每次生成一个待付款的订单要把当前时间存储进数据库的时间//必须要是24小时制不然会有问题item.expiretime;that.$set(item, 'currentTime', countDownFun(item.expiretime));}});}, 1000);},
后端
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd :HH:mm:ss");long currentTime = System.currentTimeMillis();currentTime += 30 * 60 * 1000;Date dates = new Date(currentTime);String format = dateFormat.format(dates);
更多推荐
多个,批量,倒计时,订单,Uniapp
发布评论