"use strict"; const common_vendor = require("../vendor.js"); common_vendor.dayjs.locale("zh-cn"); common_vendor.dayjs.extend(common_vendor.relativeTime); function ShowLastTime(time) { return time ? common_vendor.dayjs(time).fromNow() : "-"; } function getTimeStatus(endTime) { const now = common_vendor.dayjs(); const end = common_vendor.dayjs(endTime); if (end.isBefore(now)) { const hours = now.diff(end, "hour"); const minutes = now.diff(end, "minute") % 60; let label = "上门时间已超时"; if (hours > 0) { label += `${hours}个小时`; } if (minutes > 0) { label += `${minutes}分钟`; } return { label, status: "4", color: "#EA0000" }; } else { const diffHours = end.diff(now, "hour"); const diffMinutes = end.diff(now, "minute") % 60; let status; let color; if (diffHours >= 24) { status = "1"; color = "#24BC21"; } else if (diffHours >= 2) { status = "2"; color = "#0082FA"; } else { status = "3"; color = "#F97316"; } const days = Math.floor(diffHours / 24); const hours = diffHours % 24; let label = "上门时间还剩:"; if (days > 0) { label += `${days}天`; } if (hours > 0) { label += `${hours}个小时`; } if (diffMinutes > 0) { label += `${diffMinutes}分钟`; } return { label, status, color }; } } function generateTimeSlots(externalDate = null) { const baseDate = externalDate ? common_vendor.dayjs(externalDate) : common_vendor.dayjs(); const now = externalDate ? common_vendor.dayjs(externalDate) : common_vendor.dayjs(); const startHour = 8; const endHour = 18; const interval = 2; const currentTime = now.valueOf(); const slots = []; let currentStart = startHour; while (currentStart < endHour) { const currentEnd = Math.min(currentStart + interval, endHour); const startTime = baseDate.hour(currentStart).minute(0).second(0); const endTime = baseDate.hour(currentEnd).minute(0).second(0); const startStr = startTime.format("HH:mm"); const endStr = endTime.format("HH:mm"); const isCurrentPeriod = currentTime >= startTime.valueOf() && currentTime < endTime.valueOf(); if (endTime.valueOf() > currentTime) { slots.push({ label: isCurrentPeriod ? "两个小时内" : `${startStr}-${endStr}`, str: startStr, end: endStr, isCurrent: isCurrentPeriod, date: baseDate.format("YYYY-MM-DD"), startTimestamp: startTime.valueOf(), endTimestamp: endTime.valueOf() }); } currentStart = currentEnd; } console.log("slots", slots); return slots; } function getCurrentHour() { const now = new Date(); const currentHour = now.getHours(); const currentMinute = now.getMinutes(); console.log(currentHour, currentMinute, "dayjs().hour()"); return { currentHour, currentMinute }; } function getTheFutureDay(num = 1) { const pastFifteenDays = common_vendor.dayjs().add(num, "day"); return pastFifteenDays.format("YYYY-MM-DD"); } exports.ShowLastTime = ShowLastTime; exports.generateTimeSlots = generateTimeSlots; exports.getCurrentHour = getCurrentHour; exports.getTheFutureDay = getTheFutureDay; exports.getTimeStatus = getTimeStatus;