Initial commit: One Pipe System
完整的管理系统,包含账户管理、卡片管理、套餐管理、财务管理等功能模块。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
85
src/composables/useCeremony.ts
Normal file
85
src/composables/useCeremony.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
import { useTimeoutFn, useIntervalFn } from '@vueuse/core'
|
||||
import { useDateFormat } from '@vueuse/core'
|
||||
import { useSettingStore } from '@/store/modules/setting'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { computed } from 'vue'
|
||||
import { mittBus } from '@/utils/sys'
|
||||
import { festivalConfigList } from '@/config/festival'
|
||||
|
||||
// 节日庆祝相关配置
|
||||
export function useCeremony() {
|
||||
const settingStore = useSettingStore()
|
||||
const { holidayFireworksLoaded, isShowFireworks } = storeToRefs(settingStore)
|
||||
|
||||
// 烟花间隔引用,用于清理
|
||||
let fireworksInterval: { pause: () => void } | null = null
|
||||
|
||||
// 判断当前日期是否是节日
|
||||
const currentFestivalData = computed(() => {
|
||||
const currentDate = useDateFormat(new Date(), 'YYYY-MM-DD').value
|
||||
return festivalConfigList.find((item) => item.date === currentDate)
|
||||
})
|
||||
|
||||
// 节日庆祝相关配置
|
||||
const FESTIVAL_CONFIG = {
|
||||
INITIAL_DELAY: 300, // 初始延迟时间,单位毫秒
|
||||
FIREWORK_INTERVAL: 1000, // 烟花效果触发间隔,单位毫秒
|
||||
TEXT_DELAY: 2000, // 文本显示延迟时间,单位毫秒
|
||||
MAX_TRIGGERS: 6 // 最大触发次数
|
||||
} as const
|
||||
|
||||
// 根据节日列表显示节日祝福
|
||||
const openFestival = () => {
|
||||
// 没有节日数据,不显示
|
||||
if (!currentFestivalData.value) return
|
||||
// 礼花效果结束,不显示
|
||||
if (!isShowFireworks.value) return
|
||||
|
||||
let triggers = 0
|
||||
|
||||
const { start: startFireworks } = useTimeoutFn(() => {
|
||||
const { pause } = useIntervalFn(() => {
|
||||
// console.log(currentFestivalData.value?.image)
|
||||
mittBus.emit('triggerFireworks', currentFestivalData.value?.image)
|
||||
triggers++
|
||||
|
||||
if (triggers >= FESTIVAL_CONFIG.MAX_TRIGGERS) {
|
||||
pause()
|
||||
settingStore.setholidayFireworksLoaded(true)
|
||||
|
||||
// 主页显示节日文本
|
||||
useTimeoutFn(() => {
|
||||
settingStore.setShowFestivalText(true)
|
||||
setFestivalDate()
|
||||
}, FESTIVAL_CONFIG.TEXT_DELAY)
|
||||
}
|
||||
}, FESTIVAL_CONFIG.FIREWORK_INTERVAL)
|
||||
|
||||
fireworksInterval = { pause }
|
||||
}, FESTIVAL_CONFIG.INITIAL_DELAY)
|
||||
|
||||
startFireworks()
|
||||
}
|
||||
|
||||
// 清理函数
|
||||
const cleanup = () => {
|
||||
if (fireworksInterval) {
|
||||
fireworksInterval.pause()
|
||||
settingStore.setShowFestivalText(false)
|
||||
setFestivalDate()
|
||||
}
|
||||
}
|
||||
|
||||
// 设置节日日期
|
||||
const setFestivalDate = () => {
|
||||
settingStore.setFestivalDate(currentFestivalData.value?.date || '')
|
||||
}
|
||||
|
||||
return {
|
||||
openFestival,
|
||||
cleanup,
|
||||
holidayFireworksLoaded,
|
||||
currentFestivalData,
|
||||
isShowFireworks
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user