feat(private): 包场预定天数改用后端动态配置(getPrivateBookingConfig API + index.vue动态读取)
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user