实验室台账二期,43 台设备,每台贴一张二维码,管理员拿手机扫了就能进详情页、记一次盘点。听起来半天的事,前后折腾了一周。记一下踩的坑。
1. 二维码内容用了自增 id
第一版脚本直接把设备的自增 id 编进 URL,比如 /asset/17。打印出来贴上去,客户那边有人扫了一下,顺手把 17 改成 18,另一台设备的信息就出来了。设备信息不算敏感,但「能猜」这件事本身不合适。
改成随机 token,16 位,单独一张 asset_token 表做映射,二维码里只有 token。生成脚本也换成一次性批量出,43 张,文件名带设备名,不暴露序号。
2. 微信扫一扫把参数截了
二维码指向的 URL 带两个参数:token 和来源。用系统相机扫没问题,用微信「扫一扫」打开时,第二个参数偶尔丢。查了半天,是 URL 里的 & 在部分场景下被当成了结束。改成只留一个 token,来源靠服务端按 token 查,参数从两个减到一个。
3. 旧标签没作废,重复打印
第一批标签贴到一半发现贴错了一台,补打了一张,旧的那张没撕干净。结果同一台设备在盘点表里出现两次。后来给 token 加了状态字段,作废的扫码直接提示「标签已失效」,盘点记录也按 asset_id 加了唯一索引,一天一次。
4. 地下室没信号
有一间实验室在楼下,手机基本没网。管理员扫完页面打不开,回来也就忘了。改成扫码后先把记录存在浏览器 localStorage,页面检测到有网再自动补传,补传带一个客户端生成的 uuid,服务端按 uuid 去重。那次补上来 7 条,都是同一天的。
5. 导出还是得能打印
盘点完客户要一张纸质的表签字存档。我们做了个导出,A4 竖版,一列设备名、一列编号、一列盘点状态、一列备注,43 行刚好两页。字号特意调到 10 号,太小签字看不清。
收尾
最后 43 台全扫完,系统里比台账多了 1 台,是一台早就报废没销账的离心机。管设备的老师拿着那张纸质表去办了销账,跟系统没关系。
那批作废的标签我们留了一叠,现在还放在光谷办公室的抽屉里。

