--- uuid: "24e184f0-ee88-477c-b474-4821c159e234" type: "scenario" title: "人员管理系统应用方案" sidebar_position: 6 sidebar_label: "应用方案" sidebar_class_name: sidebar-item-hidden displayed_sidebar: null description: "人员管理系统是基于一人一码的人员信息数字化方案:给每个人生成专属二维码,印在安全帽贴、工牌、工作服胸卡或身份牌上,扫码查看身份、工种、资质证件与安全教育,信息后台随时更新、不用重新制卡。适用于建筑施工、能源采矿等施工人员实名进场,也用于员工工牌、教育家政等人员资历展示。" keywords: - 人员管理系统 - 人员管理二维码 - 一人一码人员管理 - 施工人员实名二维码 - 安全帽贴二维码 - 人员工牌二维码 toc_cta: desc: "覆盖人员管理各场景的现成模板\n可快速修改复用" buttonWidth: "60%" buttons: - text: "选择模板生码" url: "https://cli.im/template/category/24" --- import { useState } from 'react'; import { IdCard, ShieldCheck, RefreshCw, Archive, ImageIcon } from 'lucide-react'; export const PreviewTabs = ({ defaultActiveKey, items }) => { const [activeKey, setActiveKey] = useState(defaultActiveKey); return (
{items.map((item) => ( ))}
{items.map((item) => (
{item.children}
))}
); }; export const previewRow = { display: 'flex', alignItems: 'stretch', gap: 4 }; export const previewCol = { flex: '1 1 0', minWidth: 0, display: 'flex', flexDirection: 'column' }; export const stepTitle = { fontSize: 16, fontWeight: 600, marginBottom: 6, textAlign: 'center', color: 'var(--ifm-color-emphasis-900)' }; export const stepNum = { marginRight: 8, fontWeight: 700, color: '#166bc7' }; export const stepDesc = { color: 'var(--ifm-color-emphasis-700)', fontSize: 13, marginBottom: 16, textAlign: 'center', whiteSpace: 'nowrap' }; export const imageWrap = { flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center', minHeight: 0 }; export const stepImg = { maxWidth: 220, maxHeight: 320, borderRadius: 4, display: 'block', margin: '0 auto' }; export const chevronStyle = { alignSelf: 'center', color: 'var(--ifm-color-emphasis-500)', flex: '0 0 auto', padding: '0 8px', display: 'flex', alignItems: 'center' }; export const Step = ({ num, title, desc, src, alt, imgStyle }) => (
{num}{title}
{desc}
{alt}
); export const ledgerWrap = { border: '1px solid var(--ifm-color-emphasis-200)', borderRadius: 8, overflow: 'hidden', background: 'var(--ifm-background-surface-color)' }; export const ledgerBar = { display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '12px 16px', borderBottom: '1px solid var(--ifm-color-emphasis-200)', fontSize: 14 }; export const ledgerTable = { width: '100%', borderCollapse: 'collapse', fontSize: 13 }; export const ledgerTh = { textAlign: 'left', padding: '10px 14px', color: 'var(--ifm-color-emphasis-700)', fontWeight: 600, background: 'var(--ifm-color-emphasis-100)', whiteSpace: 'nowrap', borderBottom: '1px solid var(--ifm-color-emphasis-200)' }; export const ledgerTd = { padding: '10px 14px', color: 'var(--ifm-color-emphasis-800)', borderBottom: '1px solid var(--ifm-color-emphasis-200)', whiteSpace: 'nowrap' }; export const avatarCircle = { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 26, height: 26, borderRadius: '50%', background: '#dde9f7', color: '#166bc7', fontSize: 12, fontWeight: 600, marginRight: 8, verticalAlign: 'middle' }; export const passBadge = { display: 'inline-block', padding: '2px 8px', background: '#e6f7ef', color: '#0e7c3a', borderRadius: 10, fontSize: 12, fontWeight: 500 }; export const photoCell = { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 28, height: 28, borderRadius: '50%', background: 'var(--ifm-color-emphasis-200)', color: 'var(--ifm-color-emphasis-600)' }; export const PEOPLE = [ { no: 'SG-A01', code: 'M549-Z1', name: '张建国', role: '电工', team: '桩基班', date: '2023-11-22', idn: '330***********0013', phone: '138****0011', edu: '通过', n: 21 }, { no: 'SG-A02', code: 'M549-Z2', name: '李伟', role: '焊工', team: '钢筋班', date: '2023-11-22', idn: '330***********0027', phone: '139****0022', edu: '通过', n: 21 }, { no: 'SG-B05', code: 'M549-Z3', name: '王海', role: '叉车工', team: '模板班', date: '2022-03-10', idn: '340***********1539', phone: '137****0033', edu: '通过', n: 8 }, { no: 'SG-B06', code: 'M549-Z4', name: '赵强', role: '架子工', team: '钢筋班', date: '2023-01-20', idn: '130***********0816', phone: '136****0044', edu: '通过', n: 19 }, { no: 'SG-C03', code: 'M549-Z5', name: '陈明', role: '安全员', team: '桩基班', date: '2023-11-22', idn: '330***********0055', phone: '135****0055', edu: '通过', n: 24 }, { no: 'SG-D02', code: 'M549-Z6', name: '刘伟', role: '普工', team: '模板班', date: '2022-12-01', idn: '510***********7012', phone: '134****0066', edu: '未通过', n: 22 }, { no: 'SG-E01', code: 'M549-Z7', name: '孙磊', role: '信号工', team: '桩基班', date: '2023-05-09', idn: '370***********0077', phone: '133****0077', edu: '通过', n: 12 }, ]; export const consoleWrap = { display: 'flex', border: '1px solid var(--ifm-color-emphasis-200)', borderRadius: 8, overflow: 'hidden', background: 'var(--ifm-background-surface-color)' }; export const treePanel = { flex: '0 0 132px', borderRight: '1px solid var(--ifm-color-emphasis-200)', padding: '12px 0', background: 'var(--ifm-color-emphasis-100)', fontSize: 13 }; export const treeTitle = { padding: '0 14px 8px', color: 'var(--ifm-color-emphasis-600)', fontSize: 12 }; export const treeItem = { padding: '8px 14px', color: 'var(--ifm-color-emphasis-800)' }; export const treeItemActive = { padding: '8px 14px', background: '#e8f1fb', color: '#166bc7', fontWeight: 600, borderRight: '2px solid #166bc7' }; export const consolePanel = { flex: 1, minWidth: 0, display: 'flex', flexDirection: 'column' }; export const consoleBar = { display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '12px 14px', borderBottom: '1px solid var(--ifm-color-emphasis-200)', fontSize: 14, gap: 12, flexWrap: 'wrap' }; export const consoleActions = { display: 'flex', alignItems: 'center', gap: 10, fontSize: 13 }; export const consoleBtn = { color: 'var(--ifm-color-primary)' }; export const cardFig = { margin: 0, display: 'flex', flexDirection: 'column', alignItems: 'center' }; export const cardImg = { width: '100%', borderRadius: 6, border: '1px solid var(--ifm-color-emphasis-200)', display: 'block', aspectRatio: '3 / 2', objectFit: 'cover' }; export const cardCap = { marginTop: 8, fontSize: 13, color: 'var(--ifm-color-emphasis-700)' }; export const Chev = () => ( ); export const caseGrid = { display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))', gap: 16, margin: '16px 0' }; export const caseCardStyle = { display: 'flex', flexDirection: 'column', padding: 20, border: '1px solid var(--ifm-color-emphasis-200)', borderRadius: 8, textDecoration: 'none', color: 'inherit', background: 'var(--ifm-background-surface-color)' }; export const chipStyle = { alignSelf: 'flex-start', padding: '2px 10px', background: '#eaf1f9', color: '#4a6da3', fontSize: 12, borderRadius: 10, lineHeight: 1.6 }; export const caseName = { fontWeight: 700, fontSize: 17, marginTop: 12 }; export const caseMeta = { color: 'var(--ifm-color-emphasis-700)', fontSize: 13, marginTop: 4, marginBottom: 12 }; export const caseBody = { lineHeight: 1.7, fontSize: 14, marginBottom: 12, flex: 1 }; export const caseLink = { color: 'var(--ifm-color-primary)', fontSize: 14, fontWeight: 500 }; export const CaseCard = ({ industry, name, meta, body, url }) => ( {industry}
{name}
{meta}

