const {museumApi} = require('../../../utils/api.js'); Page({ data: { appointmentSlots: [], // 存储预约时段数据 openTime: '10:00', // 开馆时间 closeTime: '18:00', // 闭馆时间 stopCheckTime: '17:00', // 停止检票时间 noticeContent: '' // 预约须知内容 }, onLoad(options) { // 页面加载时的逻辑 console.log('页面加载'); this.loadAppointmentSlots(); this.loadNoticeContent(); }, // 加载预约时段数据 loadAppointmentSlots() { // 获取当前日期 const today = new Date(); const dateString = today.getFullYear() + '-' + String(today.getMonth() + 1).padStart(2, '0') + '-' + String(today.getDate()).padStart(2, '0'); console.log('获取预约时段,日期:', dateString); // 调用API获取预约时段 museumApi.getSlotsByDate(dateString) .then(res => { console.log('获取预约时段成功:', res); if (res) { this.setData({ appointmentSlots: res }); this.updateTimeInfo(res); } else { console.error('获取预约时段失败:', res.message || '未知错误'); this.setDefaultTime(); wx.showToast({ title: '获取预约时段失败', icon: 'none' }); } }) .catch(err => { console.error('获取预约时段异常:', err); this.setDefaultTime(); // wx.showToast({ // title: '网络异常,请稍后重试', // icon: 'none' // }); }); }, // 加载预约须知内容 loadNoticeContent() { console.log('获取预约须知内容'); // 调用API获取预约须知 museumApi.getSlots() .then(res => { console.log('获取预约须知成功:', res); if (res) { this.setData({ noticeContent: res.notice.rtf }); } else { console.error('获取预约须知失败:', res.message || '未知错误'); } }) .catch(err => { console.error('获取预约须知异常:', err); }); }, // 判断时间段是否为下午(大于等于14:00) isAfternoonTime(timeStr) { // 时间格式如:"10:00-14:00" 或 "14:00-18:00" const startTime = timeStr.split('-')[0].trim(); const hour = parseInt(startTime.split(':')[0]); return hour >= 14; }, // 更新时间信息 updateTimeInfo(data) { let openTime = '10:00'; let closeTime = '18:00'; let stopCheckTime = '17:00'; if (data.length === 1) { // 只有一项数据,直接取time const timeRange = data[0].time; if (timeRange && timeRange.includes('-')) { const times = timeRange.split('-'); openTime = times[0]; closeTime = times[1]; } } else if (data.length >= 2) { // 有两项或更多数据,根据时间段判断上午下午 let morningData = null; let afternoonData = null; // 遍历数据,根据时间判断是上午还是下午 data.forEach(item => { if (this.isAfternoonTime(item.time)) { afternoonData = item; } else { morningData = item; } }); // 取上午时段的开始时间作为开馆时间 if (morningData && morningData.time.includes('-')) { openTime = morningData.time.split('-')[0]; } // 取下午时段的结束时间作为闭馆时间 if (afternoonData && afternoonData.time.includes('-')) { closeTime = afternoonData.time.split('-')[1]; } // 如果没有上午时段,用下午时段的开始时间作为开馆时间 if (!morningData && afternoonData && afternoonData.time.includes('-')) { openTime = afternoonData.time.split('-')[0]; } // 如果没有下午时段,用上午时段的结束时间作为闭馆时间 if (!afternoonData && morningData && morningData.time.includes('-')) { closeTime = morningData.time.split('-')[1]; } } // 计算停止检票时间(闭馆时间往前一个小时) stopCheckTime = this.calculateStopCheckTime(closeTime); this.setData({ openTime: openTime, closeTime: closeTime, stopCheckTime: stopCheckTime }); console.log('更新时间信息:', { openTime, closeTime, stopCheckTime }); }, // 设置默认时间 setDefaultTime() { this.setData({ openTime: '10:00', closeTime: '18:00', stopCheckTime: '17:00' }); }, // 计算停止检票时间(闭馆时间往前一个小时) calculateStopCheckTime(closeTime) { try { const [hours, minutes] = closeTime.split(':').map(Number); let stopHour = hours - 1; // 处理跨天的情况 if (stopHour < 0) { stopHour = 23; } return String(stopHour).padStart(2, '0') + ':' + String(minutes).padStart(2, '0'); } catch (error) { console.error('计算停止检票时间失败:', error); return '17:00'; // 默认值 } }, onShow() { // 页面显示时的逻辑 console.log(111111) }, // 返回首页 goBack() { wx.switchTab({ url: '/pages/index/index' }); }, // 开始预约 startPreview() { wx.navigateTo({ url: '/pages/index/start-preview/start-preview' }); }, // 查看我的参观人 viewMyVisitors() { wx.navigateTo({ url: '/pages/user/userList/index' }); }, onShareAppMessage() { return { title: '克拉玛依博物馆 - 预约参观', path: '/pages/index/visitpreview/visitpreview' }; } });