小养殖户、小菜农最怕两件事:一是记不住账,卖猪卖菜的钱和饲料钱混在一起,月底算不清赚没赚;二是收钱麻烦——客户说"微信转你",但很多农户根本没有把收款码和系统连起来,钱到账了还得手动去对账。
这次我们给「修文生猪养殖记账本」和「修文蔬菜种植记账本」做了一版升级:一个单文件HTML,手机浏览器打开即用、不用装APP,还能扫码收款、标记已收,形成完整闭环。本文拆解这个轻量工具的产品思路和视觉模板。
对农户来说,下载、注册、登录小程序是一层很高的门槛。年纪大一点的养殖户,光是"在微信里搜小程序"这一步就卡住了。我们换了个思路:
核心判断:小农户要的不是"又一个小程序",而是一个打开就能用、用完就走的工具。单文件HTML + 浏览器 = 最低摩擦的入口。
收款这块我们做了一个关键决策——不接微信/支付宝商户API。原因很现实:小农户没有企业资质,开通商户号门槛高、还要手续费对账。
替代方案更聪明:农户自己在系统里上传自己的微信/支付宝收款码(图片转base64存本地),客户扫码付款,钱直接进农户自己的账户。系统只负责"把码亮出来"和"标记这笔已收",不参与资金流。
| 步骤 | 用户动作 | 系统做了什么 |
|---|---|---|
| ① 设置收款码 | 上传自己的微信/支付宝码 | 转base64存localStorage |
| ② 一笔销售 | 录入卖猪/卖菜记录 | 生成待收款卡片,显示"💳收款"按钮 |
| ③ 客户付款 | 点收款 → 亮出二维码 | 微信/支付宝tab切换,客户扫码 |
| ④ 标记已收 | 客户付完点"已收款" | 卡片打上"✓已收"标签,进入已收统计 |
审计时我们抓到过一个真 bug:收款弹窗原本没有"标记已收款"按钮,导致"✓已收"永远不触发——功能断链。修复后,每笔销售从"开单"到"收款"到"标记"形成完整闭环。
这次还把 UI 定成了 Y2Ksoft 轻量工具类的通用模板——天蓝玻璃拟态(Glassmorphism):
天蓝渐变 + 多层光晕
手机里一眼就是清爽的
现代 App 质感
半透明白 + 强模糊
像漂浮在蓝天上的
磨砂玻璃
在养/成本/收入/利润
四个方块各用一种
UI渐变色
概览页的四个小方块,是这个模板最出彩的地方——每一个都是不同的渐变色块:
| 方块 | 渐变色 | 含义 |
|---|---|---|
| 🐖 在养生猪 | 翠绿 #43e97b→#38f9d7 | 存栏量 |
| 💸 总成本 | 琥珀橙 #f6d365→#fda085 | 饲料+防疫 |
| 💰 销售收入 | 天蓝 #4facfe→#00f2fe | 已售回款 |
| 📈 预估利润 | 盈利绿 / 亏损珊瑚红 #ff6a88→#ff99ac | 赚没赚 |
桌面端打开时,系统还会自动套一个深色金属边框的手机外壳,把页面框在 390×844 的"手机屏"里,看着就像真手机;手机端则满屏显示,两种场景都好看。
// 收款码上传:FileReader 转 base64,存 localStorage
function uploadQR(e, kind){
const file = e.target.files[0];
const reader = new FileReader();
reader.onload = () => {
DATA.settings['qr'+kind] = reader.result; // base64
save(); render();
};
reader.readAsDataURL(file);
}
// 标记已收款:闭环关键一步
function markPaidAndClose(id){
const s = DATA.sales.find(x => x.id === id);
if (s) { s.paid = true; save(); }
closeQR(); render();
}
整套系统就是一个 index.html 文件:HTML + CSS变量(玻璃拟态)+ 原生JS + localStorage。没有构建步骤、没有后端、没有数据库——农户双击链接就能用。
| 原则 | 做法 | 受益者 |
|---|---|---|
| 不装APP | 浏览器打开 + 添加到主屏幕 | 怕麻烦的农户 |
| 不接商户API | 上传自己的收款码,钱直进账户 | 无资质的小个体 |
| 不依赖网络 | localStorage本地优先,离线可记 | 山区弱网环境 |
从"记不清账"到"扫码收款闭环",中间只隔了一个打开即用的单文件HTML。这版天蓝玻璃拟态模板,已经定为 Y2Ksoft 轻量工具类的标准起点——下次做类似的小农户、小个体户产品,直接套用。
如果这篇文章对你有帮助,欢迎分享