vue计时器

server/2024/12/19 17:31:31/

实现一个倒计时功能用于下单后的计时

代码

倒计时组件

javascript">import { ref, onUnmounted } from 'vue'
import { computed } from 'vue'
import dayjs from 'dayjs'export const useCountDown = () => {// 响应式数据let timer = nullconst time = ref(0)// 格式化为时分秒const formatTime = computed(() => dayjs.unix(time.value).format('HH:mm:ss'))// 开启倒计时函数const start = (currentTime) => {time.value = currentTimetimer = setInterval(() => {time.value -= 1}, 1000)}// 组件销毁时清除清时期onUnmounted(() => {timer && clearInterval(time)})return {formatTime, start}
}

前段组件

<script setup>javascript">import { getOrderAPI } from '@/apis/pay'import { onMounted, ref } from 'vue'import { useRoute } from 'vue-router'import { useCountDown } from '@/composables/useCountDown'const { formatTime, start } = useCountDown()// start(60)// 获取订单数据const route = useRoute()const payInfo = ref({})const getPayInfo = async () => {const res = await getOrderAPI(route.query.id)payInfo.value = res.result// 初始化倒计时秒数start(res.result.countdown)}onMounted(() => getPayInfo())// 跳转支付// 携带订单id以及回调地址跳转到支付地址(get)// 支付地址const baseURL = 'http://pcapi-xiaotuxian-front-devtest.itheima.net/'const backURL = 'http://127.0.0.1:5173/paycallback'const redirectUrl = encodeURIComponent(backURL)const payUrl = `${baseURL}pay/aliPay?orderId=${route.query.id}&redirect=${redirectUrl}`</script><template><!-- {{ formatTime }} --><div class="xtx-pay-page"><div class="container"><!-- 付款信息 --><div class="pay-info"><span class="icon iconfont icon-queren2"></span><div class="tip"><p>订单提交成功!请尽快完成支付。</p><p>支付还剩 <span>{{ formatTime }}</span>, 超时后将取消订单</p></div><div class="amount"><span>应付总额:</span><span>¥{{ payInfo.payMoney?.toFixed(2) }}</span></div></div><!-- 付款方式 --><div class="pay-type"><p class="head">选择以下支付方式付款</p><div class="item"><p>支付平台</p><a class="btn wx" href="javascript:;"></a><a class="btn alipay" :href="payUrl"></a></div><div class="item"><p>支付方式</p><a class="btn" href="javascript:;">招商银行</a><a class="btn" href="javascript:;">工商银行</a><a class="btn" href="javascript:;">建设银行</a><a class="btn" href="javascript:;">农业银行</a><a class="btn" href="javascript:;">交通银行</a></div></div></div></div>
</template><style scoped lang="scss">
.xtx-pay-page {margin-top: 20px;
}.pay-info {background: #fff;display: flex;align-items: center;height: 240px;padding: 0 80px;.icon {font-size: 80px;color: #1dc779;}.tip {padding-left: 10px;flex: 1;p {&:first-child {font-size: 20px;margin-bottom: 5px;}&:last-child {color: #999;font-size: 16px;}}}.amount {span {&:first-child {font-size: 16px;color: #999;}&:last-child {color: $priceColor;font-size: 20px;}}}
}.pay-type {margin-top: 20px;background-color: #fff;padding-bottom: 70px;p {line-height: 70px;height: 70px;padding-left: 30px;font-size: 16px;&.head {border-bottom: 1px solid #f5f5f5;}}.btn {width: 150px;height: 50px;border: 1px solid #e4e4e4;text-align: center;line-height: 48px;margin-left: 30px;color: #666666;display: inline-block;&.active,&:hover {border-color: $xtxColor;}&.alipay {background: url(https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/7b6b02396368c9314528c0bbd85a2e06.png) no-repeat center / contain;}&.wx {background: url(https://cdn.cnbj1.fds.api.mi-img.com/mi-mall/c66f98cff8649bd5ba722c2e8067c6ca.jpg) no-repeat center / contain;}}
}
</style>

实现效果

在这里插入图片描述


http://www.ppmy.cn/server/151494.html

相关文章

Go 错误处理

Go 错误处理 Go 语言在设计时考虑了错误处理的重要性&#xff0c;提供了一套简洁而强大的错误处理机制。本文将深入探讨 Go 中的错误处理方式&#xff0c;包括错误类型的定义、错误处理的基本模式、以及最佳实践。 错误类型定义 在 Go 中&#xff0c;错误是一个接口&#xf…

C#多线程

C#中的多线程编程是开发高效并发应用程序的关键技术之一&#xff0c;它允许程序同时执行多个任务&#xff0c;从而提升应用程序的响应速度和性能。为了更好地理解C#中的多线程使用和定义&#xff0c;我们可以从以下几个方面来探讨&#xff1a;线程的基本概念、创建线程的方法、…

之前使用vue-element-admin框架开发的项目无法启动,可能是这个原因

最近运行之前的项目&#xff0c;发现无法正常启动&#xff0c;可能有以下几种情况&#xff1a; 一、版本问题 报错&#xff1a; this[kHandle] new _Hash(algorithm, xofLen); Error: error:0308010C:digital 因为在 node V17 版本发布了 OpenSSL3.0 对算法…

单例模式的简单应用

单例模式主要是为了确保只有单个对象被创建&#xff0c;主要解决一个类的对象频繁地创建与销毁 我们通过如下示例来了解单例模式的作用&#xff0c;以及实现方案 如上图&#xff0c;我们只要点击一次"普通模式"的菜单&#xff0c;即会创建一个新的窗体对象。 而我们…

C++ 的衰退复制(decay-copy)

目录 1.什么是衰退复制&#xff08;decay-copy&#xff09; 1.1.推导规则 1.2.LWG issue 929 1.3.想象中的 decay_copy 2.decay-copy 与 auto 2.1.为什么引入衰退复制 2.2. 成为 C 23 的语言特性 3.应用场景 4.总结 1.什么是衰退复制&#xff08;decay-copy&#xff0…

如何理解OSI七层模型?从是什么、如何划分、传输过程是什么?

目录 OSI七层模型概述 1.1 什么是OSI七层模型1.2 OSI七层模型的七个层级1.3 OSI七层模型的作用OSI七层模型的具体划分 2.1 应用层(Application Layer)2.2 表示层(Presentation Layer)2.3 会话层(Session Layer)2.4 传输层(Transport Layer)2.5 网络层(Network Layer)…

【操作系统】每日 3 题(七十一)

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4e3;专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12820365.html &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享操作系统面试中常见的面试题给大家~ ❤️…

Web_谷歌安装hackbar

要求:能科学上网 插件商城下载 然后f12就看到了 或者直接访问下载 https://chromewebstore.google.com/detail/hackbar/ginpbkfigcoaokgflihfhhmglmbchinc