{body}

查看完整案例 →
); export const LinkCard = ({ title, body, linkText, url }) => (
{title}

{body}

{linkText}
); export const excelCard = { border: '1px solid #d0d7de', borderRadius: 6, overflow: 'hidden', background: '#fff' }; export const excelHeader = { display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '10px 14px', background: '#eaf3fb', borderBottom: '1px solid #d0d7de', fontSize: 13, color: '#111827' }; export const excelIcon = { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 18, height: 18, background: '#107c41', color: '#fff', fontSize: 11, fontWeight: 700, borderRadius: 2 }; export const excelTable = { width: '100%', borderCollapse: 'collapse', fontSize: 12, background: '#fff', tableLayout: 'auto' }; export const cornerCell = { width: 28, padding: 4, background: '#f3f5f8', border: '1px solid #d0d7de' }; export const letterCell = { padding: '4px 6px', background: '#f3f5f8', border: '1px solid #d0d7de', color: '#6b7280', fontWeight: 500, textAlign: 'center' }; export const rowNumCell = { padding: '4px 8px', background: '#f3f5f8', border: '1px solid #d0d7de', color: '#6b7280', textAlign: 'center', fontWeight: 500, whiteSpace: 'nowrap' }; export const headerCell = { padding: '8px 10px', background: '#dde9f7', border: '1px solid #d0d7de', color: '#166bc7', fontWeight: 600, textAlign: 'center', whiteSpace: 'nowrap' }; export const dataCell = { padding: '8px 10px', border: '1px solid #e5e7eb', color: '#374151', textAlign: 'center', whiteSpace: 'nowrap' }; export const resultOK = { display: 'inline-block', padding: '2px 8px', background: '#e6f7ef', color: '#0e7c3a', borderRadius: 3, fontSize: 11, fontWeight: 500 }; export const sheetTabsRow = { display: 'flex', gap: 2, padding: '6px 14px 0', background: '#f3f5f8', borderTop: '1px solid #d0d7de' }; export const sheetTab = { padding: '4px 14px', fontSize: 12, color: '#6b7280', borderRadius: '4px 4px 0 0' }; export const sheetTabActive = { background: '#fff', color: '#111827', border: '1px solid #d0d7de', borderBottom: '1px solid #fff', marginBottom: -1, fontWeight: 500 }; export const excelCaption = { textAlign: 'center', marginTop: 16, marginBottom: 0, color: 'var(--ifm-color-emphasis-700)', fontSize: 13 }; export const priceTable = { width: '100%', borderCollapse: 'collapse', fontSize: 14, margin: '16px 0', border: '1px solid var(--ifm-color-emphasis-100)', tableLayout: 'fixed' }; export const priceHeadNeed = { padding: '12px 14px', background: 'var(--ifm-color-emphasis-100)', color: 'var(--ifm-color-emphasis-900)', fontWeight: 600, textAlign: 'left' }; export const priceHeadFree = { padding: '12px 12px', background: '#eceef1', color: 'var(--ifm-color-emphasis-800)', fontWeight: 600, textAlign: 'center' }; export const priceHeadPaid = { padding: '12px 12px', background: '#e6f5ec', color: '#0e7c3a', fontWeight: 600, textAlign: 'center' }; export const priceCellFirst = { padding: '10px 14px', textAlign: 'left', borderBottom: '1px solid var(--ifm-color-emphasis-100)', color: 'var(--ifm-color-emphasis-900)', fontWeight: 500 }; export const priceCell = { padding: '10px 12px', textAlign: 'center', borderBottom: '1px solid var(--ifm-color-emphasis-100)', color: 'var(--ifm-color-emphasis-800)' }; export const ck = { color: '#16a06a', fontWeight: 700 }; export const dash = { color: 'var(--ifm-color-emphasis-400)' }; export const featureGrid = { display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))', gap: 16, margin: '16px 0' }; export const featureCardStyle = { padding: 24, border: '1px solid var(--ifm-color-emphasis-200)', borderRadius: 8, background: 'var(--ifm-background-surface-color)' }; export const featureTitleRow = { display: 'flex', alignItems: 'center', gap: 12, marginBottom: 10 }; export const featureIconWrap = { display: 'inline-flex', alignItems: 'center', justifyContent: 'center', width: 38, height: 38, borderRadius: 8, background: '#eaf3fb', color: '#166bc7', flex: '0 0 auto' }; export const featureTitle = { fontWeight: 700, fontSize: 17, color: 'var(--ifm-color-emphasis-900)' }; export const featureDesc = { color: 'var(--ifm-color-emphasis-700)', fontSize: 14, lineHeight: 1.7, margin: 0 }; export const FeatureCard = ({ icon, title, desc }) => (
{icon} {title}

