修复bug
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user