TUI

0.3.7
CutDown 倒计时
支持格式化、精度控制、毫秒展示、暂停重启等功能
基础用法
默认天、小时、分、秒
示例代码
vue
<template>
  <TsCountDown :etime="2 * 60 * 1000" />
  <TsCountDown :etime="2 * 60 * 1000" :millisecond="2" />
  <TsCountDown :etime="2 * 60 * 1000" unit="zh" />
  <TsCountDown :etime="2 * 60 * 1000" unit="zh" :millisecond="2" />
  <TsCountDown :etime="2 * 60 * 1000" format="HH:mm:ss" />
  <TsCountDown :etime="2 * 60 * 1000" format="DD:HH:mm:ss:SSS" :padZero="true" />
</template>
进阶用法
展示自动开始、精度、单位、补零等
示例代码
vue
<template>
  <TsCountDown :etime="5000" :autoStart="false" :padZero="true" :millisecond="2"/>
  <TsCountDown :etime="10000" :millisecond="1" format="ss:SSS" />
  <TsCountDown :etime="86400000" :precision="'hours'" />
  <TsCountDown :etime="86400000" unit="zh" />
  <TsCountDown :etime="10000" :padZero="true" format="HH:mm:ss" />
</template>
事件监听
监听 change 和 end 事件
示例代码
vue
<template>
  <TsCountDown :etime="10000" @change="handleChange" @end="handleEnd" />
</template>

<script setup lang="ts">
  const play = ref(false);
  const handleEnd = ()=>{
    console.log('[end] 倒计时已结束');
  }
</script>
方法调用
使用 ref 控制组件暂停、恢复、重置
示例代码
vue
<template>
  <TsCountDown ref="cutRef" :etime="15000" :millisecond="2"/>
  <div style="margin-top: 16px; display: flex; column-gap: 8px">
    <TsButton size="small" @click="cutRef?.start()">开始</TsButton>
    <TsButton size="small" @click="cutRef?.pause()">暂停</TsButton>
    <TsButton size="small" @click="cutRef?.resume()">继续</TsButton>
    <TsButton size="small" @click="cutRef?.reset()">重置</TsButton>
  </div>
</template>
插槽用法
通过 slot 自定义展示结构,支持绑定 timeData 数据, 你可以自定义展示结构
:
:
:
:
示例代码
vue
<template>
  <TsCountDown :etime="2 * 60 * 1000" :padZero="true" :millisecond="2">
    <template #default="{ timeData }">
      <div style="display: flex; column-gap: 3px">
        <div style="padding: 0 5px; border-radius: 5px; background-color: #0d8ef7; color: #fff; font-size: 12px">{{ timeData.days }}</div>
        <div>:</div>
        <div style="padding: 0 5px; border-radius: 5px; background-color: #0d8ef7; color: #fff; font-size: 12px">{{ timeData.hours }}</div>
        <div>:</div>
        <div style="padding: 0 5px; border-radius: 5px; background-color: #0d8ef7; color: #fff; font-size: 12px">{{ timeData.minutes }}</div>
        <div>:</div>
        <div style="padding: 0 5px; border-radius: 5px; background-color: #0d8ef7; color: #fff; font-size: 12px">{{ timeData.seconds }}</div>
        <div>:</div>
        <div style="padding: 0 5px; border-radius: 5px; background-color: #0d8ef7; color: #fff; font-size: 12px">{{ timeData.milliseconds }}</div>
      </div>
    </template>
  </TsCountDown>
</template>
属性 Props
属性名
说明
类型
可选值
默认值
etime
绑定值(毫秒)
Number
-
-
autoStart
是否自动开始
Boolean
-
true
precision
显示时间精度
String
days / hours / minutes / seconds
day
millisecond
是否显示毫秒
Boolean | Number
false / 1 / 2 / 3
false
format
格式化字符串
String
-
-
unit
单位分隔符
String
: / zh
:
padZero
是否补零
Boolean
true / false
false
事件 Events
事件名
说明
类型
change
值变化时触发,频率较高,谨慎调用
剩余时间(毫秒)
end
倒计时结束时触发
null
方法 Functions
方法名
说明
参数
返回值
start
开始倒计时, autoStart为false时可用, 仅在初始化或者重置后可调用
-
-
pause
暂停倒计时
-
-
resume
继续倒计时
-
-
reset
重置倒计时, 重置后autoStart为false 可开始倒计时
-
-
插槽 Slots
插槽名
说明
default
自定义的插槽, 返回剩余时间对象,格式为TimeObjectResult<number | string>, 会根据padZero返回number | string
TimeObjectResult Props
属性名
说明
类型
可选值
默认值
total
总毫秒数
number | string
-
days
天数
number | string
-
hours
小时数
number | string
-
minutes
分钟数
number | string
-
seconds
秒数
number | string
-
milliseconds
毫秒数
number | string
-