{desc}

); 人员管理系统是一套基于"一人一码"的人员信息数字化管理方案。通过为每位人员生成专属二维码,并印在工牌、胸卡、安全帽等载体上,实现人员身份、资质证件、联系方式等信息的展示。它主要解决传统人员管理中纸质档案难查询、人员信息更新不及时、证件资料易丢失、现场核验不方便等问题。 该方案适用于**建筑施工、生产制造、消防救援、物业后勤**等需要管理人员身份、资质和在岗信息的场景,也可用于**企业员工工牌、临时访客准入**等轻量化管理需求。它更适合人员档案、资质展示和进场核验,不适用于需要薪酬绩效、劳动合同、复杂审批等深度人事管理功能的场景。 ## 一、方案预览 ), }, { key: 'registry', label: '人员台账', forceRender: true, children: (
子码所在目录
全部人员
桩基班
钢筋班
模板班
全部人员 共 86 人 导出数据 批量修改
{PEOPLE.map((r, i) => { const edu = r.edu === '通过' ? { bg: '#e6f7ef', fg: '#0e7c3a' } : { bg: '#fde7e7', fg: '#c5343e' }; return ( ); })}
姓名 子码编号 工种 班组 进场日期 身份证号 联系电话 安全教育 最新动态 照片
{r.name} {r.code} {r.role} {r.team} {r.date} {r.idn} {r.phone} {r.edu} 共 {r.n} 条

