--- uuid: "f22d095f-10f4-4530-af44-18647aa45301" type: "scenario" title: "设备巡检二维码应用方案" sidebar_position: 5 sidebar_label: "应用方案" sidebar_class_name: sidebar-item-hidden displayed_sidebar: null description: "给每台设备贴一个专属二维码,巡检人员微信扫码按项检查、现场拍照上报,管理员后台实时掌握所有设备的巡检与维修状态。落地快、成本低、一线无需培训,覆盖日检/周检/月检多频次场景。" keywords: - 设备巡检二维码 - 草料二维码设备巡检 - 扫码巡检防作假 - 设备点检与维修闭环 cl_old_blog_id: "96568" cl_old_blog_url: "https://cli.im/case/detail/1688" toc_cta: desc: "基于真实用户经验的 34 个模板\n可快速修改复用" buttonWidth: "60%" buttons: - text: "选择模板生码" url: "https://cli.im/template/category/1" --- import { useState } from 'react'; import { Zap, User, ShieldCheck, Clock } 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 = { width: '100%', maxWidth: 220, borderRadius: 4, display: 'block' }; 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 }) => (
{num}{title}
{desc}
{alt}
); 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 resultBad = { display: 'inline-block', padding: '2px 8px', background: '#fde7e7', color: '#c5343e', borderRadius: 3, fontSize: 11, fontWeight: 500 }; export const checkIcon = { color: '#166bc7', fontWeight: 600 }; export const crossIcon = { color: '#dc2626', fontWeight: 600 }; 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 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}

); 基于二维码的设备巡检管理方案,套用模板即可搭建,员工不用装 App,简单培训即可上手。扫码即可巡检报修,巡检全程防造假,异常处理全程闭环,记录随时导出,事故可追责。 适用于**生产制造、建筑施工、物业**等行业,覆盖**配用电设备、水气暖通设备、生产加工设备、特种设备**等各类设备的日常巡检、点检与保养管理。不适用于核电、石油化工、危化品仓储等需严格资质管控、强制接入监管系统的高危行业。 ## 一、方案预览 ), }, { key: 'exception', label: '异常处理', forceRender: true, children: (
), }, { key: 'registry', label: '设备台账', forceRender: true, children: (
设备台账

每台设备一码一档,可以随时查看、导出。

), }, { key: 'export', label: '巡检记录导出', children: (
X 设备巡检记录-2025年9月.xlsx
共 168 条记录
{[ { id: 'L111735', time: '2025-09-01 11:46', dev: 'A01-01', result: '正常', c: ['✓','✓','✓','✓'], name: '陈志远', phone: '158****0250' }, { id: 'L111736', time: '2025-09-01 11:47', dev: 'A01-02', result: '正常', c: ['✓','✓','✓','✓'], name: '陈志远', phone: '158****0250' }, { id: 'L111739', time: '2025-09-01 13:52', dev: 'A01-03', result: '异常', c: ['✓','✓','×','✓'], name: '林海涛', phone: '157****4469' }, { id: 'L111811', time: '2025-09-02 11:25', dev: 'A01-04', result: '正常', c: ['✓','✓','✓','✓'], name: '陈志远', phone: '158****0250' }, { id: 'L111812', time: '2025-09-02 11:27', dev: 'A01-05', result: '正常', c: ['✓','✓','✓','✓'], name: '陈志远', phone: '158****0250' }, { id: 'L111813', time: '2025-09-02 11:29', dev: 'A01-06', result: '正常', c: ['✓','✓','✓','✓'], name: '林海涛', phone: '157****4469' }, { id: 'L111987', time: '2025-09-05 18:38', dev: 'A01-07', result: '正常', c: ['✓','✓','✓','✓'], name: '周建国', phone: '186****1935' }, ].map((row, i) => ( {row.c.map((mark, j) => ( ))} ))}
A B C D E F G H I J
1 记录编号 填表时间 设备编号 巡检结果 箱体配件完好 无异响漏水 指示灯正常 开关接触良好 巡检人 手机号
{i + 2} {row.id} {row.time} {row.dev} {row.result} {mark} {row.name} {row.phone}
巡检记录 异常清单 设备台账

所有巡检记录信息都可以一键导出,方便归档、上报与事故追溯。

), }, ]} /> ## 二、核心功能
} title="搭建快,成本低" desc="套用现成模板搭建,已有 Excel 台账可直接导入,几小时上线,无需开发、无需买专业系统。" /> } title="一线人员阻力小" desc="用微信扫码就能填写,不用装 App,简单培训后年纪大的员工也能用。" /> } title="减少漏检、假检" desc="定位锁定、强制实拍、AI 识别校验、照片水印、实名填表等多种防作假手段,到期未巡检系统自动提醒。" /> } title="异常及时响应处理" desc="巡检中发现异常提交后,负责人通过微信、短信或企业微信第一时间收到通知,处理过程全程闭环可追溯。" />
## 三、如何用草料实现设备巡检 ### 1. 梳理设备台账,批量生码 **预制行业模板,批量生成二维码** [草料模板库](https://cli.im/template/category/1)已内置配电箱、空压机、机床、电梯、消防设施等几十类设备的巡检模板,字段、检查项、巡检频次都已经配好。套用之后按企业的实际情况改一改就能用,不用从零搭。 已有的设备 Excel 台账可以直接上传,没有的也可以在后台手工录入。每台设备自动生成一个二维码。 打印贴码前,按现场环境选合适的标签材质,具体见[二维码标签印刷指南](https://cli.im/help/operation-tutorials/printing-service-material)。也可以走[草料代印刷服务](https://cli.im/help/label-printing-guide/qr-code-printing)。 **设备信息变更与报废处理** 在后台改了设备信息(责任人、位置、规格等)后,下次扫码就是最新版本,不用重新打印二维码。设备报废后,二维码可停用,扫码不再触发巡检任务,历史巡检和维修记录保留可查。 ### 2. 日常巡检 **微信扫一下就能填,简单培训即可上手** 一线人员用微信扫一下设备上的二维码,进入这台设备的档案和当前要做的巡检表。勾勾选选、语音输入、现场拍照,几分钟就能完成一次巡检。发现异常的话,直接在表里勾"异常"、补一句说明、拍张现场照片就提交了,当场就完成异常上报。 不用装 App、简单培训即可上手。表单支持大字模式,年纪大的员工也能轻松操作。 **巡检过程防作假** 纸质表能补签、Excel 能改、群里照片能撤回——这些方式记录看着齐全,但真假没人能保证。草料在巡检的关键节点上了一组防作假手段,按需开启([查看详情](https://cli.im/help/application-scenarios/anti-fraud-inspection)): | 能力 | 作用 | |------|------| | 定位锁定 | 巡检员要在设备所在范围内,才能扫开巡检表 | | 强制实拍 | 关掉相册选图,只能用摄像头当场拍 | | AI 识别校验 | 识别现场照片中是否包含要巡检的设备,确保人到现场、拍的是这台 | | 照片水印 | 拍照时自动打上时间、地点、提交人,事后改不了 | | 实名填表 | 记录自动绑定填表人微信身份,谁填的清清楚楚 | | 区块链存证 | 每条巡检记录都会上链,可作司法证据采信 | ### 3. 巡检计划与追踪 根据设备的巡检要求制定计划任务,比如一天三次、一周一次、一月一次,设定每次的时间段,巡检员必须在时间段内完成([查看详情](https://cli.im/help/forms/form-design/recurring-tasks))。 **巡检员按计划巡检** 有巡检任务时,会微信提醒要完成的巡检任务,巡完一台自动勾掉一台。任务快超期时也会提醒。 **管理员随时看已检、漏检** 后台一屏看到全厂的巡检情况——每台设备最近什么时候巡的、谁巡的、有没有按计划完成、哪些超期没巡。看到漏检和超期记录后,可以直接定位到对应的负责人,方便管理员及时催办。 ### 4. 异常上报与维修闭环 **巡检员上报异常** 巡检中勾选"异常"、填写异常说明、拍现场照片、提交。非巡检时间发现异常也可以随时扫码报修。 **自动通知维修员、维修员填写处理过程** 系统按设备的责任规则自动推送微信消息给对应的维修人员或维修组长,附上设备位置、异常说明、现场照片。维修人员到现场后,在原来这条异常记录下追加处理过程:文字进展、过程照片、换的备件、维修工时。所有内容都加在同一条异常记录里,可以一起导出来龙去脉。 **异常隐患整改确认** 维修完成后填整改确认表,这条记录就闭环了。上报人和管理员都会收到完成通知,从异常上报到维修完成的全过程都挂在同一条记录上,什么时候发现、谁处理的、怎么修的、用了多久,回头都查得到。 ### 5. 数据汇总与导出 **巡检留档与应对检查** - **现场抽检**:检查员来巡查时,扫一下设备上的二维码,就能当场看到这台设备过去所有的巡检记录。每条记录的时间、位置、提交人、照片水印都改不了,也不像纸质表能临时补签——是不是真的检查过一目了然。 - **批量导出留档**:应付应急局督导、集团 EHS 填报、安全生产检查、保险查勘、公司内部留档等场景,按时间、车间、设备类别、异常类型、巡检员、状态等条件筛选历史记录,一键导出 Excel。 - **单条记录导出**:单次巡检也可以单独导出 PDF 留底。每条记录都有可信存证(开启区块链存证后可作司法证据),事故追溯或日常存档都能用。 **数据汇总与外部对接** 后台直接能看的统计:正常 / 异常 / 故障的设备各有多少,周期任务里已巡检、漏检的设备各有多少。 想做更深的数据分析或自定义看板,可以通过腾讯文档、WPS 同步数据,或者通过开放 [API](https://cli.im/help/integration-and-connection/data-api/api-data-api-feature) 对接 BI 工具(Power BI、帆软、Tableau)和业务系统(ERP、OA、企业微信、钉钉),自己制作([数据报表制作教程](https://cli.im/help/integration-and-connection/data-api/data-reports/case-collection))。 ## 四、真实用户案例
## 五、搭建与落地
## 六、常见问题 **Q:免费版可以做到什么程度,付费版有什么价值?** 免费版可以完整跑通巡检流程(生码、扫码填表、计划任务、防作假、异常上报、Excel 导出都能用)。下面这些场景需要升级,可按需付费: - 多位管理员协作 → 高级版 ¥1280/年起 - 历史数据超过 180 天也能导出 → 旗舰版 ¥2680/年起 - 照片去草料水印 → 基础版 ¥780/年起 - 责任人审批、消息通知 → 高级版起 - API 对接 BI / 业务系统 → 旗舰版起 完整对比和价格见[价格方案页](https://cli.im/price)。 **Q:二维码贴在户外或车间油污环境,会不会损坏?** 可选铝牌、PVC、不干胶等多种耐久材质,适配户外、油污、高温、潮湿等环境。即使码损坏扫不出,贴一张新码即可,设备档案完整保留([查看二维码标签印刷落地指南](https://cli.im/help/label-printing-guide/qr-code-label-printing))。 **Q:电工换人了,历史记录会跟着丢吗?** 不会。人员账号删除后,这位巡检员过往提交的所有记录都保留在后台。外包人员撤场也是一样。 **Q:已经在用某 OA 或 EHS 系统,能不能对接?** 支持通过开放 API 对接 ERP、OA、企业微信、钉钉等系统,详细见[数据 API 功能说明](https://cli.im/help/integration-and-connection/data-api/api-data-api-feature)。也可以通过 Excel 导出与现有系统并行使用。 **Q:数据存放在哪里?安全性怎么保证?** 数据存放在阿里云,全链路加密传输与存储,不同企业账号之间数据严格隔离。平台已通过国家信息安全等级保护三级(等保三级)和数据管理能力成熟度 DCMM 二级认证,提供二维码访问权限、成员操作日志、误删恢复、区块链存证等多项数据保护能力。 如需用于内部汇报或采购评审,可参考《[草料二维码数据安全体系介绍](https://cli.im/help/policy-and-terms/data-security-overview)》,文末可下载 PDF 版数据安全白皮书。 **Q:数据保存多久?能不能本地备份?** 数据长期保存可查看,无论免费版还是付费版都可以登录后台查看,旗舰版起可导出 180 天前的数据。 ## 开始搭建
查看全部模板