面向物业管理公司的轻量化综合账单系统
多表计抄表 · 自动追溯上期读数 · 一键生成含电子公章的催款单 · 打印 / PDF / 图片导出
中文 | English
装好 Node.js 即可运行,无需
npm install、无需构建、零第三方依赖。数据为本地 JSON 文件,复制目录即完成备份。适合小区物业、商铺园区、二房东等需要按月出账单 / 催款单的场景。
- 🧾 一份账单自动汇总全费用 — 月租金 + 停车费 + 垃圾清运费 + 所有水 / 电表费用,一键生成
- 💧 一户多表计 — 每个租户可绑定多个水表、多个电表,单价独立设置
- 🔁 抄表自动追溯 — 自动调取上月读数计算
用量 = 本期读数 − 上月读数,读数异常自动提醒 - 📥 Excel 一键导入 — 下载模板填好数据直接导入租户、表计、抄表,也兼容旧版「电费 / 水费」宽表格式
- 🏛️ 电子公章 + 收款码 — 公章自动叠加到账单落款,微信 / 支付宝收款码显示在付款指引区
- 💴 人民币大写金额 — 账单含「叁仟贰佰壹拾元整」式大写,专业规范
- 📤 三种输出方式 — 浏览器打印 / 另存 PDF、导出 PNG 图片(适合微信发送)、复制纯文本催款话术
- 📱 响应式界面 — 手写类 Tailwind 风格 CSS,电脑和手机都能用
- 🐳 一键部署 — 支持 Docker、宝塔 / 云服务器(阿里云、腾讯云轻量等)、PM2 守护进程
- 💾 零依赖 + 文件持久化 — 三个 JSON 文件存全部数据,维护成本极低
| 工作台 | 租户管理 | 抄表录入 |
|---|---|---|
![]() |
![]() |
![]() |
| 账单生成 | 公司设置 | 完整账单(含公章) |
|---|---|---|
![]() |
![]() |
![]() |
双击 start.bat,或手动执行:
node server.js浏览器打开 http://localhost:3000 即可使用。
docker compose up -d或手动构建运行:
docker build -t property-billing .
docker run -d -p 3000:3000 -v $(pwd)/data:/app/data --name property-billing property-billing数据通过 data/ 卷持久化,升级镜像不影响账单数据。
- 将整个项目目录上传至服务器(如
/opt/property-billing) - 安装 Node.js(>= 18)
- 使用 PM2 守护进程:
pm2 start server.js --name property-billing - 在宝塔「网站」中新建反向代理:
http://127.0.0.1:3000,绑定域名即可 - 建议同时启用 HTTPS 证书
- 公司名称、联系电话、收款银行信息(户名 / 开户行 / 账号)
- 微信收款码、支付宝收款码上传(显示在账单付款指引区)
- 电子公章上传(推荐透明底 PNG),自动叠加在账单右下角落款处
- 付款截止天数、催款提示语、页脚说明均可自定义
- 租户姓名 / 公司名、位置 / 房号 / 铺位号、联系电话、合同起止时间
- 每户独立配置固定费用:月租金、停车费、垃圾清运费(元 / 月)
- 每户可绑定多个水表 + 多个电表,表计名称 / 编号、单价(元 / 度、元 / 吨)独立设置
- 工作台自动提醒未来 60 天到期的合同
- 按月份批量 / 单独录入各表计本期读数与抄表时间
- 自动调取该表计上期(上月)读数并计算:
本期用量 = 本期读数 − 上月读数,表计金额 = 用量 × 单价 - 首次抄表期初按 0 计并明确标注;读数低于上期会给出异常提示
- 抄表数据支持整月清空与重新录入
选择月份后一键汇总该租户全部费用(租金 + 停车费 + 垃圾清运费 + 所有表计费用),账单包含:
- 抬头:公司名称、账单编号、账单月份、生成时间
- 租户信息:名称、位置 / 房号、电话、合同期间
- 固定费用明细:项目、收费标准、本期金额
- 水 / 电费抄表明细表(逐表列出):表计名称、类型、抄表时间、上月期初读数(含来源月份)、本期期末读数、实际用量、单价、费用小计
- 汇总:本期应缴总金额(人民币大写 + 小写)、固定费用合计、水 / 电费合计
- 付款指引:收款账户、微信 / 支付宝收款码、付款截止日期、催款提示语
- 落款:电子公章(图片叠加)、公司联系电话
输出方式:一键打印 / 导出 PDF(浏览器打印对话框选择「另存为 PDF」)、导出 PNG 图片(适合微信发送)、复制催款文本(纯文本账单,直接粘贴微信)。
针对已用 Excel 管理台账的物业公司,提供「下载模板 → 填写数据 → 一键导入」流程,无需逐个录入:
- 下载模板:管理端「Excel 导入」页下载
数据导入模板.xlsx,包含四个工作表:公司设置:公司名称、电话、开户行、收款账号、付款截止天数、催款提示语等租户信息:租户名称、位置/房号/铺位、电话、合同起止、租金、停车费、垃圾清运费表计配置:租户名称、表计名称、类型(电表/水表)、单价抄表数据:租户名称、表计名称、抄表月份(YYYY-MM)、本期读数、抄表时间
- 上传导入:支持两种模式——合并导入(按名称新增/更新,抄表按「表计+月份」覆盖,可重复导入不产生重复数据)和清空后导入(先删除全部现有租户与抄表)。
- 兼容旧表:直接上传旧版「电费 / 水费」宽表(名称 / 收费标准 / 期初 / 各月读数列),自动按年份与租户拆分表计,无需改造原表。
导入完成后立即生成月度账单,金额计算与手工录入完全一致。
本系统采用零依赖 Node.js + 原生响应式前端 + JSON 文件持久化,刻意不引入 npm 依赖与构建步骤:
- 无需
npm install、无需编译,装好 Node.js 即可运行,维护成本极低 - 数据为
data/下的三个 JSON 文件,备份 = 复制目录,适合轻量管理场景 - 前端使用手写响应式 CSS(类 Tailwind 风格),电脑 / 手机均可使用
- 账单图片导出基于浏览器原生 SVG → Canvas 能力,无第三方库
- 如需迁移到 MySQL / PostgreSQL,只需替换
server.js中的存储层与saveJson调用
| 环境变量 | 说明 | 默认值 |
|---|---|---|
PORT |
服务端口 | 3000 |
HOST |
监听地址 | 0.0.0.0 |
DATA_DIR |
数据目录(便于 Docker 挂载) | ./data |
data/ 目录下的文件:
settings.json— 公司信息、收款码、电子公章tenants.json— 租户及表计配置readings.json— 全部抄表记录(表计名称 / 单价随记录快照保存,历史账单不受后续改价影响)
备份:停止服务后复制 data/ 目录即可;恢复时放回同名目录。
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/health |
健康检查 |
| GET | /api/months |
已有数据的月份列表(含当前月) |
| GET / PUT | /api/settings |
读取 / 更新公司设置(含收款码、公章) |
| GET / POST | /api/tenants |
租户列表 / 新增租户 |
| GET / PUT / DELETE | /api/tenants/:id |
租户详情 / 更新 / 删除(级联删除抄表) |
| GET | /api/readings?month=YYYY-MM |
某月抄表全量数据(含上期读数) |
| POST | /api/readings/batch |
批量保存抄表 |
| DELETE | /api/readings?month=YYYY-MM |
清空某月抄表 |
| GET | /api/bill?tenantId=&month= |
单户完整账单数据 |
| GET | /api/bills/summary?month= |
月度全户应收汇总 |
| GET | /api/dashboard?month= |
工作台统计 |
| GET | /api/import/template |
下载 Excel 导入模板 |
| POST | /api/import?mode=merge|replace&year= |
上传 XLSX 并导入(支持官方模板与旧版电费/水费表) |
property-billing-system/
├── server.js # 零依赖 HTTP 服务(API + 静态资源)
├── lib/ # xlsx 读写与 Excel 导入逻辑(零依赖)
├── public/ # 前端页面
│ ├── index.html # 管理端(工作台/租户/抄表/账单/设置)
│ ├── bill.html # A4 账单 / 催款单(打印、PDF、图片导出)
│ ├── css/style.css
│ └── js/ # app.js(管理端逻辑)、util.js(大写金额等)
├── data/ # 运行后自动生成的数据文件(备份此目录)
├── previews/ # 界面预览截图
├── Dockerfile # 一键容器化部署
├── docker-compose.yml
└── start.bat # Windows 一键启动
本系统定位为物业公司内部工具,默认不内置登录认证。部署到公网时请务必:
- 通过宝塔 / Nginx 反向代理添加 Basic Auth 或访问白名单
- 开启 HTTPS
- 或仅在公司内网使用(
HOST=127.0.0.1时仅本机可访问)
- 多公司 / 多账套支持
- 账单历史归档与按租户查询
- 微信 / 短信自动推送账单
- 导出 Excel 应收明细
- 接入数据库(MySQL / PostgreSQL)存储层
如果这个项目对你有帮助,那么可以请我喝杯咖啡,欢迎打赏支持 ☕ 每一份支持都是持续维护与开发的动力。
本项目采用 MIT 许可证 开源。
English Abstract
Property Billing System — a lightweight, zero-dependency property & tenant billing manager built with vanilla Node.js (no npm install, no build step). It supports multi-meter management (multiple water/electricity meters per tenant), automatic carry-over of previous readings, one-click generation of payment demand notes with e-seal and QR payment codes, and export via print / PDF / PNG. Data is persisted as JSON files. Runs on Node.js >= 18, Docker, or any cloud server.






