计时器intervalId和进度条el-progress

<template>
  <H3>计时器intervalId和进度条el-progress</H3>
  <div class="demo-progress">
    <el-progress :percentage="percentage" />
  </div>
</template>

<script lang="ts" setup>
import { onMounted, ref } from "vue";
let percentage = ref(0);
function jishufu() {
  // 设置一个计时器,每隔1秒执行一次
  const intervalId = setInterval(function () {
    percentage.value++;
    // 如果倒计时结束,则清除计时器
    if (percentage.value >= 100) {
      clearInterval(intervalId);
    }
  }, 1000);
}
onMounted(() => {
  jishufu();
});
</script>

<style scoped>
.demo-progress .el-progress--line {
  margin-bottom: 15px;
  max-width: 600px;
}
</style>

`el-table` 是 Element UI 中的一个表格组件,它主要用于展示数据。如果你想在表格中实现倒计时功能,通常会涉及到动态更新表格中的某个单元格内容,显示剩余时间或计数。 以下是一个简单的例子,假设你有一个任务列表,每个任务都有一个预计完成时间,你可以创建一个定时器,每当任务过期时,就更新对应的表格行中的倒计时: ```html <template> <el-table :data="tasks" style="width: 100%"> <el-table-column prop="name" label="任务名称"></el-table-column> <el-table-column prop="dueDate" label="预计完成时间"></el-table-column> <el-table-column prop="remainingTime" label="剩余时间"> <template slot-scope="scope"> <span v-if="scope.row.taskInProgress">计时中...</span> <span v-else>{{ scope.row.remainingTimeText }}</span> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tasks: [ { name: '任务1', dueDate: '2023-12-31', taskInProgress: true, remainingTime: 3600 }, { name: '任务2', dueDate: '2023-11-30' }, // 更多任务... ], }; }, methods: { countdown(task) { const intervalId = setInterval(() => { if (task.taskInProgress && task.dueDate > new Date()) { const timeDiff = Math.ceil((new Date(task.dueDate) - new Date()) / 1000); task.remainingTimeText = formatTime(timeDiff); if (timeDiff <= 0) { clearInterval(intervalId); task.taskInProgress = false; // 在这里处理任务过期逻辑 } } }, 1000); }, }, mounted() { this.tasks.forEach(task => { if (task.taskInProgress) { this.countdown(task); } }); }, watch: { tasks(newTasks, oldTasks) { newTasks.forEach(task => { if (task.taskInProgress && !oldTasks.find(oldTask => oldTask.id === task.id)) { this.countdown(task); } else if (!task.taskInProgress && oldTasks.find(oldTask => oldTask.id === task.id)) { clearInterval(this.tasks.find(t => t.id === task.id).intervalId); } }); }, }, }; // 这里假设有一个 formatTime 函数用于将秒转换为易读的时间格式 function formatTime(seconds) { // ... } </script> ``` 在这个示例中,我们使用了 `v-if` 和 `v-else` 来根据任务是否正在进行倒计时显示不同内容。`mounted` 生命周期钩子启动倒计时,`watch` 钩子负责在任务状态改变时调整计时行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小云儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值