/** * 倒计时工具模块 * 负责倒计时的格式化和启动逻辑 */ /** * 格式化倒计时显示(秒数转为 MM:SS 格式) * @param {Number} seconds - 剩余秒数 * @returns {String} 格式化后的时间字符串 */ export function formatTimer(seconds) { if (seconds <= 0) return '00:00'; const mins = Math.floor(seconds / 60); const secs = seconds % 60; // 兼容 padStart(微信小程序可能不支持) const formatNumber = (num) => { return num < 10 ? '0' + num : String(num); }; return formatNumber(mins) + ':' + formatNumber(secs); } /** * 启动倒计时 * @param {Object} context - 页面上下文 * @param {Function} onComplete - 倒计时结束回调 * @returns {Number} 定时器ID */ export function startTimer(context, onComplete) { if (context.timerInterval) { clearInterval(context.timerInterval); } // 立即更新一次显示 context.setData({ timerText: formatTimer(context.data.remainingTime) }); context.timerInterval = setInterval(() => { const remainingTime = context.data.remainingTime - 1; if (remainingTime <= 0) { // 时间到 if (context.timerInterval) { clearInterval(context.timerInterval); context.timerInterval = null; } if (onComplete) { onComplete(); } return; } context.setData({ remainingTime, timerText: formatTimer(remainingTime) }); }, 1000); return context.timerInterval; } /** * 停止倒计时 * @param {Object} context - 页面上下文 */ export function stopTimer(context) { if (context.timerInterval) { clearInterval(context.timerInterval); context.timerInterval = null; } }