diff --git a/miniprogram/src/modules/comprehensive/api/privateBooking.js b/miniprogram/src/modules/comprehensive/api/privateBooking.js index c789585..baac892 100644 --- a/miniprogram/src/modules/comprehensive/api/privateBooking.js +++ b/miniprogram/src/modules/comprehensive/api/privateBooking.js @@ -81,7 +81,18 @@ const toPrivateBookingGrid = (backendData = {}) => ({ slot_prices: backendData.slot_prices || {} }) +const toPrivateBookingConfig = (backendData = {}) => ({ + member_advance_days: toNumber(backendData.member_advance_days, 7), + non_member_advance_days: toNumber(backendData.non_member_advance_days, 3) +}) + export const privateBookingApi = { + getPrivateBookingConfig() { + return request({ + url: '/api/bookings/private/config' + }).then(toPrivateBookingConfig) + }, + getPrivateBookingOptions(params = {}) { return request({ url: '/api/bookings/private/options', diff --git a/miniprogram/src/pages/comprehensive/private/index.vue b/miniprogram/src/pages/comprehensive/private/index.vue index 2519b2b..1da2a76 100644 --- a/miniprogram/src/pages/comprehensive/private/index.vue +++ b/miniprogram/src/pages/comprehensive/private/index.vue @@ -115,11 +115,15 @@ const selectedCells = ref({}) const now = ref(dayjs()) let loadRequestId = 0 +const bookingConfig = ref({ member_advance_days: 7, non_member_advance_days: 3 }) + const weekDays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] const hasPositiveBalance = computed(() => toAmountNumber(session.member?.balance) > 0) const dateOptions = computed(() => { const today = dayjs() - const dateCount = hasPositiveBalance.value ? 7 : 3 + const dateCount = hasPositiveBalance.value + ? bookingConfig.value.member_advance_days + : bookingConfig.value.non_member_advance_days return Array.from({ length: dateCount }).map((_, i) => { const d = today.add(i, 'day') return { @@ -360,9 +364,15 @@ function normalizeClock(value) { async function refresh() { await session.init() + try { + bookingConfig.value = await privateBookingApi.getPrivateBookingConfig() + } catch { + // 获取配置失败时使用默认值 7/3,不阻塞页面 + } if (!hasPositiveBalance.value) { const todayStr = dayjs().format('YYYY-MM-DD') - const maxDateStr = dayjs().add(2, 'day').format('YYYY-MM-DD') + const maxOffset = bookingConfig.value.non_member_advance_days - 1 + const maxDateStr = dayjs().add(maxOffset, 'day').format('YYYY-MM-DD') if (selectedDate.value < todayStr || selectedDate.value > maxDateStr) { selectedDate.value = todayStr }