schedule-list.js 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. Page({
  2. data:{
  3. dates:['2025-11-07','2025-11-08','2025-11-09'],
  4. currentDate:'2025-11-07',
  5. schedules:[],
  6. activityName: '',
  7. fromCity: '',
  8. toCity: '',
  9. selectedType: '',
  10. tripType: '',
  11. tripLabel: '',
  12. venue: ''
  13. },
  14. onLoad(options){
  15. const { activityId, type, from, to, date, activityName, tripType, tripLabel, venue } = options;
  16. this.setData({
  17. selectedType: type,
  18. fromCity: decodeURIComponent(from || ''),
  19. toCity: decodeURIComponent(to || ''),
  20. currentDate: date || this.data.currentDate,
  21. activityName: decodeURIComponent(activityName || '活动'),
  22. tripType: tripType || '',
  23. tripLabel: decodeURIComponent(tripLabel || ''),
  24. venue: decodeURIComponent(venue || '')
  25. });
  26. // 生成日期范围
  27. this.generateDates(date);
  28. this.loadSchedules(this.data.currentDate);
  29. },
  30. generateDates(selectedDate) {
  31. const dates = [];
  32. const baseDate = selectedDate ? new Date(selectedDate) : new Date();
  33. for(let i = -1; i <= 5; i++) {
  34. const date = new Date(baseDate);
  35. date.setDate(baseDate.getDate() + i);
  36. const dateStr = `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2,'0')}-${date.getDate().toString().padStart(2,'0')}`;
  37. dates.push(dateStr);
  38. }
  39. this.setData({ dates });
  40. },
  41. loadSchedules(date){
  42. // 根据出行方式生成不同的班次数据
  43. let schedules = [];
  44. if (this.data.selectedType === 'business-charter') {
  45. // 包车服务
  46. schedules = [
  47. {id:'charter1',time:'任意时间',model:'奔驰V级商务车',price:1200,total:6,left:6,fromLoc:'指定地点接送',toLoc:'活动现场',type:'business-charter',duration:'约4小时',features:['专车接送','随时出发','豪华内饰']},
  48. {id:'charter2',time:'任意时间',model:'奥迪A6L',price:800,total:4,left:4,fromLoc:'指定地点接送',toLoc:'活动现场',type:'business-charter',duration:'约4小时',features:['商务专车','灵活时间','舒适体验']}
  49. ];
  50. } else {
  51. // 拼车服务
  52. schedules = [
  53. {id:'1',time:'09:00',model:'宇通大巴',price:88,total:46,left:12,fromLoc:'东直门地铁站A口',toLoc:'上海体育馆',type:'bus',duration:'约5小时',refundPolicy:'行程前72小时之前退票无手续费'},
  54. {id:'2',time:'13:30',model:'奔驰商务',price:168,total:6,left:2,fromLoc:'北京南站',toLoc:'上海体育馆',type:'business-share',duration:'约4.5小时',refundPolicy:'行程前72小时之前退票无手续费'},
  55. {id:'3',time:'15:00',model:'宇通大巴',price:88,total:46,left:8,fromLoc:'东直门地铁站A口',toLoc:'上海体育馆',type:'bus',duration:'约5小时',refundPolicy:'行程前72小时之前退票无手续费'},
  56. {id:'4',time:'18:00',model:'金龙客车',price:78,total:50,left:25,fromLoc:'北京南站',toLoc:'上海体育馆',type:'bus',duration:'约5小时',refundPolicy:'行程前72小时之前退票无手续费'}
  57. ];
  58. }
  59. this.setData({ schedules });
  60. },
  61. onDateChange(e){
  62. const d = e.currentTarget.dataset.date;
  63. this.setData({currentDate:d});
  64. this.loadSchedules(d);
  65. },
  66. book(e){
  67. const scheduleId = e.currentTarget.dataset.id;
  68. const schedule = this.data.schedules.find(s => s.id === scheduleId);
  69. wx.navigateTo({
  70. url:`/pages/order/order?scheduleId=${scheduleId}&activityName=${this.data.activityName}&type=${schedule.type}`
  71. });
  72. }
  73. });