123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- 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'
- };
- }
- });
|