123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- // active-page.js
- const { museumApi } = require('../../../utils/api.js');
- Page({
- data: {
- selectedTime: '',
- selectedDate: null,
- step: 1,
- activityId: 0, // 活动ID
- type: 1, // 预约类型:1-普通预约,2-活动预约
- activityData: {},
- isTimeExpired: false, // 时间段是否已过期
- currentTicketCount: 0, // 当前选择日期的票数
- currentActivityTime: '' // 当前选择日期的活动时间
- },
- onLoad(options) {
- // 页面加载时的逻辑
- console.log('active-page接收到的参数:', options);
- if (options.activityId) {
- this.setData({
- activityId: parseInt(options.activityId)
- });
- }
- if (options.type) {
- this.setData({
- type: parseInt(options.type)
- });
- }
- },
- onReady() {
- // 页面初次渲染完成后获取活动详情
- if (this.data.activityId) {
- this.getActivityDetail(this.data.activityId);
- }
- },
- onShow() {
- // 页面显示时的逻辑
- },
- // 日期选择回调
- onDateChange(e) {
- console.log('选择的日期:', e.detail);
- const selectedDate = e.detail.dateString;
-
- // 只有当日期可选时才设置selectedDate
- if (selectedDate) {
- this.setData({
- selectedDate: selectedDate,
- selectedTime: '', // 清空时间选择状态
- });
-
- // 获取该日期的活动票数和时间信息
- this.getActivityTicketInfo(selectedDate);
- } else {
- // 如果日期不可选,清空选择状态
- this.setData({
- selectedDate: null,
- selectedTime: '',
- isTimeExpired: false
- });
- }
- },
- // 格式化日期
- formatDate(date) {
- const year = date.getFullYear();
- const month = (date.getMonth() + 1).toString().padStart(2, '0');
- const day = date.getDate().toString().padStart(2, '0');
- return `${year}-${month}-${day}`;
- },
- // 检查活动时间是否已过期
- checkActivityTimeExpired(activityTime, selectedDate) {
- if (!activityTime || !selectedDate) return false;
-
- const now = new Date();
- const today = this.formatDate(now);
-
- // 如果选择的不是今天,则不需要检查过期
- if (selectedDate !== today) return false;
-
- // 解析活动时间段,获取结束时间
- const timeMatch = activityTime.match(/(\d{1,2}):(\d{2})-(\d{1,2}):(\d{2})/);
- if (!timeMatch) return false;
-
- const endHour = parseInt(timeMatch[3]);
- const endMinute = parseInt(timeMatch[4]);
-
- // 创建今天的结束时间
- const endTime = new Date();
- endTime.setHours(endHour, endMinute, 0, 0);
-
- // 如果当前时间已经超过结束时间,则过期
- return now > endTime;
- },
- // 选择时间段
- selectTime(e) {
- // 如果时间已过期,则不允许选择
- if (this.data.isTimeExpired) {
- wx.showToast({
- title: '已超时可预约时间段',
- icon: 'none'
- });
- return;
- }
-
- const timeToUse = this.data.currentActivityTime || this.data.activityData.time;
- if (this.data.selectedDate && timeToUse) {
- this.setData({
- selectedTime: 'selected'
- });
- console.log('选择的时间段:', timeToUse);
- } else {
- wx.showToast({
- title: '请先选择日期',
- icon: 'none'
- });
- }
- },
- // 下一步
- goNext() {
- if (!this.data.selectedDate) {
- wx.showToast({
- title: '请选择日期',
- icon: 'none'
- });
- return;
- }
-
- // 检查时间是否已过期
- if (this.data.isTimeExpired) {
- wx.showToast({
- title: '当前时间不在可预约时间段内',
- icon: 'none'
- });
- return;
- }
- if(this.data.currentTicketCount <= 0){
- return;
- }
- if (this.data.selectedDate && this.data.activityData.title) {
- console.log('选择的日期:', this.data.selectedDate);
- console.log('活动标题:', this.data.activityData.title);
-
- // 传递活动标题而不是appointmentSlotsId
- const title = this.data.activityData.title;
-
- wx.navigateTo({
- url: `/pages/index/active-people/active-people?date=${this.data.selectedDate}&title=${encodeURIComponent(title)}&type=2&activityId=${this.data.activityId}`
- });
- } else {
- wx.showToast({
- title: '请选择日期',
- icon: 'none'
- });
- }
- },
- onShareAppMessage() {
- return {
- title: '克拉玛依博物馆 - 开始预约',
- path: '/pages/index/start-preview/start-preview'
- };
- },
- // 获取活动详情
- getActivityDetail(activityId) {
- museumApi.getActivityDetail(activityId)
- .then(response => {
- console.log('获取活动详情成功:', response);
- if (response) {
- const activityData = response;
- console.log('活动数据:', activityData);
-
- // 将活动数据设置到页面data中
- this.setData({
- activityData: activityData
- });
-
- // 如果已经选择了日期,获取该日期的票数和时间信息
- if (this.data.selectedDate) {
- this.getActivityTicketInfo(this.data.selectedDate);
- }
- } else {
- console.log('API响应数据为空:', response);
- }
- })
- .catch(error => {
- console.error('获取活动详情失败:', error);
- });
- },
- // 获取活动票数和时间信息
- getActivityTicketInfo(date) {
- if (!this.data.activityId || !date) {
- return;
- }
-
- const params = {
- activityId: this.data.activityId,
- date: date
- };
-
- console.log('获取活动票数信息,参数:', params);
-
- museumApi.getActivityticket(params)
- .then(response => {
- console.log('获取活动票数成功:', response);
- if (response) {
- // 检查活动时间是否已过期
- const isExpired = this.checkActivityTimeExpired(response.time, date);
-
- // 更新当前选择日期的票数和时间信息
- this.setData({
- currentActivityTime: response.time,
- currentTicketCount: response.personCount,
- isTimeExpired: isExpired
- });
- } else {
- console.log('获取活动票数API响应数据为空:', response);
- }
- })
- .catch(error => {
- console.error('获取活动票数失败:', error);
- wx.showToast({
- title: '获取票数信息失败',
- icon: 'none'
- });
- });
- }
- });
|