element ui 实现列绑定按照指定时间显示倒计时

table

intervalTime 是我设置的一个名为变量时间的属性

<el-table-column label="剩余逾期时间" align="center" prop="intervalTime">
     <template slot-scope="scope">
       <span style="color: red"> <i class="el-icon-time"></i>{{scope.row.intervalTime}}</span>
     </template>
</el-table-column>

Vue

//获取数据,在获取数据的时候调用绑定列计时
getList() {
      this.loading = true;
      listCirculation(this.queryParams).then(response => {
        this.circulationList = response.rows;
        this.total = response.total;
        this.loading = false;
        if(this.circulationList.length > 0){
          this.circulationList.forEach((el)=>{
            this.countDown(el)
          })
        }
      });
   },
    /** 倒计时*/
    countDown(row) {
    // acceptanceOverTime 是我后台返回的截止时间
      if(row.status == 1){
        let thi = this;
        setInterval((thi) => {
          row.intervalTime =  thi.formatDuring(new Date(row.acceptanceOverTime) - new Date());
        }, 10000); //这边采取的是10秒调用一次
        //这里采用简单写法,直接在查询的时候调用一次,不用等定时器调用
        row.intervalTime = this.formatDuring(new Date(row.acceptanceOverTime) - new Date());
      }
    },
    formatDuring (mss) {
      if(mss > 0){
        let hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)) // 得到小时
        let minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60)) // 得到分钟数
        //获取分钟
        let str1 = minutes < 10 ? ('0' + minutes) : minutes
        
        /*得到秒数
        let seconds = (mss % (1000 * 60)) / 1000
        let str2 = seconds < 10 ? ('0' + seconds) : seconds*/
        return hours + '小时' + str1 + '分钟';
      }else{
        return '已逾期';
      }
    },
`el-statistic` 是 Element UI 组件库中的一个统计类组件,它常用于展示统计数值和相关功能。如果你想要在 `el-statistic` 组件中使用倒计时功能并结合 formatter 进行格式化显示,你可以通过以下步骤实现: 1. 使用 `el-statistic` 组件,并设置其 `value` 属性为当前时间加上你需要倒计时的时间长度。 2. 利用 `formatter` 属性来自定义显示格式。`formatter` 函数接收的参数为当前的数值(即 `value`),你可以在这个函数中计算当前时间与目标时间的差值,并将这个差值转换为小时、分钟和秒的形式,再返回格式化后的字符串。 下面是一个简单的例子,假设我们需要显示距离一个特定时间点(比如2023年12月31日)的倒计时: ```javascript <template> <el-statistic :value="countdownValue" formatter="剩余时间:{{ hours }}小时{{ minutes }}分钟{{ seconds }}秒"></el-statistic> </template> <script> export default { data() { return { // 假设目标时间是2023年12月31日 targetDate: new Date('2023-12-31T00:00:00'), }; }, computed: { countdownValue() { // 计算当前时间和目标时间的差值 const now = new Date(); const diff = this.targetDate.getTime() - now.getTime(); return diff; // 这个值将会被传递给 formatter }, // 将倒计时的毫秒数转换为小时、分钟和秒 hours() { return Math.floor(this.countdownValue / 3600000); }, minutes() { return Math.floor((this.countdownValue % 3600000) / 60000); }, seconds() { return Math.floor((this.countdownValue % 60000) / 1000); } } } </script> ``` 在这个例子中,`countdownValue` 计算出了当前时间与目标时间的差值,而 `hours`、`minutes` 和 `seconds` 计算了具体的时间差的组成部分。`formatter` 则是利用这些计算出的时间单位来格式化显示内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值