// 旅行结伴功能JavaScript class TravelPlanManager { constructor() { this.apiBaseUrl = 'https://api.jiebanke.com/api/travel'; this.plansContainer = document.getElementById('travel-plans-container'); this.travelForm = document.getElementById('travel-plan-form'); this.init(); } async init() { await this.loadTravelPlans(); this.bindEvents(); } async loadTravelPlans() { try { // 模拟API调用,实际项目中替换为真实API const mockPlans = [ { id: 1, destination: "西藏拉萨", travelDate: "2025-03-15", duration: 10, budget: "5000-10000", description: "寻找志同道合的伙伴一起探索西藏的神秘与美丽,计划游览布达拉宫、大昭寺、纳木错等景点。", requirements: "年龄25-35岁,有高原旅行经验者优先", participants: 3, maxParticipants: 6, creator: "旅行达人小李", createdAt: "2025-01-15" }, { id: 2, destination: "云南大理", travelDate: "2025-02-20", duration: 7, budget: "2000-5000", description: "大理古城、洱海、苍山七日游,体验白族文化和自然风光。", requirements: "喜欢摄影、热爱自然", participants: 2, maxParticipants: 4, creator: "摄影师小王", createdAt: "2025-01-10" }, { id: 3, destination: "海南三亚", travelDate: "2025-04-01", duration: 5, budget: "3000-6000", description: "阳光沙滩度假之旅,潜水、冲浪、海鲜美食一网打尽。", requirements: "性格开朗,喜欢水上运动", participants: 4, maxParticipants: 8, creator: "阳光少年小张", createdAt: "2025-01-08" } ]; this.displayPlans(mockPlans); } catch (error) { console.error('加载旅行计划失败:', error); this.showError('加载旅行计划失败,请刷新页面重试'); } } displayPlans(plans) { if (plans.length === 0) { this.plansContainer.innerHTML = `
暂无旅行计划,快来发布第一个吧!
`; return; } const plansHTML = plans.map(plan => `
${plan.destination}
${plan.budget}元
出发日期: ${new Date(plan.travelDate).toLocaleDateString('zh-CN')}
行程天数: ${plan.duration}天

${plan.description}

伙伴要求: ${plan.requirements || '无特殊要求'}
${plan.participants}/${plan.maxParticipants}人
发布者: ${plan.creator}
`).join(''); this.plansContainer.innerHTML = plansHTML; } bindEvents() { if (this.travelForm) { this.travelForm.addEventListener('submit', this.handleFormSubmit.bind(this)); } } async handleFormSubmit(event) { event.preventDefault(); const formData = new FormData(this.travelForm); const planData = { destination: document.getElementById('destination').value, travelDate: document.getElementById('travel-date').value, duration: parseInt(document.getElementById('duration').value), budget: document.getElementById('budget').value, description: document.getElementById('description').value, requirements: document.getElementById('requirements').value }; // 表单验证 if (!this.validateForm(planData)) { return; } try { // 模拟API调用 console.log('发布旅行计划:', planData); // 显示成功消息 this.showSuccess('旅行计划发布成功!'); // 清空表单 this.travelForm.reset(); // 重新加载计划列表 await this.loadTravelPlans(); } catch (error) { console.error('发布旅行计划失败:', error); this.showError('发布失败,请稍后重试'); } } validateForm(data) { if (!data.destination.trim()) { this.showError('请输入目的地'); return false; } if (!data.travelDate) { this.showError('请选择出发日期'); return false; } if (data.duration < 1) { this.showError('行程天数必须大于0'); return false; } if (!data.budget) { this.showError('请选择预算范围'); return false; } if (!data.description.trim()) { this.showError('请输入行程描述'); return false; } return true; } async joinPlan(planId) { try { // 模拟加入计划 console.log('加入旅行计划:', planId); this.showSuccess('已申请加入旅行计划,等待创建者确认'); } catch (error) { console.error('加入计划失败:', error); this.showError('加入失败,请稍后重试'); } } viewPlanDetail(planId) { // 在实际项目中,这里可以跳转到详情页或显示模态框 console.log('查看旅行计划详情:', planId); alert('功能开发中,即将上线'); } showSuccess(message) { this.showAlert(message, 'success'); } showError(message) { this.showAlert(message, 'danger'); } showAlert(message, type) { const alertDiv = document.createElement('div'); alertDiv.className = `alert alert-${type} alert-dismissible fade show`; alertDiv.innerHTML = ` ${message} `; // 插入到页面顶部 const container = document.querySelector('.container'); container.insertBefore(alertDiv, container.firstChild); // 5秒后自动消失 setTimeout(() => { if (alertDiv.parentNode) { alertDiv.remove(); } }, 5000); } } // 初始化旅行计划管理器 const travelManager = new TravelPlanManager(); // 页面加载完成后初始化 document.addEventListener('DOMContentLoaded', function() { // AOS动画初始化 if (typeof AOS !== 'undefined') { AOS.init({ duration: 1000, once: true }); } });