vue-element-table表格实现每一条数据绑定定时器实现倒计时或者持续时间

前言

  • 最近在开发中遇到一个需求,每一条数据前端计算处理时间,或者是倒计时时间。

  • 第一表格不可能展示所有数据,所以我们需要当前时间和数据库开始时间获取一个初始值。

  • 第二我们需要把定时器持续时间绑给每一条数据中,方便展示,和操作时候传递给后端存储。

  • 这样一来就解决这个需求,并且不管展示多少数据都不会出错,而且用户体验感较好.

代码实现-可以直接赋值看案例

<template>
  <div class="app-container">
    <el-table :data="tableData" v-loading="loading" border style="width: 100%">
      <el-table-column prop="a" label="视频类别" align="center" />
      <el-table-column prop="b" label="开始时间" align="center" />
      <el-table-column prop="c" label="持续时间" align="center">
        <template v-slot="{ row }">{
  { timeFormatdispose(row.c) }}</template>
      </el-table-column>
      <el-table-column prop="d" label="更新时间" align="center" />
​
      <el-table-column fixed="right" label="操作" width="150" align="center">
        <template v-slot="{ row }">
          <el-button @click="dispose(row)" type="text" size="small"
            >处 理</el-button
          >
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
​
<script>
export default {
  name: 'ContinueTime',
  data () {
    return {
      // 加载动画
      loading: false,
      // 表格数据
      tableData: []
    }
  },
  created () {
    // 获取数据
    this.getdata()
  },
  methods: {
    // 查询数据
    getdata () {
      // 模拟调用数据
      this.loading = true
      setTimeout(() => {
        this.tableData = [
          {
            a: '教育',
            b: '2024-1-18 00:00:00',
            c: '',
            d: '接口后端回显'
          },
          {
            a: '搞笑',
            b: '2023-12-25 12:00:00',
            c: '',
            d: '接口后端回显'
          },
          {
            a: '爱国',
            b: '1949-10-01 08:00:00',
            c: '',
            d: '接口后端回显'
          },
          {
            a: '军事',
            b: '2024-01-01 23:59:59',
            c: '',
            d: '接口后端回显'
          }
        ]
        // 给每一个数据绑定一个定时器
        // 报错-forEach-是因为表格数组键名不一样
        this.tableData.forEach(el => {
          //调用定时器-传入每一条数据
          this.continueTime(el)
        })
      }, 1500)
      this.loading = false
    },
    // 持续时间计算
    continueTime (row) {
      // 用当前时间-开始时间 获取一个时间初始值 转换成时间戳方便计算
      // row.b-是数据库每一条数据开始时间
      let calltime = new Date().getTime() - new Date(row.b).getTime()
      // row.c-是持续时间的键值
      row.c = calltime
      row.countDown = setInterval(() => {
        // 1000-一秒
        // 持续时间就是 + 1000
        // 倒计时就是 - 1000 (需要处理倒计时到了时候处理)
        // 并且把值绑到每一条数据中,方便取值调用接口
        row.c = row.c + 1000
      }, 1000)
    },
    // 时间替换方法
    timeFormatdispose (Time) {
      // console.log('Time', Time)
      if (Time) {
        let days = this.addZero(Math.floor(Time / 1000 / 60 / 60 / 24)) //天
        let hours = this.addZero(Math.floor((Time / 1000 / 60 / 60) % 24)) //时
        let minutes = this.addZero(Math.floor((Time / 1000 / 60) % 60)) //分
        let seconds = this.addZero(Math.floor((Time / 1000) % 60)) //秒
        return `${days}天${hours}小时${minutes}分钟${seconds}秒`
      }
    },
    // 处理
    dispose (row) {
      console.log('持续时间',row.c);
      // 调用接口-把数据传递给后端
    }
  }
}
</script>
​
<style lang="scss" scoped></style>

总结:

经过这一趟流程下来相信你也对 vue-element-table表格实现每一条数据绑定定时器实现倒计时或者持续时间 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

有什么不足的地方请大家指出谢谢 -- 風过无痕

相关推荐

  1. vue实例数据

    2024-01-20 09:50:01       14 阅读
  2. vue2 双向数据实现及原理

    2024-01-20 09:50:01       12 阅读
  3. Vue中双向数据是如何实现

    2024-01-20 09:50:01       10 阅读
  4. VUE +element ui 表格实现数据轮播滚动效果

    2024-01-20 09:50:01       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-20 09:50:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-20 09:50:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-20 09:50:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-20 09:50:01       20 阅读

热门阅读

  1. 如何用pandas处理财报数据删除金融行业数据

    2024-01-20 09:50:01       32 阅读
  2. 文献计量学开篇

    2024-01-20 09:50:01       29 阅读
  3. 【开发掉坑】go 中 interface 的 nil 判断

    2024-01-20 09:50:01       32 阅读
  4. 【Go】A和*A在作为Receiver和接口实现上的差别

    2024-01-20 09:50:01       37 阅读