From 30c2b5ffeacc8a61fe2e032aaf5025283a97f7aa Mon Sep 17 00:00:00 2001 From: gqt <3217233537@qq.com> Date: Fri, 14 Aug 2026 14:58:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(private):=20=E5=8C=85=E5=9C=BA=E9=A2=84?= =?UTF-8?q?=E5=AE=9A=E5=A4=A9=E6=95=B0=E6=94=B9=E7=94=A8=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E9=85=8D=E7=BD=AE(getPrivateBookingConfig=20?= =?UTF-8?q?API=20+=20index.vue=E5=8A=A8=E6=80=81=E8=AF=BB=E5=8F=96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/comprehensive/api/privateBooking.js | 11 +++++++++++ .../src/pages/comprehensive/private/index.vue | 14 ++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) 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 }