修复bug

This commit is contained in:
2026-03-09 09:05:21 +08:00
parent 9f2d2f8764
commit 4da4d165cb
17 changed files with 467 additions and 181 deletions
+25 -4
View File
@@ -14,6 +14,14 @@ const storeBusinessHours = ref('');
// 是否仅选择日期(当进入页面传递了 storeBusinessHours 时开启)
const onlySelectDay = ref(false);
// 业务规则:只能预约周一 / 周四 / 周五
// JS 中:0-周日 1-周一 ... 4-周四 5-周五
const allowedWeekdays = [1, 4, 5];
const isAllowedDay = (date: Date): boolean => {
const dayIndex = date.getDay();
return allowedWeekdays.includes(dayIndex);
};
// 解析商家营业时间的接口
interface BusinessHours {
days: string[]; // 营业的星期几
@@ -112,6 +120,11 @@ const isDateOpen = (date: Date): boolean => {
* @returns 是否可选择
*/
const isDateSelectable = (date: Date): boolean => {
// 新增:限制只能预约周一 / 周四 / 周五
if (!isAllowedDay(date)) {
return false;
}
// 如果只选日期模式,营业即可选择
if (onlySelectDay.value) {
if (!storeBusinessHours.value) return true;
@@ -227,9 +240,12 @@ const hasAvailableTimeSlots = (date: Date): boolean => {
// 初始化选中日期为第一个有可用时间段的营业日期
const initializeSelectedDate = () => {
if (onlySelectDay.value) {
// 仅选日期模式:选择第一个营业日期(或第一个日期)
const firstOpen = dateOptions.value.find((d) => isDateOpen(d));
selectedDate.value = firstOpen || dateOptions.value[0];
// 仅选日期模式:选择第一个“允许预约且营业”的日期(或第一个允许的日期)
const firstOpen = dateOptions.value.find(
(d) => isAllowedDay(d) && isDateOpen(d)
);
const firstAllowed = firstOpen || dateOptions.value.find((d) => isAllowedDay(d));
selectedDate.value = firstAllowed || dateOptions.value[0];
nextTick(() => updateScrollPosition());
return;
}
@@ -487,7 +503,12 @@ const findNextBusinessDate = (currentDate: Date): Date | null => {
dayjs(date).isSame(dayjs(nextDate), "day")
);
if (isInRange && isDateOpen(nextDate) && hasAvailableTimeSlots(nextDate)) {
if (
isInRange &&
isAllowedDay(nextDate) &&
isDateOpen(nextDate) &&
hasAvailableTimeSlots(nextDate)
) {
return nextDate;
}
}