116 lines
3.6 KiB
JavaScript
116 lines
3.6 KiB
JavaScript
"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");
|
|
}
|
|
function specificTime(targetTime) {
|
|
const now = common_vendor.dayjs();
|
|
const target = common_vendor.dayjs(targetTime);
|
|
let hoursDiff = Math.abs(target.diff(now, "hour", true)) <= 2 || target.isBefore(now);
|
|
console.log(hoursDiff, "hoursDiff");
|
|
return hoursDiff;
|
|
}
|
|
exports.ShowLastTime = ShowLastTime;
|
|
exports.generateTimeSlots = generateTimeSlots;
|
|
exports.getCurrentHour = getCurrentHour;
|
|
exports.getTheFutureDay = getTheFutureDay;
|
|
exports.getTimeStatus = getTimeStatus;
|
|
exports.specificTime = specificTime;
|