/* ---------- 工具 ---------- */ function qp(k){return new URLSearchParams(location.search).get(k);} function strongestEl(p){return EO.reduce((a,b)=>p[b]>p[a]?b:a,EO[0]);} function esc(s){return (s||'').replace(/'+(n!=null?n:'')+''; } var s=''; s+=cell(cx-CW/2,0,apex,true); s+=cell(cx-CW-GY/2,CH+GY,mid[0])+cell(cx+GY/2,CH+GY,mid[1]); base.forEach(function(n,i){ s+=cell(i*(CW+GY),(CH+GY)*2,n); }); s+=''; return s; } /* ---------- 今日锦囊 ---------- */ var SEASON_EL={0:'水',1:'水',2:'木',3:'木',4:'木',5:'火',6:'火',7:'火',8:'土',9:'金',10:'金',11:'水'}; var YI_JI={ 木:{yi:'早睡养肝血 · 舒展拉伸 · 绿色蔬菜',ji:'久坐 · 生闷气 · 熬夜'}, 火:{yi:'午休15分钟 · 菊花/莲子 · 平心静气',ji:'暴晒 · 辛辣油腻 · 过度兴奋'}, 土:{yi:'规律三餐 · 健脾山药 · 饭后散步',ji:'思虑过度 · 生冷 · 暴饮暴食'}, 金:{yi:'滋润养肺 · 白色食物 · 深呼吸',ji:'干燥受凉 · 悲忧 · 剧烈耗气'}, 水:{yi:'早卧晚起 · 温补黑色食物 · 护腰腹',ji:'受寒 · 过劳 · 惊恐紧张'} }; function todaySolar(){ var now=new Date(),m=now.getMonth()+1,d=now.getDate(); var cur=ST[0]; for(var i=0;it.m||(m===t.m&&d>=t.d)) cur=t; } return cur; } /* ---------- 主渲染 ---------- */ function render(){ var y=+qp('y'),m=+qp('m'),d=+qp('d'); var box=document.getElementById('report'); if(!y||!m||!d||y<1900||y>2100){ box.innerHTML='
缺少有效生日参数,请从首页重新进入 🙏
';return; } document.getElementById('disc').style.display='block'; // === 数字引擎 === var v=calc(y,m,d); var mainNum=v.O; var person=NUM[mainNum]||{title:'',pos:'',neg:'',job:'',desc:''}; // === 养生引擎(无时辰,默认午时12点) === var bz=getBazi(new Date(y,m-1,d),12); var p5=calc5E(bz); var strong=strongestEl(p5); var cst=getConst(p5); var emo=getEmotion(strong); // === 今日锦囊 === var st=todaySolar(); var sEl=SEASON_EL[new Date().getMonth()]; var yj=YI_JI[sEl]; var paid=localStorage.getItem('jiema_paid')==='1'; box.innerHTML= ''+ '
'+ '✨ 数字性格密码'+ '
'+mainNum+'
'+ '
'+mainNum+'号人 · '+esc(person.title)+'
'+ '
'+esc((person.desc||'').split(/[。.]/)[0])+'
'+ '
'+miniPyramid(v)+'
'+ '
'+ '
'+ '天赋优势:'+esc(person.pos)+'
'+ '人生课题:'+esc(person.neg)+'
'+ '适合方向:'+esc(person.job)+'
'+ '能量解读:'+esc(person.desc)+ '
'+ '
'+ '
🔒 解锁你的完整密码
'+ '
天赋优势 · 人生课题 · 适合方向 · 12组联合码深度解读
'+ ''+ '
'+ '
'+ '
'+ ''+ '
'+ '🌿 五行体质画像'+ '
'+esc(cst.primary)+'
'+ '
核心养护:养'+esc(cst.strong)+' · 需呵护'+esc(cst.weak)+'
'+ '
'+ EO.map(function(e){return '
'+e+'
'+p5[e]+'%
';}).join('')+ '
'+ '
🎭 情绪画像:'+esc((emo.strength||[]).join(' · '))+'
'+ '
'+ '
'+ '体质特征:'+esc(cst.body)+'
'+ '调养要点:'+esc(cst.tips)+'
'+ '易感倾向:'+esc(cst.diseases)+'
'+ '季节风险:'+esc(cst.seasonRisk)+'
'+ '食疗方向:'+esc(cst.foodTherapy)+'
'+ '作息节律:'+esc(cst.dailyRhythm)+ '
'+ '
'+ '
🔒 解锁五行体质深度分析
'+ '
脏腑画像 · 易感倾向 · 食疗 · 运动作息方案
'+ ''+ '
'+ '
'+ '
'+ ''+ '
'+ '🎯 今日养生锦囊'+ '
当前节气:'+st.n+' · 时令 '+sEl+' 当令
'+ '

今日调养建议

'+ '
宜:'+yj.yi+'
'+ '
忌:'+yj.ji+'
'+ '
'+ ''+ '
'+ '完整数字报告 →'+ '完整养生方案 →'+ '
'+ ''+ '
'+ '💞 测测你和 TA 的契合度'+ '
'+ ''+ ''+ ''+ ''+ '
'+ '
'+ '
'+ ''+ '
'+ '🦋 分享你的身心密码'+ ''+ '
'; } /* ---------- 付费墙 ---------- */ function unlock(){ document.getElementById('payModal').classList.add('on'); } function doUnlock(){ localStorage.setItem('jiema_paid','1'); document.querySelectorAll('.lock').forEach(function(el){el.classList.add('unlocked');}); document.getElementById('payModal').classList.remove('on'); } /* ---------- 契合度(免费仅分数,深度引导付费/双人报告) ---------- */ function matchTest(y1,m1,d1){ var y=+document.getElementById('tY').value, m=+document.getElementById('tM').value, d=+document.getElementById('tD').value; if(!y||!m||!d){alert('请输入 TA 的完整生日');return;} var a=calc(y1,m1,d1).O, b=calc(y,m,d).O; var diff=Math.abs(a-b); var score=92-diff*6+((a+b)%3)*3; score=Math.max(60,Math.min(98,score)); document.getElementById('matchOut').innerHTML= '
'+score+' 分
'+ '
'+ '
你们在沟通节奏、能量互补、相处课题上的详细解读……
'+ '
'+ '
🔒 解锁完整契合度解读
'+ '
关系能量图 · 相处建议 · 沟通指南
'+ ''+ '
'+ '
'; } /* ---------- 分享卡片(纯 canvas,无外部库) ---------- */ function genShare(numTitle,constType,ysKey){ var c=document.getElementById('shareCanvas'),g=c.getContext('2d'); var W=c.width,H=c.height; var grd=g.createLinearGradient(0,0,0,H); grd.addColorStop(0,'#FF9F80');grd.addColorStop(1,'#FFC8B5'); g.fillStyle=grd;g.fillRect(0,0,W,H); g.fillStyle='#fff';g.textAlign='center'; g.font='bold 40px sans-serif';g.fillText('愈心解码',W/2,90); g.font='20px sans-serif';g.fillText('一个生日,读懂身与心',W/2,128); // 卡片 g.fillStyle='rgba(255,255,255,.95)'; roundRect(g,60,180,W-120,380,24);g.fill(); g.fillStyle='#8a6d3b';g.font='bold 46px sans-serif'; g.fillText(numTitle,W/2,290); g.fillStyle='#5CB85C';g.font='bold 40px sans-serif'; g.fillText(constType,W/2,390); g.fillStyle='#666';g.font='24px sans-serif'; g.fillText('养生重点:'+ysKey,W/2,460); g.fillStyle='#E54D42';g.font='20px sans-serif'; g.fillText('▶ 扫码解锁你的身心密码',W/2,530); g.fillStyle='#fff';g.font='18px sans-serif'; g.fillText('愈心谷 · 愈见魔方,遇见自己',W/2,H-40); document.getElementById('shareModal').classList.add('on'); } function roundRect(g,x,y,w,h,r){ g.beginPath();g.moveTo(x+r,y);g.arcTo(x+w,y,x+w,y+h,r); g.arcTo(x+w,y+h,x,y+h,r);g.arcTo(x,y+h,x,y,r);g.arcTo(x,y,x+w,y,r);g.closePath(); } render();