import React, { useState, useMemo, useEffect } from 'react'; import { Calculator, ShoppingCart, TrendingUp, Shield, Clock, Heart, AlertTriangle, Settings } from 'lucide-react'; import DecisionChecks from './components/DecisionChecks'; const PurchaseDecisionCalculator = () => { const [productName, setProductName] = useState(''); const [productPrice, setProductPrice] = useState(''); const [productType, setProductType] = useState('digital'); // digital, appliance, fitness, luxury, other const [personalityType, setPersonalityType] = useState('standard'); // standard, conservative, efficiency, quality // 评分状态 const [scores, setScores] = useState({ A1: 0, A2: 0, A3: 0, B1: 0, B2: 0, B3: 0, B4: 0, C1: 0, C2: 0, C3: 0, D1: 0, D2: 0, E1: 0, E2: 0, E3: 0, F1: 0, F2: 0, F3: 0, G1: 0, G2: 0, H1: 0, H2: 0, H3: 0 }); // 特殊调整 const [adjustments, setAdjustments] = useState({ urgent: false, // 紧急需求 +1 discount: false, // 限时优惠 +1 brand: false, // 品牌信仰 +1 gift: false, // 送礼需求 +5 investment: false // 投资属性 +1 }); // 基础权重 const baseWeights = { A1: 2, A2: 2, A3: 0.6, B1: 2, B2: 2, B3: 0.4, B4: 0.2, C1: 2, C2: 0.8, C3: 0.8, D1: 1, D2: 0.8, E1: 1, E2: 0.8, E3: 0.4, F1: 0.4, F2: 0.8, F3: 0.8, G1: 0.6, G2: 0.6, H1: 0.4, H2: 0.4, H3: 0.2 }; // 个性化权重调整 const personalityWeights = { conservative: { A1: 2.5, A2: 2.5, A3: 0.8, B1: 2.5, B2: 2.5, B3: 0.6, B4: 0.4, C1: 2.5, C2: 1.0, C3: 1.0, D1: 0.5, D2: 0.4, E1: 0.5, E2: 0.4, E3: 0.2, F1: 0.6, F2: 1.0, F3: 1.0, G1: 0.4, G2: 0.4, H1: 0.2, H2: 0.2, H3: 0.1 }, efficiency: { A1: 1.5, A2: 1.5, A3: 0.4, B1: 1.5, B2: 1.5, B3: 0.3, B4: 0.1, C1: 1.5, C2: 0.6, C3: 0.6, D1: 2.0, D2: 1.6, E1: 1.5, E2: 1.2, E3: 0.6, F1: 0.4, F2: 0.8, F3: 0.8, G1: 0.8, G2: 0.8, H1: 0.4, H2: 0.4, H3: 0.2 }, quality: { A1: 1.8, A2: 1.8, A3: 0.5, B1: 1.5, B2: 1.5, B3: 0.3, B4: 0.1, C1: 2.5, C2: 1.0, C3: 1.0, D1: 1.0, D2: 0.8, E1: 1.5, E2: 1.2, E3: 0.6, F1: 0.2, F2: 0.6, F3: 0.6, G1: 0.5, G2: 0.5, H1: 0.3, H2: 0.3, H3: 0.1 } }; // 获取当前权重 const getCurrentWeights = () => { if (personalityType === 'standard') return baseWeights; return personalityWeights[personalityType]; }; // 计算总分 const calculateScore = useMemo(() => { const weights = getCurrentWeights(); let baseScore = 0; // 基础分数计算 Object.keys(weights).forEach(key => { if (key === 'H3' && productType !== 'digital') { // 非数码产品H3默认满分 baseScore += 5 * weights[key]; } else { baseScore += scores[key] * weights[key]; } }); // 特殊调整 let adjustmentScore = 0; if (adjustments.urgent) adjustmentScore += 2; // A1 +1分 if (adjustments.discount) adjustmentScore += 2; // B1 +1分 if (adjustments.brand) adjustmentScore += 0.8; // E2 +1分 if (adjustments.gift) adjustmentScore += 5; // E维度权重临时提升 if (adjustments.investment) adjustmentScore += 0.8; // C2 +1分 return Math.min(100, baseScore + adjustmentScore); }, [scores, adjustments, productType, personalityType]); // 获取决策建议 const getDecisionAdvice = (score) => { if (score >= 85) return { level: 'excellent', text: '🟢 闭眼入手', desc: '无需犹豫,遇到好价格立即下单', color: 'bg-green-500' }; if (score >= 75) return { level: 'good', text: '🟢 放心购买', desc: '可安心购买,适当比价即可', color: 'bg-green-400' }; if (score >= 65) return { level: 'caution', text: '🟡 择机购买', desc: '等待促销、货比三家、考虑替代', color: 'bg-yellow-400' }; if (score >= 50) return { level: 'wait', text: '🟠 谨慎观望', desc: '继续研究、延期3个月、寻找替代', color: 'bg-orange-400' }; return { level: 'avoid', text: '🔴 建议放弃', desc: '暂缓购买,重新评估真实需求', color: 'bg-red-500' }; }; const handleScoreChange = (dimension, value) => { setScores(prev => ({ ...prev, [dimension]: parseInt(value) || 0 })); }; const handleAdjustmentChange = (type) => { setAdjustments(prev => ({ ...prev, [type]: !prev[type] })); }; const resetScores = () => { setScores(Object.fromEntries(Object.keys(scores).map(key => [key, 0])) as typeof scores); setAdjustments({ urgent: false, discount: false, brand: false, gift: false, investment: false }); }; const advice = getDecisionAdvice(calculateScore); // AdSense 广告初始化 useEffect(() => { try { if (typeof window !== 'undefined') { const adsbygoogle = (window as any).adsbygoogle; if (adsbygoogle) { adsbygoogle.push({}); } } } catch (err) { console.log('AdSense error:', err); } }, []); // 评分选项定义 const scoreOptions = { A1: [ { value: 0, label: "纯想要" }, { value: 1, label: "锦上添花" }, { value: 2, label: "有点用处" }, { value: 3, label: "较实用" }, { value: 4, label: "很有用" }, { value: 5, label: "强刚需" } ], A2: [ { value: 0, label: "几乎不用" }, { value: 1, label: "偶尔使用(月1-2次)" }, { value: 2, label: "一般使用(周1-2次)" }, { value: 3, label: "较频繁(隔天使用)" }, { value: 4, label: "高频使用(每天)" }, { value: 5, label: "多次使用/天" } ], A3: [ { value: 0, label: "多种免费替代" }, { value: 1, label: "有便宜替代" }, { value: 2, label: "替代品一般" }, { value: 3, label: "替代品较差" }, { value: 4, label: "少量替代" }, { value: 5, label: "无可替代" } ], B1: [ { value: 0, label: "明显超贵" }, { value: 1, label: "偏贵" }, { value: 2, label: "价格一般" }, { value: 3, label: "性价比可以" }, { value: 4, label: "性价比不错" }, { value: 5, label: "性价比极高" } ], B2: [ { value: 0, label: ">年收入20%" }, { value: 1, label: "年收入15-20%" }, { value: 2, label: "年收入10-15%" }, { value: 3, label: "年收入6-10%" }, { value: 4, label: "年收入3-6%" }, { value: 5, label: "<年收入3%" } ], B3: [ { value: 0, label: "影响生活质量" }, { value: 1, label: "占用应急资金" }, { value: 2, label: "需要分期付款" }, { value: 3, label: "稍有压力" }, { value: 4, label: "小有富余" }, { value: 5, label: "完全无压力" } ], B4: [ { value: 0, label: "错失高收益投资" }, { value: 1, label: "影响定期投资" }, { value: 2, label: "延迟理财计划" }, { value: 3, label: "机会成本一般" }, { value: 4, label: "机会成本很小" }, { value: 5, label: "无机会成本" } ], C1: [ { value: 0, label: "不到1年" }, { value: 1, label: "1-2年" }, { value: 2, label: "2-3年" }, { value: 3, label: "3-5年" }, { value: 4, label: "5-8年" }, { value: 5, label: "8年以上" } ], C2: [ { value: 0, label: "保值率<10%" }, { value: 1, label: "保值率10-20%" }, { value: 2, label: "保值率20-30%" }, { value: 3, label: "保值率30-50%" }, { value: 4, label: "保值率50-70%" }, { value: 5, label: "保值率>70%" } ], C3: [ { value: 0, label: "半年一代新品" }, { value: 1, label: "年度更新换代" }, { value: 2, label: "2年一代" }, { value: 3, label: "技术相对成熟" }, { value: 4, label: "迭代速度缓慢" }, { value: 5, label: "技术非常稳定" } ], D1: [ { value: 0, label: "无效率提升" }, { value: 1, label: "微小提升" }, { value: 2, label: "小幅提升" }, { value: 3, label: "明显提升" }, { value: 4, label: "大幅提升" }, { value: 5, label: "显著提升" } ], D2: [ { value: 0, label: "无收益" }, { value: 1, label: "稍有益处" }, { value: 2, label: "提升技能" }, { value: 3, label: "改善健康" }, { value: 4, label: "节省成本" }, { value: 5, label: "带来收入" } ], E1: [ { value: 0, label: "无感觉" }, { value: 1, label: "略有愉悦" }, { value: 2, label: "比较开心" }, { value: 3, label: "很开心" }, { value: 4, label: "非常满足" }, { value: 5, label: "极大快乐" } ], E2: [ { value: 0, label: "负面影响" }, { value: 1, label: "无影响" }, { value: 2, label: "略有帮助" }, { value: 3, label: "有一定帮助" }, { value: 4, label: "较好提升" }, { value: 5, label: "显著提升" } ], E3: [ { value: 0, label: "强烈反对" }, { value: 1, label: "不太支持" }, { value: 2, label: "中性态度" }, { value: 3, label: "比较支持" }, { value: 4, label: "很支持" }, { value: 5, label: "非常支持" } ], F1: [ { value: 0, label: ">月收入150%" }, { value: 1, label: "月收入120-150%" }, { value: 2, label: "月收入80-120%" }, { value: 3, label: "月收入50-80%" }, { value: 4, label: "月收入30-50%" }, { value: 5, label: "<月收入30%" } ], F2: [ { value: 0, label: "故障率高且维修贵" }, { value: 1, label: "维护成本较高" }, { value: 2, label: "维护成本一般" }, { value: 3, label: "维护成本便宜" }, { value: 4, label: "很少需要维护" }, { value: 5, label: "几乎免维护" } ], F3: [ { value: 0, label: "近期必大跌价" }, { value: 1, label: "可能跌价20%+" }, { value: 2, label: "小幅波动" }, { value: 3, label: "价格稳定" }, { value: 4, label: "持续涨价" }, { value: 5, label: "限量稀缺品" } ], G1: [ { value: 0, label: "时机很差" }, { value: 1, label: "时机不佳" }, { value: 2, label: "时机一般" }, { value: 3, label: "时机较好" }, { value: 4, label: "时机很好" }, { value: 5, label: "最佳时机" } ], G2: [ { value: 0, label: "完全不匹配" }, { value: 1, label: "勉强够用" }, { value: 2, label: "基本适合" }, { value: 3, label: "比较合适" }, { value: 4, label: "很合适" }, { value: 5, label: "完美匹配" } ], H1: [ { value: 0, label: "很难学会" }, { value: 1, label: "需要专门培训" }, { value: 2, label: "需要学习研究" }, { value: 3, label: "较容易上手" }, { value: 4, label: "很容易使用" }, { value: 5, label: "零学习成本" } ], H2: [ { value: 0, label: "明显有害健康" }, { value: 1, label: "可能有害" }, { value: 2, label: "健康中性" }, { value: 3, label: "略有益健康" }, { value: 4, label: "较有益健康" }, { value: 5, label: "明显有益健康" } ], H3: [ { value: 0, label: "隐私高风险" }, { value: 1, label: "隐私中等风险" }, { value: 2, label: "隐私低风险" }, { value: 3, label: "相对安全" }, { value: 4, label: "很安全" }, { value: 5, label: "完全安全" } ] }; const ScoreInput = ({ dimension, label, description }) => { const options = scoreOptions[dimension] || []; return (
{description}
}非数码产品无隐私风险