feat(private): 包场预定天数改用后端动态配置(getPrivateBookingConfig API + index.vue动态读取)

This commit is contained in:
gqt
2026-08-14 14:58:03 +08:00
parent 2ca2ead6da
commit 30c2b5ffea
2 changed files with 23 additions and 2 deletions
@@ -81,7 +81,18 @@ const toPrivateBookingGrid = (backendData = {}) => ({
slot_prices: backendData.slot_prices || {} 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 = { export const privateBookingApi = {
getPrivateBookingConfig() {
return request({
url: '/api/bookings/private/config'
}).then(toPrivateBookingConfig)
},
getPrivateBookingOptions(params = {}) { getPrivateBookingOptions(params = {}) {
return request({ return request({
url: '/api/bookings/private/options', url: '/api/bookings/private/options',
@@ -115,11 +115,15 @@ const selectedCells = ref({})
const now = ref(dayjs()) const now = ref(dayjs())
let loadRequestId = 0 let loadRequestId = 0
const bookingConfig = ref({ member_advance_days: 7, non_member_advance_days: 3 })
const weekDays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'] const weekDays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
const hasPositiveBalance = computed(() => toAmountNumber(session.member?.balance) > 0) const hasPositiveBalance = computed(() => toAmountNumber(session.member?.balance) > 0)
const dateOptions = computed(() => { const dateOptions = computed(() => {
const today = dayjs() 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) => { return Array.from({ length: dateCount }).map((_, i) => {
const d = today.add(i, 'day') const d = today.add(i, 'day')
return { return {
@@ -360,9 +364,15 @@ function normalizeClock(value) {
async function refresh() { async function refresh() {
await session.init() await session.init()
try {
bookingConfig.value = await privateBookingApi.getPrivateBookingConfig()
} catch {
// 获取配置失败时使用默认值 7/3,不阻塞页面
}
if (!hasPositiveBalance.value) { if (!hasPositiveBalance.value) {
const todayStr = dayjs().format('YYYY-MM-DD') 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) { if (selectedDate.value < todayStr || selectedDate.value > maxDateStr) {
selectedDate.value = todayStr selectedDate.value = todayStr
} }