data.js · 约 10342 字符
1/* 拇指校友活动网 · 演示数据(共享) */2var ME = { name:'李响', year:'2019级', major:'软件工程', city:'上海', no:'XY2019-0487' };34var ACTIVITIES = [5 { id:'a1', emoji:'🎓', grad:'linear-gradient(135deg,#6366f1,#8b5cf6)', title:'2026 校友返校日 · 秩年庆典',6 cat:'线下', tag:'热门', time:'2026-09-20 09:00', location:'母校·第一运动场', fee:0, limit:500, joined:326,7 host:'校友总会', desc:'十年一聚,归来仍是少年。校庆日当天开放校史馆、食堂怀旧套餐、班级合影墙,晚间有草坪音乐会。',8 agenda:[9 {t:'09:00', x:'签到领取校友卡 & 纪念礼包'},10 {t:'10:00', x:'秩年大会 · 校长致辞 & 杰出校友颁奖'},11 {t:'12:00', x:'食堂怀旧套餐 & 班级自由聚餐'},12 {t:'15:00', x:'校史馆开放 · 班级合影墙打卡'},13 {t:'19:30', x:'中心草坪音乐会(凭校友卡入场)'}14 ],15 gallery:['🏫','🎶','🍱','📸'],16 joinedNames:['王','陈','刘','赵','孙'],17 comments:[18 {u:'王琳', t:'终于等到返校日,已拉好班级群!', lk:24},19 {u:'陈昊', t:'草坪音乐会太期待了,去年就很棒', lk:11}20 ] },21 { id:'a2', emoji:'💼', grad:'linear-gradient(135deg,#0ea5e9,#3b82f6)', title:'校友企业秋招内推专场',22 cat:'线上', tag:'招聘', time:'2026-08-15 19:30', location:'腾讯会议(报名后发链接)', fee:0, limit:1000, joined:742,23 host:'职业发展中心', desc:'30+ 校友企业开放内推岗位,覆盖互联网、金融、制造。HR 在线答疑,简历直投通道。',24 agenda:[25 {t:'19:30', x:'校友企业岗位总览'},26 {t:'20:00', x:'大厂 / 独角兽内推经验分享'},27 {t:'20:40', x:'简历直投 & 答疑'}28 ],29 gallery:['💻','📝','🤝'],30 joinedNames:['周','吴','郑','冯','蒋'],31 comments:[ {u:'周敏', t:'内推通道对转行的友好吗?', lk:8} ] },32 { id:'a3', emoji:'🏀', grad:'linear-gradient(135deg,#f59e0b,#f97316)', title:'校友篮球友谊赛 · 院系对抗',33 cat:'线下', tag:'运动', time:'2026-08-08 14:00', location:'母校东区体育馆', fee:20, limit:60, joined:48,34 host:'体育校友分会', desc:'毕业多年,球场见真章!按入学年份组队,报名费含球衣 + 饮用水,冠军有定制奖杯。',35 agenda:[36 {t:'14:00', x:'热身 & 分组'},37 {t:'14:30', x:'小组循环赛'},38 {t:'16:30', x:'决赛 & 颁奖'}39 ],40 gallery:['🏀','🏆','👕'],41 joinedNames:['许','何','吕','施','张'],42 comments:[ {u:'何磊', t:'球衣尺码能选吗?', lk:3} ] },43 { id:'a4', emoji:'📚', grad:'linear-gradient(135deg,#10b981,#34d399)', title:'校友读书会 · 第 12 期《置身事内》',44 cat:'线下', tag:'讲座', time:'2026-08-22 15:00', location:'母校图书馆二楼沙龙区', fee:0, limit:30, joined:27,45 host:'校友读书会', desc:'每月一期,本期共读《置身事内》。现场有主讲 + 自由讨论,提供茶歇。',46 agenda:[47 {t:'15:00', x:'主讲领读(40min)'},48 {t:'15:50', x:'分组讨论'},49 {t:'16:40', x:'自由交流 & 合影'}50 ],51 gallery:['📖','☕','🗣️'],52 joinedNames:['孔','曹','严','华','金'],53 comments:[ {u:'曹颖', t:'第一次参加,求带~', lk:5} ] },54 { id:'a5', emoji:'🌱', grad:'linear-gradient(135deg,#22c55e,#16a34a)', title:'校友公益 · 乡村支教志愿者招募',55 cat:'线下', tag:'公益', time:'2026-10-01 08:00', location:'云南 · 怒江(统一集合出发)', fee:0, limit:20, joined:14,56 host:'公益校友分会', desc:'为期 7 天的乡村支教,面向有教学 / 特长背景的校友。交通住宿由校友基金会支持。',57 agenda:[58 {t:'D1', x:'昆明集合 · 行前培训'},59 {t:'D2-D6', x:'驻点支教 & 家访'},60 {t:'D7', x:'返程 & 复盘'}61 ],62 gallery:['🏞️','🧒','❤️'],63 joinedNames:['魏','陶','姜','戚','谢'],64 comments:[ {u:'陶然', t:'需要自备什么吗?', lk:2} ] },65 { id:'a6', emoji:'🍻', grad:'linear-gradient(135deg,#ec4899,#f43f5e)', title:'周五校友 Happy Hour · 行业社交',66 cat:'线下', tag:'聚会', time:'2026-08-01 19:00', location:'外滩 · 校友驿站酒吧', fee:50, limit:40, joined:33,67 host:'上海校友分会', desc:'轻松的周五夜晚,认识同城校友。含一杯欢迎酒 + 小食,按行业分桌方便交流。',68 agenda:[69 {t:'19:00', x:'签到 & 欢迎酒'},70 {t:'19:30', x:'行业破冰自我介绍'},71 {t:'20:30', x:'自由社交'}72 ],73 gallery:['🍸','🎤','💬'],74 joinedNames:['邹','喻','柏','水','窦'],75 comments:[ {u:'喻晨', t:'一个人去会尴尬吗哈哈', lk:9} ] },76 { id:'a7', emoji:'🎤', grad:'linear-gradient(135deg,#8b5cf6,#6366f1)', title:'校友创业路演夜 · 项目相亲会',77 cat:'线上', tag:'热门', time:'2026-09-05 20:00', location:'视频号直播', fee:0, limit:2000, joined:988,78 host:'创业校友俱乐部', desc:'5 个校友创业项目路演,投资人校友现场点评。想找合伙人 / 融资的别错过。',79 agenda:[80 {t:'20:00', x:'项目路演(每个 8min)'},81 {t:'20:50', x:'投资人点评'},82 {t:'21:20', x:'自由对接'}83 ],84 gallery:['🚀','💡','📈'],85 joinedNames:['章','云','苏','潘','葛'],86 comments:[ {u:'苏野', t:'想报名路演怎么操作?', lk:6} ] },87 { id:'a8', emoji:'📷', grad:'linear-gradient(135deg,#06b6d4,#22d3ee)', title:'校友摄影采风 · 城市日落计划',88 cat:'线下', tag:'运动', time:'2026-08-16 17:00', location:'滨江步道 · 灯塔集合', fee:0, limit:25, joined:19,89 host:'摄影校友社团', desc:'带上相机 / 手机,一起拍城市日落。结束后线上投票评出最佳作品,有实体明信片奖励。',90 agenda:[91 {t:'17:00', x:'集合 & 分组取景'},92 {t:'17:30', x:'黄金时刻拍摄'},93 {t:'18:30', x:'作品互评'}94 ],95 gallery:['🌇','📸','🏙️'],96 joinedNames:['奚','范','彭','鲁','韦'],97 comments:[ {u:'范舟', t:'手机党能参加吗', lk:4} ] }98];99100var FEED = [101 { id:'f1', name:'王琳', year:'2018级 新闻', av:'#6366f1', time:'2 小时前',102 text:'昨天返校日彩排现场太燃了!倒计时 22 天,2018 级的同学们赶紧报名啊,班级合影墙已经留好位置了 🎓',103 imgs:['🏫','🎉','📸'], likes:42, liked:false, cmts:5 },104 { id:'f2', name:'陈昊', year:'2017级 计算机', av:'#0ea5e9', time:'5 小时前',105 text:'秋招内推专场已帮 3 个学弟拿到面试,校友网络真的香。今年岗位比去年多一倍,互联网 + 硬科技都有。',106 imgs:['💼','🤝'], likes:67, liked:true, cmts:12 },107 { id:'f3', name:'何磊', year:'2019级 体育', av:'#f59e0b', time:'昨天',108 text:'篮球友谊赛报名快满了!还差 12 人,会打球的校友速来,冠军奖杯在线等 🏆',109 imgs:['🏀','🏆'], likes:31, liked:false, cmts:8 },110 { id:'f4', name:'陶然', year:'2020级 教育', av:'#10b981', time:'昨天',111 text:'刚确认去乡村支教了,人生第一次当老师,有点紧张又期待。感谢校友基金会支持 ❤️',112 imgs:['🏞️','🧒'], likes:88, liked:true, cmts:21 }113];114115var ALUMNI = [116 { name:'王琳', year:'2018级', major:'新闻学', city:'北京', tag:'媒体', av:'#6366f1', sign:'前校友会宣传部长,现某央媒记者。' },117 { name:'陈昊', year:'2017级', major:'计算机', city:'深圳', tag:'互联网', av:'#0ea5e9', sign:'算法工程师,乐于内推 & 技术交流。' },118 { name:'何磊', year:'2019级', major:'体育教育', city:'广州', tag:'运动', av:'#f59e0b', sign:'篮球校队队长,组织各类球赛。' },119 { name:'陶然', year:'2020级', major:'教育学', city:'成都', tag:'公益', av:'#10b981', sign:'乡村支教志愿者,公益分会成员。' },120 { name:'周敏', year:'2016级', major:'金融', city:'上海', tag:'金融', av:'#ec4899', sign:'投行 VP,关注校友创业投资。' },121 { name:'李响', year:'2019级', major:'软件工程', city:'上海', tag:'互联网', av:'#8b5cf6', sign:'前端工程师,本 Demo 体验官。' },122 { name:'刘洋', year:'2015级', major:'机械', city:'杭州', tag:'制造', av:'#22c55e', sign:'智能制造创业者,欢迎对接产线资源。' },123 { name:'赵雪', year:'2021级', major:'设计', city:'上海', tag:'设计', av:'#f43f5e', sign:'UI/UX 设计师,校友视觉担当。' }124];125126/* 工具函数 */127function A_GET(id){ for (var i=0;i<ACTIVITIES.length;i++){ if(ACTIVITIES[i].id===id) return ACTIVITIES[i]; } return null; }128function A_BY_CAT(cat){129 if (!cat || cat==='全部') return ACTIVITIES;130 if (cat==='线上') return ACTIVITIES.filter(function(a){ return a.cat==='线上'; });131 if (cat==='线下') return ACTIVITIES.filter(function(a){ return a.cat==='线下'; });132 if (cat==='热门') return ACTIVITIES.filter(function(a){ return a.tag==='热门'; });133 return ACTIVITIES.filter(function(a){ return a.tag===cat; });134}135function fmtFee(a){ return a.fee>0 ? ('¥'+a.fee) : '免费'; }136function param(name){137 var m = new RegExp('[?&]'+name+'=([^&]*)').exec(location.search);138 return m ? decodeURIComponent(m[1]) : '';139}140/* 我的活动存储(localStorage 跨页共享) */141function myKey(){ return 'mu_alumni_my'; }142function getMy(){143 try { return JSON.parse(localStorage.getItem(myKey())) || { signup:[], publish:[], history:[] }; }144 catch(e){ return { signup:[], publish:[], history:[] }; }145}146function setMy(o){ localStorage.setItem(myKey(), JSON.stringify(o)); }147function toggleSign(id){148 var m = getMy();149 var i = m.signup.indexOf(id);150 if (i>=0){ m.signup.splice(i,1); } else { m.signup.push(id); }151 setMy(m); return i<0;152}153function isSigned(id){ return getMy().signup.indexOf(id) >= 0; }154function toast(msg){155 var t = document.getElementById('toast');156 if (!t){ t = document.createElement('div'); t.id='toast'; t.className='toast'; document.body.appendChild(t); }157 t.textContent = msg; t.classList.add('show');158 clearTimeout(t._t); t._t = setTimeout(function(){ t.classList.remove('show'); }, 1600);159}160function esc(s){ return String(s).replace(/[&<>"]/g, function(c){ return {'&':'&','<':'<','>':'>','"':'"'}[c]; }); }161