countdown.uvue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <cl-page>
  3. <view class="p-3">
  4. <demo-item :label="t('基础用法')">
  5. <cl-countdown :datetime="datetime"></cl-countdown>
  6. </demo-item>
  7. <demo-item :label="t('隐藏为 00 的值')">
  8. <cl-countdown :minute="60" hide-zero></cl-countdown>
  9. </demo-item>
  10. <demo-item :label="t('指定天数')">
  11. <cl-countdown :day="2" format="{d}天{h}:{m}:{s}"></cl-countdown>
  12. </demo-item>
  13. <demo-item :label="t('自定义模板')">
  14. <cl-countdown :day="1" format="{d}天{h}时{m}分{s}秒"></cl-countdown>
  15. </demo-item>
  16. <demo-item :label="t('指定小时')">
  17. <cl-countdown :hour="2"></cl-countdown>
  18. </demo-item>
  19. <demo-item :label="t('指定分钟')">
  20. <cl-countdown :minute="2"></cl-countdown>
  21. </demo-item>
  22. <demo-item :label="t('指定秒')">
  23. <cl-countdown :second="10"></cl-countdown>
  24. </demo-item>
  25. <demo-item :label="t('完成后提示')">
  26. <cl-countdown :second="5" @done="onDone"></cl-countdown>
  27. </demo-item>
  28. <demo-item :label="t('3秒后开始倒计时')">
  29. <cl-countdown ref="countdownRef" :second="5" :auto="false"></cl-countdown>
  30. </demo-item>
  31. <demo-item :label="t('自定义样式')">
  32. <cl-countdown
  33. :hour="10"
  34. :pt="{
  35. text: {
  36. className: parseClass([
  37. 'px-2 py-1 rounded-md',
  38. [isDark, 'bg-surface-700', 'bg-surface-100']
  39. ])
  40. },
  41. splitor: {
  42. className: 'px-2'
  43. }
  44. }"
  45. ></cl-countdown>
  46. </demo-item>
  47. </view>
  48. </cl-page>
  49. </template>
  50. <script lang="ts" setup>
  51. import DemoItem from "../components/item.uvue";
  52. import { onMounted, onUnmounted, ref } from "vue";
  53. import { dayUts, isDark, parseClass, t } from "@/.cool";
  54. import { useUi } from "@/uni_modules/cool-ui";
  55. const ui = useUi();
  56. const datetime = ref(dayUts().add(1, "minute").toDate());
  57. function onDone() {
  58. ui.showToast({
  59. message: "倒计时完成"
  60. });
  61. }
  62. const countdownRef = ref<ClCountdownComponentPublicInstance | null>(null);
  63. let timer: number = 0;
  64. onMounted(() => {
  65. // @ts-ignore
  66. timer = setTimeout(() => {
  67. if (countdownRef.value != null) {
  68. countdownRef.value.next();
  69. }
  70. }, 3000);
  71. });
  72. onUnmounted(() => {
  73. clearTimeout(timer);
  74. });
  75. </script>