培训签到表生成器
触发词
签到表、培训签到、会议签到、扫码签到、报到
适用场景
- 培训/讲座现场签到
- 会议报到
- 活动入场登记
不适用场景(边界)
- 需要人脸/定位核验
- 需要实时同步到服务端
工作流(输入 → 产出)
- 确认活动名称
- 生成自包含单文件 HTML(姓名+自动时间+列表+导出)
- 自检零外链/移动端
- 交付并说明转公网后扫码签到
HTML 产出规范(强制)
- 自包含单文件:所有 CSS 写在
<style>、所有 JS 写在<script>,零外部 CDN / 零外链字体 / 零外链脚本,双击即开。 - 多端可开:Windows/Mac/iOS Safari/安卓 Chrome 直接打开;移动端响应式(
@media已内置)。 - 本地持久化:需保存的数据用
localStorage(键名带skill_z-signin-html前缀),刷新不丢;不依赖任何后端。 - 可打印:含
@media print隐藏按钮、保留内容,便于导出 PDF / 纸质。 - 公网策略(A 分层):默认只产出自包含单文件(已多端可用);仅当用户明确说"要链接 / 发公网"时,才调用
本地HTML公网发布器(z-html-public-deploy)部署出 URL——不得擅自公开。
输出模板(直接生成的 HTML 骨架,按需填充)
<!doctype html><html lang="zh"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>签到</title><style>
:root{--p:#2563eb;--p2:#1e40af;--bg:#f7f8fa;--card:#fff;--t:#1f2937;--m:#6b7280;--ok:#16a34a;--w:#d97706;--b:#e5e7eb;}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'PingFang SC','Microsoft YaHei',sans-serif;background:var(--bg);color:var(--t);line-height:1.6;padding:16px}
.wrap{max-width:880px;margin:0 auto;background:var(--card);border-radius:14px;padding:22px;box-shadow:0 4px 20px rgba(0,0,0,.06)}
h1{font-size:22px;margin-bottom:6px}
h2{font-size:17px;margin:18px 0 8px;color:var(--p2)}
p.lead{color:var(--m);margin-bottom:14px}
label{display:block;font-size:14px;margin:10px 0 4px;font-weight:600}
input,select,textarea{width:100%;padding:10px;border:1px solid var(--b);border-radius:8px;font-size:14px;font-family:inherit;background:#fff}
textarea{min-height:80px;resize:vertical}
button{background:var(--p);color:#fff;border:0;border-radius:8px;padding:10px 18px;font-size:14px;cursor:pointer;margin:8px 6px 0 0}
button.sec{background:#fff;color:var(--p);border:1px solid var(--p)}
button:hover{opacity:.92}
.row{display:flex;gap:10px;flex-wrap:wrap}
.row>div{flex:1;min-width:160px}
.card{border:1px solid var(--b);border-radius:10px;padding:12px;margin:8px 0;background:#fff}
.grid{display:grid;gap:8px}
table{width:100%;border-collapse:collapse;margin:10px 0;font-size:13px}
th,td{border:1px solid var(--b);padding:8px;text-align:left}
th{background:#eef2ff}
.tag{display:inline-block;background:#eef2ff;color:var(--p2);border-radius:6px;padding:2px 8px;font-size:12px;margin:2px}
.note{background:#fffbeb;border:1px solid #fde68a;color:#92400e;padding:10px;border-radius:8px;font-size:13px;margin:10px 0}
ul{margin:6px 0 6px 18px}
@media(max-width:560px){.wrap{padding:14px}body{padding:8px}}
@media print{body{background:#fff}.wrap{box-shadow:none;max-width:100%}button{display:none}}
</style></head><body><div class="wrap"><h1>培训签到</h1><p class="lead">输入姓名即签到,时间自动记录。</p><label>姓名</label><input id="nm" placeholder="请输入姓名"><button onclick="sign()">签到</button><button class="sec" onclick="exportCSV()">导出名单</button><div id="list" class="card"></div></div><script>var key='skill_z_signin_html';function sign(){var n=document.getElementById('nm').value.trim();if(!n)return;var all=JSON.parse(localStorage.getItem(key)||'[]');all.push({n:n,t:new Date().toLocaleString()});localStorage.setItem(key,JSON.stringify(all));document.getElementById('nm').value='';show();}function show(){var all=JSON.parse(localStorage.getItem(key)||'[]');document.getElementById('list').innerHTML='已签到 '+all.length+' 人<ul>'+all.map(r=>'<li>'+r.n+' — '+r.t+'</li>').join('')+'</ul>';}function exportCSV(){var all=JSON.parse(localStorage.getItem(key)||'[]');var c='姓名,时间\n'+all.map(r=>r.n+','+r.t).join('\n');var b=new Blob([c],{type:'text/csv'});var a=document.createElement('a');a.href=URL.createObjectURL(b);a.download='签到.csv';a.click();}show();</script></body></html>
使用示例
输入:明天新员工培训要个签到页,自动记时间能导出
产出:生成 signin.html,输入姓名即打卡,导出 CSV 名单
红线(不可违反)
- 禁止外部依赖
- 禁止伪造签到时间
- 禁止默认上传
与其他技能区分
区别于「巡检记录(A2)」(检查项勾选)——本技能只记“谁、何时到”。
大白话介绍
培训开场让大家打开网页输名字就签到,时间自动记,结束导出名单发 HR,零纸质。