// pages/evaluate/index.js //估价页面 - 简化版三步骤流程 const api = require('../../utils/api'); Page({ data: { currentStep: 1, // 月日选择 selectedMonth: '', selectedMonthIndex: 0, selectedDay: '', selectedDayIndex: 0, months: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'], days: [], // 地区和品种选择 selectedRegion: '', selectedRegionIndex: 0, selectedBreed: '', selectedBreedIndex: 0, evaluateResult: { estimatedPrice: '0.00', priceRange: '0.00 - 0.00', confidence: '85%' }, // 地区选项 regionOptions: [ '成都市场报价' ], // 品种选项 breedOptions: [ '黄蛋(红蛋)' ] }, onLoad() { console.log('估价页面初始化 - 简化版') // 初始化为当前北京时间 this.initCurrentDate() }, // 初始化当前日期 initCurrentDate() { const now = new Date() const currentMonth = (now.getMonth() + 1).toString() const currentDate = now.getDate().toString() // 设置默认月份 const monthIndex = this.data.months.indexOf(currentMonth) this.setData({ selectedMonth: currentMonth, selectedMonthIndex: monthIndex >= 0 ? monthIndex : 0 }) // 根据当前月份更新日期数组 this.updateDaysForMonth(currentMonth) // 设置默认日期 const dayIndex = this.data.days.indexOf(currentDate) this.setData({ selectedDay: dayIndex >= 0 ? currentDate : '', selectedDayIndex: dayIndex >= 0 ? dayIndex : 0 }) }, // 第一步:点击我知道了 onIKnow() { this.setData({ currentStep: 2 }) }, // 月份选择器变化 onMonthChange(e) { const monthIndex = e.detail.value const selectedMonth = this.data.months[monthIndex] // 更新月份 this.setData({ selectedMonth: selectedMonth, selectedMonthIndex: monthIndex, selectedDay: '', // 清空日期选择 selectedDayIndex: 0 }) // 根据月份设置对应的日期数组 this.updateDaysForMonth(selectedMonth) }, // 日期选择器变化 onDayChange(e) { const dayIndex = e.detail.value const selectedDay = this.data.days[dayIndex] this.setData({ selectedDay: selectedDay, selectedDayIndex: dayIndex }) }, // 根据月份更新日期数组 updateDaysForMonth(month) { let daysCount // 根据月份设置日期数量 switch(month) { case '2': // 2月 daysCount = 28 // 简化处理,不考虑闰年 break case '4': case '6': case '9': case '11': // 小月 daysCount = 30 break default: // 大月 daysCount = 31 } const days = [] for (let i = 1; i <= daysCount; i++) { days.push(i.toString()) } this.setData({ days: days, selectedDay: '', selectedDayIndex: 0 }) }, // 地区选择器变化 onRegionChange(e) { const index = e.detail.value const selectedRegion = this.data.regionOptions[index] this.setData({ selectedRegion: selectedRegion, selectedRegionIndex: index }) }, // 品种选择器变化 onBreedChange(e) { const index = e.detail.value const selectedBreed = this.data.breedOptions[index] this.setData({ selectedBreed: selectedBreed, selectedBreedIndex: index }) }, // 开始估价 startEvaluation() { const { selectedMonth, selectedDay, selectedRegion, selectedBreed } = this.data if (!selectedMonth || !selectedDay || !selectedRegion || !selectedBreed) { wx.showToast({ title: '请完成所有选择', icon: 'none', duration: 2000 }) return } // 显示加载中 wx.showLoading({ title: '估价中...', mask: true }) // 调用真实的价格评估API api.evaluatePrice(selectedMonth, selectedDay, selectedRegion, selectedBreed) .then(result => { console.log('价格评估结果:', result); // 更新评估结果 this.setData({ evaluateResult: { estimatedPrice: result.estimatedPrice || '0.00', priceRange: result.priceRange || '0.00 - 0.00', confidence: result.confidence || '85%' }, currentStep: 3 }); wx.hideLoading() wx.showToast({ title: '估价完成', icon: 'success', duration: 1500 }) }) .catch(error => { console.error('价格评估失败:', error); wx.hideLoading() wx.showToast({ title: '估价失败: ' + (error.message || '未知错误'), icon: 'none', duration: 3000 }) // 可以选择保持当前步骤或者回到上一步 // this.goBack(); }) }, // 获取时间系数 getTimeMultiplier(timeValue) { const multipliers = { 'today': 1.0, 'tomorrow': 0.98, 'week': 0.95, 'month': 0.90 } return multipliers[timeValue] || 1.0 }, // 获取地区系数 getRegionMultiplier(region) { const tier1Cities = ['北京', '上海', '广州', '深圳'] const tier2Cities = ['天津', '江苏', '浙江', '山东'] if (tier1Cities.includes(region)) return 1.15 if (tier2Cities.includes(region)) return 1.05 return 1.0 }, // 获取品种系数 getBreedMultiplier(breed) { const premiumBreeds = ['绿壳', '双黄蛋', '黑鸡土蛋'] const popularBreeds = ['罗曼粉', '伊莎粉', '海蓝褐'] if (premiumBreeds.includes(breed)) return 1.20 if (popularBreeds.includes(breed)) return 1.10 return 1.0 }, // 计算价格区间 calculatePriceRange(basePrice) { const min = (basePrice * 0.9).toFixed(2) const max = (basePrice * 1.1).toFixed(2) return `${min} - ${max}` }, // 计算置信度 calculateConfidence(month, day, region, breed) { let confidence = 80 // 基础置信度 // 根据选择增加置信度 // 如果选择了今日(当前月份和日期),增加置信度 const now = new Date() const currentMonth = (now.getMonth() + 1).toString() const currentDate = now.getDate().toString() if (month === currentMonth && day === currentDate) { confidence += 10 } // 根据地区增加置信度 if (['北京', '上海', '广州', '深圳'].includes(region)) confidence += 5 if (['罗曼粉', '伊莎粉', '海蓝褐'].includes(breed)) confidence += 5 return Math.min(confidence, 95) + '%' }, // 重新估价 restartEvaluation() { this.setData({ currentStep: 1, selectedMonth: '', selectedMonthIndex: 0, selectedDay: '', selectedDayIndex: 0, selectedRegion: '', selectedRegionIndex: 0, selectedBreed: '', selectedBreedIndex: 0, evaluateResult: { estimatedPrice: '0.00', priceRange: '0.00 - 0.00', confidence: '85%' } }) }, // 重置估价(与restartEvaluation相同) resetEvaluation() { this.restartEvaluation() }, // 查看市场 goToMarket() { // 实际应用中,这里会跳转到市场页面 wx.showToast({ title: '功能开发中...', icon: 'none', duration: 2000 }) }, // 返回上一步 goBack() { if (this.data.currentStep > 1) { this.setData({ currentStep: this.data.currentStep - 1 }) } } })