每位人员一人一档,后台可按班组目录浏览、筛选、批量管理。

), }, { key: 'export', label: '信息导出', children: (
X 人员花名册-2025年9月.xlsx
共 86 人
{PEOPLE.map((row, i) => { const edu = row.edu === '通过' ? { bg: '#e6f7ef', fg: '#0e7c3a' } : { bg: '#fde7e7', fg: '#c5343e' }; return ( ); })}
A B C D E F G H I J
1 工号 姓名 工种 班组 进场日期 身份证号 联系电话 安全教育 最新动态 照片
{i + 2} {row.no} {row.name} {row.role} {row.team} {row.date} {row.idn} {row.phone} {row.edu} 共 {row.n} 条
人员花名册 进场登记 培训记录

全员信息、进场记录、安全教育都可以按条件一键导出 Excel,便于存档、报送与现场核验。

), }, { key: 'cards', label: '卡证样式', forceRender: true, children: (
安全帽贴
安全帽贴
工作服胸卡
工作服胸卡
工牌
工牌

同一份档案可印成安全帽贴、工作服胸卡或工牌,适配不同使用场景。

), }, ]} /> ## 二、核心功能
} title="资料集中归档,可实时维护" desc="将人员基本信息、照片、岗位角色、资质证件、培训记录、联系方式等集中到个人档案中,后台统一管理。后续查找人员资料、更新证件信息、维护人员状态时,不用在纸质材料、Excel 表和聊天记录里来回翻找。" /> } title="扫码就能核查,现场更好管" desc="二维码可贴在工牌、胸卡、安全帽贴等载体上,管理人员现场扫码即可核验照片、姓名、岗位、资质证件,确认人证一致、资质达标,减少无资质上岗、冒用卡证等风险。" /> } title="信息更新卡证不用重做" desc="人员换岗、证件更新、联系方式变更后,只需在线修改,扫码查看内容即同步更新;人员离场后二维码可停用,工牌、胸卡、安全帽贴等载体也可回收复用。" /> } title="档案长期留存,后续查用方便" desc="人员信息、证件资料和相关附件可长期保存在后台,人员离场或项目结束后仍可按需查询、筛选和导出,方便后续交接、复查、客户核验或内部留档。" />
## 三、如何用草料实现人员管理 ### 1. 整理人员信息,批量生成二维码 草料模板库的[人员管理分类](https://cli.im/template/category/24)中包含人员安全帽贴、员工工牌、工作服胸卡等模板,已预先配置基础字段。套用模板后,根据单位实际情况简单调整即可使用,不需要从零搭建。 如果已有人员花名册 Excel,可直接批量导入;如果暂时没有名单,也可以让人员扫码自主填写信息、上传证件照片([空码模式介绍](https://cli.im/help/empty-qr-code/empty-qr-code-guide))。 ### 2. 印制成卡证或标签 根据使用场景选择合适的二维码载体,例如不干胶贴、亚克力工牌、胸卡等。不同使用环境对标签材质、防水耐磨程度、粘贴方式要求不同,打印贴码前可参考[二维码标签印刷指南](https://cli.im/help/operation-tutorials/printing-service-material),也可以选择[草料代印刷服务](https://cli.im/help/label-printing-guide/qr-code-printing)。 ### 3. 扫码查看人员信息,随时更新资料 现场扫码即可查看人员身份、岗位工种、资质证件、安全教育、联系方式等信息。安全检查、进场核验或现场管理时,不用翻找纸质档案,也不必随身携带证件原件,扫码即可快速确认人员信息和资质情况。 当人员信息变更、岗位调整或证件更新时,只需在后台修改内容,下次扫码看到的就是最新信息,不需要重新制卡。人员离场后,二维码可[停用](https://cli.im/help/operation-tutorials/disable-and-enable-qr-code),扫码不再展示信息,安全帽贴、工牌等载体也可回收复用。 ### 4. 不只展示信息,还能追加管理记录 在人员档案基础上,可以为每个人的二维码关联记录表单。比如出现违纪时,班组长扫码登记违规情况;完成培训后,管理员补充培训记录。这些记录都会自动关联到对应人员名下,随个人档案一起留存,后续查询、导出时更方便。 培训签到、线上考试、考勤打卡等"多人参与同一事项"的场景,通常建议单独制作统一二维码,让所有人员扫码提交记录,与个人档案分开管理([查看相关模板](https://cli.im/template/category/24))。 ### 5. 人员信息汇总与导出 后台可按班组、工种、资质类型、实名状态等条件筛选人员,并一键导出 Excel 花名册,用于内部存档、报送、甲方核查或安全检查留痕。也可以通过开放 [API](https://cli.im/help/integration-and-connection/data-api/api-data-api-feature) 与现有 HR、OA、企业微信、钉钉等系统对接,让人员档案与现有系统并行使用。 ## 四、真实用户案例
## 五、搭建与落地
## 六、常见问题 **Q:免费版可以做到什么程度,什么时候需要付费?** 免费版可以完整跑通人员管理的基础流程,包括批量生码、扫码建档、扫码查档、Excel 导入导出等;二维码数量、扫码次数、人员数量都不限。如果需要去除草料水印、长期高清展示证件照片、使用品牌专属小程序,或通过 API 与现有系统对接,可以再按需升级付费版。
需求项 免费版 高级版 旗舰版
二维码个数、扫码次数 不限 不限 不限
数据存储期限 长期 长期 长期
数据导出期限 近 180 天 近 180 天 不限时间范围
去除草料水印
证件照片高清展示
图文资料一键打包导出
多部门分工管理 2 个高级成员,分区不限 20 个高级成员,分区不限
价格 免费 1280 元/年 2680 元/年
详细版本对比及选购建议可查看[价格方案页](https://cli.im/price)。 **Q:人员离职、换岗或证件更新了怎么办?** 人员信息、岗位、证件资料发生变化时,可以直接在后台修改,扫码查看的内容会同步更新,不需要重新制卡。人员离场后,也可以停用对应二维码,扫码后不再展示信息,历史档案仍可在后台留存查询([码版本追溯快照功能](https://cli.im/help/purchase-guide/paid-features/version-snapshot))。 **Q:安全帽贴、工牌在户外使用会不会磨损扫不出?** 可以根据现场环境选择不同材质,例如 PVC、铝牌、覆膜不干胶等,适配户外、潮湿、油污、频繁摩擦等使用场景。如果二维码标签损坏,也可以重新打印补贴,原有人员档案不会丢失。具体可参考[二维码标签印刷落地指南](https://cli.im/help/label-printing-guide/qr-code-label-printing)。 **Q:如何用二维码应对现场检查?** 现场检查通常会看**人员身份是否清楚、资质证件和培训记录是否齐全、现场人员与档案是否对应**。 可将人员基本信息、照片、资质证件、安全教育记录、进场承诺等信息集中展示在二维码中。迎检时既可以直接现场扫码核验人员信息,也可以在后台快速查询和导出资料。 **Q:已经在用 HR、OA 或企业微信,还能对接吗?** 可以。草料支持通过开放 [API](https://cli.im/help/integration-and-connection/data-api/api-data-api-feature) 与 HR、OA、企业微信、钉钉等系统对接,也可以通过 Excel 导入导出与现有系统并行使用。草料不替代完整 HR 系统,更适合补充“现场扫码查档、身份核验、资质展示”这类线下管理环节。 **Q:能先免费试用吗?** 可以。免费版不限人员数量、不限扫码次数,建议先用一个班组、一支施工队或一个部门试跑,确认扫码核验、信息更新、批量制卡等流程可用后,再根据展示、品牌和对接需求决定是否升级。 ## 开始搭建
查看全部模板