countdown.uvue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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 { t } from "@/locale";
  52. import DemoItem from "../components/item.uvue";
  53. import { onMounted, ref } from "vue";
  54. import { dayUts, isDark, parseClass } from "@/cool";
  55. import { useUi } from "@/uni_modules/cool-ui";
  56. const ui = useUi();
  57. const datetime = ref(dayUts().add(1, "minute").toDate());
  58. function onDone() {
  59. ui.showToast({
  60. message: "倒计时完成"
  61. });
  62. }
  63. const countdownRef = ref<ClCountdownComponentPublicInstance | null>(null);
  64. onMounted(() => {
  65. setTimeout(() => {
  66. countdownRef.value!.next();
  67. }, 3000);
  68. });
  69. </script>