(function(){ /* ═══ 职业培训模块 v13 · 双Tab体系(能碳管理+数字化转型)+ AI产品经理课程 + 免费课程(2026-08-30)═══ */ var app=document.getElementById('sxai-tra-app'); if(!app)return; /* 样式(数晰绿主题,与标准指南统一) */ var st=document.createElement('style'); st.textContent=[ '.tra-wrap{max-width:1150px;margin:0 auto;padding:20px 16px;font-family:inherit}', '.tra-hero{background:linear-gradient(135deg,#065f46,#0e7490);color:#fff;border-radius:14px;padding:28px 30px;margin-bottom:22px}', '.tra-hero h1{margin:0 0 8px;font-size:24px;font-weight:800}', '.tra-hero p{margin:0;opacity:.92;font-size:14px}', '.tra-cards{font-size:0;margin-bottom:26px}#sxai-tra-app .tra-cards .tra-card{display:inline-block!important;width:49%!important;vertical-align:top;font-size:14px;box-sizing:border-box;margin:0 0.5% 16px!important}@media(max-width:760px){#sxai-tra-app .tra-cards .tra-card{display:block!important;width:100%!important;margin:0 0 14px!important}}', '.tra-card{background:#fff;border:1px solid #e5e7eb;border-radius:14px;overflow:hidden;transition:.2s;cursor:pointer;position:relative}', '.tra-card:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(6,95,70,.15)}', '.tra-card .tc-head{padding:14px 12px;font-size:32px;text-align:center}', '.tra-card .tc-body{padding:12px 16px 16px}', '.tra-card h3{margin:0 0 6px;font-size:16px;font-weight:700;color:#1f2937}', '.tra-card p{margin:0 0 10px;font-size:12.5px;color:#6b7280;line-height:1.6}', '.tra-card .tc-meta{display:flex;gap:12px;font-size:11.5px;color:#9ca3af;margin-bottom:12px}', '.tc-btn{width:100%;padding:8px;border:none;border-radius:8px;color:#fff;font-size:13px;font-weight:700;cursor:pointer}', /* 学习页布局 */ '.tra-learn{display:grid;grid-template-columns:270px minmax(0,1fr);gap:16px}', '@media(max-width:900px){.tra-learn{grid-template-columns:1fr}}', '.tra-side{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;height:max-content;position:sticky;top:80px}', '.tra-side .ts-hd{padding:14px 16px;border-bottom:1px solid #f0f0f0;background:#f0fdf6}', '.tra-side .ts-list{max-height:66vh;overflow-y:auto;padding:8px}', '.ts-item{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:8px;font-size:13px;color:#4b5563;cursor:pointer;margin-bottom:2px}', '.ts-item:hover{background:#f0fdf6}', '.ts-item.on{background:#065f46;color:#fff;font-weight:600}', '.ts-item.done:not(.on){color:#059669}.ts-item.done:not(.on):after{content:"✓";margin-left:auto;font-weight:700}', '.tra-main{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:26px 30px;min-height:60vh}', '.tra-main h2.ct{font-size:21px;font-weight:800;color:#111;margin:0 0 4px}', '.tra-main .ct-sub{font-size:12.5px;color:#9ca3af;margin-bottom:20px}', '.ch-body{font-size:14px;line-height:1.85;color:#374151}', '.ch-body h2{font-size:16.5px;font-weight:700;color:#065f46;margin:22px 0 10px;border-left:4px solid #10b981;padding-left:10px}', '.ch-body table{border-collapse:collapse;width:100%;margin:12px 0;font-size:13px}', '.ch-body th{background:#f0fdf6;padding:8px 11px;border:1px solid #d1fae5;text-align:left;color:#065f46}', '.ch-body td{padding:8px 11px;border:1px solid #eef2f0}', '.ch-body pre{background:#f8fafc;border-radius:8px;padding:13px 15px;font-size:12.5px;line-height:1.75;overflow-x:auto;white-space:pre-wrap}', '.ch-body .tip{background:#f0fdf6;border-left:4px solid #10b981;border-radius:8px;padding:11px 14px;margin:12px 0;font-size:13px}', '.ch-body .warn{background:#fffbeb;border-left:4px solid #f59e0b;border-radius:8px;padding:11px 14px;margin:12px 0;font-size:13px}', '.ch-body .case{background:#eff6ff;border-left:4px solid #2563eb;border-radius:8px;padding:12px 15px;margin:12px 0;font-size:13px}', /* 题目区 */ '.qz-hd{display:flex;justify-content:space-between;align-items:center;margin:28px 0 14px;padding-top:18px;border-top:2px solid #f0fdf4}', '.qz-hd h3{margin:0;font-size:16px;font-weight:800;color:#111}', '.qb{border:1px solid #e5e7eb;border-left:4px solid #10b981;border-radius:10px;padding:14px 16px;margin-bottom:12px;background:#fafcfa}', '.qb .qt{font-size:14px;font-weight:600;color:#1f2937;margin-bottom:10px}', '.opt{display:block;padding:9px 13px;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:7px;font-size:13.5px;cursor:pointer;transition:.15s;color:#374151;background:#fff}', '.opt:hover{border-color:#10b981;background:#f0fdf6}', '.opt.sel{border-color:#065f46;background:#065f46;color:#fff;font-weight:600}', '.opt.right{border-color:#059669;background:#d1fae5;color:#065f46;font-weight:700}', '.opt.wrong{border-color:#dc2626;background:#fee2e2;color:#991b1b}', '.ana{margin-top:10px;padding:11px 13px;background:#fefce8;border:1px solid #fde68a;border-radius:8px;font-size:13px;color:#713f12;display:none}', '.ana b{color:#92400e}', '.lockbox{text-align:center;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:12px;padding:34px 20px;margin:12px 0}', '.lockbox .lk-ic{font-size:36px;margin-bottom:8px}', '.lockbox p{color:#64748b;font-size:13.5px;margin:0 0 14px}', '.lk-btn{display:inline-block;padding:9px 22px;margin:0 5px;border-radius:8px;font-size:13.5px;font-weight:700;text-decoration:none;color:#fff!important}', '.navbtns{display:flex;justify-content:space-between;margin-top:26px;padding-top:18px;border-top:1px solid #f0f0f0}', '.nb{padding:9px 18px;border-radius:8px;border:1px solid #e5e7eb;background:#fff;color:#374151;font-size:13.5px;cursor:pointer;text-decoration:none!important}', '.nb.pri{background:#065f46;border-color:#065f46;color:#fff}', '.nb:disabled{opacity:.4;cursor:not-allowed}', /* 学习中心 */ '.sc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}', '.sc-box{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px}', '.prog-bar{height:8px;background:#e5e7eb;border-radius:6px;overflow:hidden;flex:1}', '.prog-bar i{display:block;height:100%;background:linear-gradient(90deg,#059669,#10b981)}', '.reg-band{background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #f59e0b;border-radius:12px;padding:14px 20px;margin:20px 0;font-size:13.5px;color:#78350f;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}', '.reg-band a{background:#d97706;color:#fff;padding:8px 18px;border-radius:8px;text-decoration:none!important;font-weight:700;white-space:nowrap}', '.tra-card .tc-btns{padding:0 16px 16px;display:flex;flex-direction:column;gap:8px}', '.tra-card .tc-btns .tc-btn{font-size:12.5px}', '.tc-btn.tc-buy{background:linear-gradient(135deg,#f59e0b,#d97706);font-size:14px}', '.tc-btn.tc-buy s{opacity:.72;font-weight:500;margin-right:2px}', '.tc-btn.tc-outline{background:#fff!important;border:1.5px solid #d1d5db;color:#6b7280!important;font-weight:600}', '/* 课程分类Tab */ .tra-tabs{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap} .tra-tab{padding:10px 22px;border-radius:10px;border:1.5px solid #e5e7eb;background:#fff;color:#6b7280;font-size:14px;font-weight:600;cursor:pointer;transition:.15s} .tra-tab:hover{border-color:#065f46;color:#065f46} .tra-tab.active{background:linear-gradient(135deg,#065f46,#0e7490);color:#fff;border-color:transparent} .tra-tab .tab-count{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:10px;font-size:11px;background:rgba(255,255,255,.2)} .tra-tab:not(.active) .tab-count{background:#f3f4f6;color:#9ca3af} .tra-free-badge{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:700;background:#dbeafe;color:#1d4ed8}','.tc-owned{font-size:12px;color:#059669;font-weight:700;text-align:center;padding:9px;border-radius:8px;background:#f0fdf6;border:1px dashed #10b981}' ].join('\n'); document.head.appendChild(st); /* ── 权限引擎(会员体系对接)── */ function wpUser(){return window.__sxaiWPUser||0} function memLevel(){ var M=window.__sxaiMember; if(M&&M.level)return M.level==='free'&&wpUser()?'user':M.level; /* WP登录无等级标记=注册用户 */ return window.sxaiML||window.sxaiMemberLevel||(wpUser()?'user':'free'); } function isLogin(){return !!wpUser()||memLevel()!=='free'} function fullRight(){ var M=window.__sxaiMember; if(M){return M.traFull===true||['svip','pro','admin','training_pack'].indexOf(M.level)>-1;} return ['svip','pro','admin','training_pack'].indexOf(memLevel())>-1||window.__sxaiTrainingFull===true; } function courseOwn(slug){ var A=window.__sxaiCourseAccess||{}; return !!A[slug]&&parseInt(A[slug])*1000>Date.now(); } function courseFull(slug){return fullRight()||courseOwn(slug)} function previewAna(slug){ if(courseFull(slug))return 999; var l=memLevel(); if(l==='lite')return 3; /* 轻享会员:前3章 */ if(isLogin()&&(l==='free'||l==='user'))return 3; /* 注册免费用户:前3章体验 */ return 0; /* 游客 */ } function anaVisible(slug,chapterNo){ /* 解析可见性:单课/会员全量,登录+前N章体验 */ if(courseFull(slug))return true; if(!isLogin())return false; return chapterNo<=previewAna(slug); } /* ── 状态 ── */ var PERCOURSE={carbon_manager:4028,carbon_verifier:4029,carbon_trader:4030,carbon_consultant:4064}; window.traBuy=function(pid){ if(!isLogin()){ showRegWall('购买课程需要先注册 / 登录','注册免费学员即可购买单课(¥99/年);已注册用户请直接登录后购买。'); return; } if(typeof payNow==='function'){payNow(pid);}else{showRegWall('支付组件加载中','请刷新页面后重试');} }; var S={view:'list',course:null,chIdx:0,tab:'carbon'}; /* ═══ 学习跟踪 ═══ */ var LR={ heartbeatTimer:null, startTime:0, lastDuration:0, realLearners:{}, learnersLoaded:false, statsData:null, isAdmin:false }; /* 检查是否是admin用户 */ function lrCheckAdmin(){ try{ var M=window.__sxaiMember; if(M&&M.level==='admin'){LR.isAdmin=true;return true;} if(window.sxaiML==='admin'||window.sxaiMemberLevel==='admin'){LR.isAdmin=true;return true;} if(wpUser()&&window.__sxaiWPUser&&window.__sxaiWPUser.roles){ if(window.__sxaiWPUser.roles.indexOf('administrator')>-1){LR.isAdmin=true;return true;} } }catch(e){} return false; } /* 发送学习心跳 */ function lrSendHeartbeat(duration){ if(!S.course)return; var c=TRA.courses[S.course]; if(!c)return; var ch=c.chapters[S.chIdx]; var doneN=c.chapters.filter(function(x){return U.done[S.course+'_'+x.no]}).length; var data={ course_key:S.course, chapter_no:ch?ch.no:0, duration:Math.round(duration), progress:doneN, current_chapter:S.chIdx }; try{ fetch('/wp-admin/admin-ajax.php?action=sxai_lr_heartbeat',{ method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify(data), credentials:'same-origin' }).catch(function(e){}); }catch(e){} } /* 启动学习心跳 */ function lrStartHeartbeat(){ lrStopHeartbeat(); LR.startTime=Date.now(); LR.lastDuration=0; LR.heartbeatTimer=setInterval(function(){ var duration=(Date.now()-LR.startTime)/1000-LR.lastDuration; if(duration>=5){ lrSendHeartbeat(duration); LR.lastDuration+=duration; } },30000); } /* 停止学习心跳 */ function lrStopHeartbeat(){ if(LR.heartbeatTimer){ clearInterval(LR.heartbeatTimer); LR.heartbeatTimer=null; } if(LR.startTime>0){ var duration=(Date.now()-LR.startTime)/1000-LR.lastDuration; if(duration>=3){ lrSendHeartbeat(duration); } LR.startTime=0; LR.lastDuration=0; } } /* 页面卸载时上报 */ window.addEventListener('beforeunload',function(){ if(S.view==='course'){ lrStopHeartbeat(); } }); /* 获取真实学习人数 */ function lrLoadLearners(){ if(LR.learnersLoaded)return; try{ fetch('/wp-admin/admin-ajax.php?action=sxai_lr_course_learners',{ credentials:'same-origin' }).then(function(r){return r.json();}).then(function(data){ if(data&&data.success&&data.data&&data.data.learners){ LR.realLearners=data.data.learners; } LR.learnersLoaded=true; }).catch(function(){LR.learnersLoaded=true;}); }catch(e){LR.learnersLoaded=true;} } /* 获取admin统计数据 */ function lrLoadStats(){ if(!LR.isAdmin)return; try{ fetch('/wp-admin/admin-ajax.php?action=sxai_lr_stats',{ credentials:'same-origin' }).then(function(r){return r.json();}).then(function(data){ if(data&&data.success&&data.data){ LR.statsData=data.data; if(S.view==='list')render(); } }).catch(function(){}); }catch(e){} } /* 格式化时长 */ function lrFormatDuration(seconds){ seconds=Math.round(seconds); if(seconds<60)return seconds+'秒'; var m=Math.floor(seconds/60); var s=seconds%60; if(m<60)return m+'分'+(s?s+'秒':''); var h=Math.floor(m/60); m=m%60; return h+'时'+m+'分'; } /* 渲染Admin学习看板 */ function lrRenderStatsBoard(){ var d=LR.statsData; if(!d){ return '
' +'
' +'

📊 学习数据看板(仅管理员可见)

' +'' +'
' +'
数据加载中…点击上方刷新按钮获取最新统计
' +'
'; } var overall=d.overall||{}; var byCourse=d.by_course||[]; var courseRows=''; byCourse.forEach(function(c){ var courseInfo=TRA.courses[c.course_key]; var name=courseInfo?(courseInfo.icon+' '+courseInfo.name):c.course_key; courseRows+='' +''+name+'' +''+c.active_learners+'' +''+lrFormatDuration(c.total_duration)+'' +''+lrFormatDuration(c.avg_duration)+'' +''; }); if(!courseRows){ courseRows='暂无学习记录(累计时长≥1分钟才纳入统计)'; } return '
' +'
' +'

📊 学习数据看板(仅管理员可见)

' +'' +'
' /* 总体统计卡片 */ +'
' +'
' +'
'+(overall.active_learners||0)+'
' +'
有效学习人数
' +'
' +'
'+(overall.registered_users||0)+'
' +'
注册用户
' +'
' +'
'+(overall.visitors||0)+'
' +'
游客学习
' +'
' +'
'+lrFormatDuration(overall.total_duration||0)+'
' +'
累计学习时长
' +'
' /* 分课程统计表 */ +'
' +'' +'' +'' +'' +'' +'' +''+courseRows+'
课程学习人数累计时长人均时长
' +'
' +'
💡 统计规则:累计学习时长低于1分钟的记录不纳入学习人数统计;数据每30秒自动上报一次
' +'
'; } /* 课程分类映射 */ var CARBON_COURSES=['carbon_manager','carbon_verifier','carbon_trader','carbon_consultant']; var DIGITAL_COURSES=['ai_product_manager']; function getCoursesByTab(tab){return tab==='digital'?DIGITAL_COURSES:CARBON_COURSES;} window.switchTab=function(tab){S.tab=tab;render();} function uKey(){return 'tra_u_'+(wpUser()||'anon')} function loadU(){try{return JSON.parse(localStorage.getItem(uKey())||'{}')}catch(e){return{}}} function saveU(d){try{localStorage.setItem(uKey(),JSON.stringify(d))}catch(e){}} var U=loadU(); U.done=U.done||{};U.ans=U.ans||{};U.err=U.err||[]; /* ── 渲染 ── */ function esc(s){return String(s==null?'':s).replace(/&/g,'&').replace(/🌱 能碳管理'+carbonCount+'门' +'
💡 数字化转型'+digitalCount+'门免费
' +''; var cards=''; var courseKeys=getCoursesByTab(S.tab); for(var i=0;i-1; cards+='
' +'
'+c.icon+(isDigital?'免费':'')+'
' +'

'+c.name+'

'+c.brief+'

' +'
📑 '+c.chapters.length+'章⏱ '+c.hours+'学时👥 '+getLearners(k)+'人已学习'+(doneN?'已学'+doneN+'/'+c.chapters.length+'':'')+'
' +'
' +(isDigital ?'
✓ 数字化转型课程全部免费
' :(courseFull(k) ?'
✓ 已拥有本课程完整权益
' :'' +'')) +'' +'
'; } var loginBand=isLogin() ?'
🟢 已登录('+(fullRight()?'完整培训权益':memLevel()==='lite'?'轻享·前3章解析':'基础·解析需升级')+')|学习数据自动保存中
' :'
🎁 注册免费学员:解锁前3章习题解析 + 错题本 + 学习进度云保存。会员可解锁全部章节解析与模拟试卷。免费注册
'; var heroTitle=S.tab==='digital'?'💡 数字化转型课程':'📝 职业培训课程'; var heroDesc=S.tab==='digital' ?'AI产品经理 · 企业Agent搭建 · 工业物联网实践 三大数字化转型实战课程|全部免费学习,助力制造业数字化人才培养' :'碳排放管理员 · 核查员 · 交易员 · 碳咨询顾问 四大双碳岗位系统培训|图文教程 + 章节练习 + 智能错题本'; app.innerHTML='
' +'

'+heroTitle+'

'+heroDesc+'

' +loginBand +tabsHtml +'
'+cards+'
' /* ═══ Admin学习看板(仅管理员可见)═══ */ +(LR.isAdmin ? lrRenderStatsBoard() : '') +'
' +'

📖 使用说明与权益对照

' +'' +'' +'' +'' +'' +'' +'
能力游客注册用户专业/SVIP会员
能碳管理课程正文第1章试读✅✅
数字化转型课程✅ 全部免费✅ 全部免费✅ 全部免费
单课购买 ¥99/年—✅ 按课程专业/SVIP 含全部
章节做题✅✅✅
答案解析🔒前3章全部
进度/错题本/完成徽章🔒✅✅
' +'

💡 会员方案:查看智研社会员权益|企业批量培训账号请联系客服

' +'
' +'
'; /* ═══ 强制两列布局:JS直接设置元素样式,不依赖CSS注入 ═══ */ try{ var _box=app.querySelector('.tra-cards'); if(_box){ _box.style.fontSize='0'; var _mob=(window.innerWidth||document.documentElement.clientWidth)<=760; var _cls=_box.querySelectorAll('.tra-card'); for(var _k=0;_k<_cls.length;_k++){ var _d=_cls[_k]; _d.style.cssText='display:'+(_mob?'block':'inline-block')+';width:'+(_mob?'100%':'49%')+';vertical-align:top;box-sizing:border-box;margin:'+(_mob?'0 0 14px':'0 0.5% 16px')+';font-size:14px;'+_d.style.cssText; } } }catch(e){} /* 根据tab显示/隐藏底部说明 */ try{ var cb=document.getElementById('carbon-benefit'); var db=document.getElementById('digital-benefit'); if(cb)cb.style.display=S.tab==='carbon'?'block':'none'; if(db)db.style.display=S.tab==='digital'?'block':'none'; }catch(e){} } /* ═══ 学习页 ═══ */ function renderLearn(){ var c=TRA.courses[S.course], ch=c.chapters[S.chIdx]; var isDigitalCourse=DIGITAL_COURSES.indexOf(S.course)>-1; if(!isLogin()&&S.chIdx>2&&!isDigitalCourse){ app.innerHTML='
🔐

第'+ch.no+'章起需登录学习

游客可试读前3章。注册免费解锁全部正文与前3章解析;本课程单独年卡 ¥99 立即解锁全部解析、模拟试卷与结业证书。

' +'免费注册 / 登录' +'单课解锁 ¥99/年' +'

返回课程列表 →

'; window.scrollTo(0,0);return; } var doneList=''; c.chapters.forEach(function(x,i){ doneList+='
'+(i+1)+'. '+x.title+'
'; }); app.innerHTML='
' +'' +'
' +'

第'+ch.no+'章 '+ch.title+'

' +'
'+c.name+' · 章节 '+(S.chIdx+1)+'/'+c.chapters.length+'
' +'
'+ch.content+'
' +renderQuiz(c,ch) +'
'; window.scrollTo(0,0); markRead(); } /* 标记已读并保存最近位置(登录用户) */ function markRead(){ var key=S.course+'_'+TRA.courses[S.course].chapters[S.chIdx].no; if(isLogin()){ if(!U.done[key]){U['read_'+key]=1;} U.last=U.last||{};U.last[S.course]=S.chIdx; saveU(U); } } function renderQuiz(c,ch){ if(!ch.questions||!ch.questions.length)return ''; var html='

📝 本章练习('+ch.questions.length+'题)

'; ch.questions.forEach(function(q,qi){ html+='
'+(qi+1)+'. '+esc(q.q)+'
'; for(var k in q.o)html+=''+k+'. '+esc(q.o[k])+''; html+='
'+(!isLogin()?'🔒 注册后可见解析':'✔ 正确答案:'+q.a+' ')+''+(anaVisible(S.course,ch.no)?esc(q.an)||'':(isLogin()?'升级会员解锁全部解析':'免费注册解锁解析'))+'
'; }); html+='
'+(isLogin()?(fullRight()||memLevel()==='lite'?'':'(解析:你当前的会员等级可看前3章)'):'提交后需注册才能查看对错与解析')+'
'; return html; } window.pickOpt=function(el,k){ var qb=el.closest('.qb'); if(!qb||qb.getAttribute('data-locked'))return; var q=curQ(qb); if(!q)return; if(q&&q.t===2){el.classList.toggle('sel')} else{qb.querySelectorAll('.opt').forEach(function(o){o.classList.remove('sel')});el.classList.add('sel')} }; function curQ(qb){ var c=TRA.courses[S.course]; return c.chapters[S.chIdx].questions[parseInt(qb.getAttribute('data-q'))]; } window.submitQuiz=function(){ var c=TRA.courses[S.course],ch=c.chapters[S.chIdx],key=S.course+'_'+ch.no; var box=document.getElementById('qzBox');if(!box)return; var rightN=0,total=ch.questions.length,ansRecord=[],wrongQs=[]; box.querySelectorAll('.qb').forEach(function(qb){ var qi=parseInt(qb.getAttribute('data-q')),q=ch.questions[qi]; var sel=[].map.call(qb.querySelectorAll('.opt.sel'),function(o){return o.getAttribute('data-k')}).sort().join(''); var correct=sel===q.a; if(correct)rightN++; else wrongQs.push({cn:ch.no,qt:q.q}); ansRecord.push({no:key+'_'+qi,sel:sel,right:correct}); qb.setAttribute('data-locked','1'); qb.querySelectorAll('.opt').forEach(function(o){ var kk=o.getAttribute('data-k'); if(q.a.indexOf(kk)>-1)o.classList.add('right'); else if(o.classList.contains('sel'))o.classList.add('wrong'); }); var ana=qb.querySelector('.ana'),txt=qb.querySelector('.anatxt'); /* 解析权限:游客→锁定框;登录看等级 */ if(!isLogin()){ txt.innerHTML='🔐 免费注册解锁本题解析(30秒完成)'; ana.style.display='block';return; } if(anaVisible(S.course,ch.no)){txt.innerHTML=(sel?('你的答案:'+sel+' '):'未作答 ')+'✔ 正确答案:'+q.a+'|'+esc(q.an||'')} else{txt.innerHTML='本章为第'+ch.no+'章,超出当前会员解析范围。升级专业会员/购买培训专项包 或 单课解锁本课程 ¥99/年';} ana.style.display='block'; }); /* 存档(仅登录) */ if(isLogin()){ ansRecord.forEach(function(r){U.ans[r.no]={sel:r.sel,right:r.right}}); wrongQs.forEach(function(w){var k=key+'_'+w.qt;if(U.err.indexOf(k)<0)U.err.push(k)}); U.done[key]=true;U.last=U.last||{};U.last[S.course]=Math.min(S.chIdx+1,c.chapters.length-1); if(S.chIdx===c.chapters.length-1)U['badge_'+S.course]=Date.now(); saveU(U); document.getElementById('qzState').innerHTML='成绩:'+rightN+'/'+total+' ✅已存档'+(wrongQs.length?' 错题已进错题本':''); }else{ document.getElementById('qzState').innerHTML=''+rightN+'/'+total+' 正确'; } }; window.finishCourse=function(){ var c=TRA.courses[S.course]; if(isLogin()){U['badge_'+S.course]=Date.now();saveU(U); app.innerHTML='
🎉

恭喜完成《'+c.name+'》全部'+c.chapters.length+'章!

结业徽章已收入学习中心。建议继续学习其他岗位课程。

返回课程列表 查看学习中心
'; }else{ showRegWall('完成徽章与结业记录需要保存到学习账户','注册后本课程学习记录、成绩与徽章永久保留,换设备也不丢'); } }; function showRegWall(title,desc){ app.innerHTML='
'; } /* ═══ 学习中心 ═══ */ function renderCenter(){ if(!isLogin()){showRegWall('学习中心需要登录','登录后可查看学习进度、错题本与完成徽章——你的私人碳岗位学习档案');return} var rows='',errRows=''; for(var k in TRA.courses){ var c=TRA.courses[k],dn=c.chapters.filter(function(ch){return U.done[k+'_'+ch.no]}).length,pct=Math.round(dn/c.chapters.length*100); rows+='
'+c.icon+' '+c.name+'
'+dn+'/'+c.chapters.length+(pct===100?' 🎓':'')+'
继续
'; } U.err.forEach(function(id){ for(var k in TRA.courses){TRA.courses[k].chapters.forEach(function(ch){ ch.questions.forEach(function(q,qi){ if(id===k+'_'+ch.no+'_'+qi)errRows+='
📌 第'+ch.no+'章 '+esc(q.q)+'
正确答案:'+q.a+'|'+esc((q.an||'').slice(0,40))+'…
'; }); });} }); if(!errRows)errRows='
暂无错题,继续保持!答错的题会自动归集到这里。
'; var badges=Object.keys(U).filter(function(x){return x.indexOf('badge_')===0}).length; var upsell=fullRight()?'':'
🔓 升级解锁:全部章节解析 + 模拟试卷 + PDF讲义 + 结业证书(年度专业会员¥699 全能版 / 培训专项包 更划算)升级解锁
'; app.innerHTML='

📊 我的学习中心

' +'

我的课程进度

'+rows +'
🎓 完成徽章:'+badges+'/3 门
' +'

📕 错题本('+U.err.length+')

'+errRows+'
' +(U.err.length?'':'') +'
'+upsell +'
🏢 企业培训需求?数晰提供 MRV 碳管理系统落地 + 企业内训打包方案,联系我们获取方案 →
' +'
← 返回课程列表
'; } window.clearErr=function(){U.err=[];saveU(U);render()}; /* ── 课程大纲弹窗 ── */ window.showOutline=function(slug){ var c=TRA.courses[slug];if(!c)return; var lis=c.chapters.map(function(ch){return '
  • '+esc(ch.title)+'
  • '}).join(''); var w=document.getElementById('tra-ol-wrap'); if(w){w.parentNode.removeChild(w);} var wrap=document.createElement('div'); wrap.id='tra-ol-wrap'; wrap.innerHTML='
    ' +'
    ' +'
    ' +'

    '+c.icon+' '+c.name+' · 课程大纲

    ' +'×
    ' +'
    '+c.chapters.length+'章 · '+c.hours+'学时 · 图文教程 + 章节练习 + 智能解析
    ' +'
      '+lis+'
    ' +'
    ' +'' +'' +'
    '; document.body.appendChild(wrap); }; /* 启动 */ window.addEventListener('hashchange',route); /* 学习跟踪初始化 */ lrCheckAdmin(); lrLoadLearners(); if(LR.isAdmin){lrLoadStats();} /* 等 TRA 数据就绪后再渲染,避免与数据文件加载产生竞态导致 TRA is not defined */ var _traBoot=Date.now(); function _routeWhenReady(){ if(window.TRA&&TRA.courses){route();} else if(Date.now()-_traBoot<20000){setTimeout(_routeWhenReady,150);} } _routeWhenReady(); })();