vue实现付款倒计时实例

vue yekong

在Vue中实现付款倒计时功能,你可以创建一个倒计时器并在组件的数据对象中维护剩余时间。以下是一个简单的付款倒计时组件实例:

<template>
  <div>
    <p>请在{{ minutes }}分{{ seconds }}秒内完成支付,否则订单将自动取消。</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      totalTime: 15 * 60, // 假设倒计时总时间为15分钟
      timer: null,
    };
  },
  computed: {
    // 计算剩余分钟
    minutes() {
      return Math.floor(this.totalTime / 60);
    },
    // 计算剩余秒数,并确保始终显示两位数字
    seconds() {
      const seconds = this.totalTime % 60;
      return seconds < 10 ? '0' + seconds : seconds;
    },
  },
  mounted() {
    this.startCountdown();
  },
  beforeDestroy() {
    this.clearCountdown();
  },
  methods: {
    startCountdown() {
      // 设置定时器每秒更新一次totalTime
      this.timer = setInterval(() => {
        if (this.totalTime > 0) {
          this.totalTime--;
        } else {
          this.clearCountdown();
          // 倒计时结束时的操作,例如通知订单取消
          this.orderTimeout();
        }
      }, 1000);
    },
    clearCountdown() {
      // 清除定时器
      clearInterval(this.timer);
      this.timer = null;
    },
    orderTimeout() {
      // 倒计时结束后执行的操作
      alert('支付时间已过,订单已自动取消。');
      // 这里可以添加其他逻辑,如跳转页面或关闭订单
    },
  },
};
</script>

在这个组件中,totalTime是以秒为单位的倒计时总时间。minutesseconds是计算属性,用于将剩余时间转换为分和秒的格式。startCountdown方法设置了一个定时器,每秒递减totalTime。如果totalTime达到0,则调用clearCountdown来清除定时器,并执行orderTimeout方法来处理订单超时的逻辑。

请注意,当组件销毁时(例如用户离开当前页面),beforeDestroy生命周期钩子会确保定时器被清除,避免内存泄漏。

喜欢