下面给你一个可直接运行的 Vue3 版“牛马时钟(工时倒计时 + 趣味文案)”,然后告诉你如何无缝集成到微信小程序(mpvue / uni-app / taro / 原生自定义组件套壳)。
你可以直接复制使用。
🎯 功能说明:牛马时钟(Vue3 版本)
- 显示当前时间
- 显示“上班还剩多久/下班倒计时”
- 动态随机“牛马语录”
- 支持小程序端运行
🚀 一、Vue3 完整版本(可直接跑)
1)CowHorseClock.vue
<template>
<div class="clock-wrapper">
<h2 class="title">🐮🐴 牛马时钟</h2>
<div class="time">{{ currentTime }}</div>
<div class="status">
<p v-if="isWorking">💼 距离下班还有:{{ timeToOff }}</p>
<p v-else>🎉 距离上班还有:{{ timeToWork }}</p>
</div>
<div class="quote">“{{ quote }}”</div>
</div>
</template>
<script setup>
import { ref, onMounted, onUnmounted } from "vue";
const currentTime = ref("");
const timeToOff = ref("");
const timeToWork = ref("");
const isWorking = ref(false);
const quotes = [
"上班这件事,只要不去,就不会发生。",
"打工人打工魂,打工都是人上人。",
"工资就像月经,一个月一次,一周就没。",
"下班,是打工人最后的倔强。",
"我不是在上班,就是在去上班的路上。",
];
const quote = ref(quotes[Math.floor(Math.random() * quotes.length)]);
function updateClock() {
const now = new Date();
currentTime.value = now.toLocaleTimeString();
const workStart = new Date(now);
workStart.setHours(9, 0, 0);
const workEnd = new Date(now);
workEnd.setHours(18, 0, 0);
if (now >= workStart && now < workEnd) {
isWorking.value = true;
timeToOff.value = formatTime(workEnd - now);
} else {
isWorking.value = false;
let nextWork = new Date(now);
if (now < workStart) {
nextWork = workStart;
} else {
nextWork.setDate(now.getDate() + 1);
nextWork.setHours(9, 0, 0);
}
timeToWork.value = formatTime(nextWork - now);
}
}
function formatTime(ms) {
let s = Math.floor(ms / 1000);
const h = Math.floor(s / 3600);
s %= 3600;
const m = Math.floor(s / 60);
s %= 60;
return `${h}小时 ${m}分 ${s}秒`;
}
let timer;
onMounted(() => {
updateClock();
timer = setInterval(updateClock, 1000);
});
onUnmounted(() => clearInterval(timer));
</script>
<style scoped>
.clock-wrapper {
text-align: center;
padding: 20px;
font-family: "Arial";
}
.title {
font-size: 26px;
margin-bottom: 20px;
}
.time {
font-size: 32px;
margin: 10px 0;
}
.status {
font-size: 20px;
margin: 15px 0;
}
.quote {
margin-top: 20px;
font-size: 18px;
color: #666;
font-style: italic;
}
</style>
🚀 二、如何集成到微信小程序?
你有 4 种选择,我给你最简单和最推荐的:
✅ 方案 1:使用 uni-app(推荐,0 改动)
Vue3 代码几乎 不用改,直接迁移:
1)HBuilderX 导入项目
把上述组件放进:
/components/CowHorseClock.vue
2)在页面中使用
<template>
<view>
<CowHorseClock />
</view>
</template>
<script setup>
import CowHorseClock from "@/components/CowHorseClock.vue";
</script>
3)点击运行 → “微信小程序”
uni-app 会自动转成小程序语法。
✔ Vue3
✔ Composition API
✔ 页面、样式全部兼容
这是最轻松的方式。
✅ 方案 2:使用 Taro(Vue3 模式)
同样几乎不用改。
安装:
taro init cowhorse-clock
选择 Vue3
把 CowHorseClock.vue 放到 src/components/
因为 taro 与小程序标签类似,但支持 Vue3,所以兼容。
⚠️ 原生微信小程序(不推荐直接上 Vue3)
微信小程序本身不支持 Vue,官方框架是 WXML。
如果你一定要原生小程序用它,必须借助 Kbone / WeChat Miniprogram WebView 这样:
原理:
- 你写 Vue3
- 打包成 H5
- 小程序用
<web-view>打开
但功能(分享、支付)受限。
🚀 三、你想要哪个增强版本?
我还可以帮你增加这些功能:
🧩 可扩展功能
- 动态牛马语录 API
- 上班日历(排班模式)
- 社畜指数(动画效果)
- 3D 翻转时钟版
- 背景随机切换(黑暗模式)
- 小程序版本的自定义组件
发表回复