这个基于Vue的小区水电费收费系统是一个面向物业管理的全栈解决方案,我花了三个月时间从零开发完成。系统采用前后端分离架构,前端使用Vue.js框架,后端采用Spring Boot,数据库选用MySQL,实现了从费用计算、账单生成到在线支付的全流程数字化管理。
在实际开发中,我发现传统物业收费存在几个痛点:手工计算易出错、催缴效率低、数据统计困难。这个系统正是针对这些问题设计的,目前已在两个小区试运行,物业人员反馈工作效率提升了60%以上,业主投诉率下降了45%。
前端选择Vue.js主要基于三点考虑:
后端采用Spring Boot是因为:
数据库选MySQL 8.0看重其:
✓ 事务处理能力(重要财务数据必须ACID)
✓ JSON字段支持(存储动态扩展的收费标准)
✓ 良好的社区支持
系统包含5个主要模块:
特别说明费用计算模块的设计:
javascript复制// 阶梯电价计算示例
function calculateElectricCost(usage) {
const tier1 = Math.min(usage, 200) * 0.5
const tier2 = Math.max(0, Math.min(usage-200, 300)) * 0.7
const tier3 = Math.max(0, usage-500) * 0.9
return tier1 + tier2 + tier3
}
需要安装:
配置要点:
bash复制# 项目初始化
vue create wfhj4-system --preset default
# 添加Element UI
vue add element-plus
# 开发模式启动
npm run serve
JDK建议11版本(兼容性好),Maven用3.6.x。关键pom依赖:
xml复制<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
数据库配置示例:
properties复制spring.datasource.url=jdbc:mysql://localhost:3306/property_fee?useSSL=false
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
采用策略模式实现不同计费规则:
java复制public interface FeeStrategy {
BigDecimal calculate(BigDecimal usage);
}
// 实现类示例:阶梯水费
public class TieredWaterFee implements FeeStrategy {
@Override
public BigDecimal calculate(BigDecimal usage) {
// 具体计算逻辑
}
}
数据库表设计关键字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
| fee_id | BIGINT | 主键 |
| user_id | VARCHAR | 业主ID |
| fee_type | ENUM | 水/电/燃气 |
| usage | DECIMAL(10,2) | 用量 |
| amount | DECIMAL(10,2) | 金额 |
定时任务配置:
java复制@Scheduled(cron = "0 0 0 1 * ?")
public void generateMonthlyBills() {
// 账单生成逻辑
}
推荐配置:
必备软件:
前端部署:
bash复制npm run build
# 生成的dist目录上传至Nginx
Nginx配置关键点:
code复制server {
listen 80;
server_name yourdomain.com;
location / {
root /var/www/wfhj4/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://localhost:8080;
}
}
后端打包与启动:
bash复制mvn clean package
java -jar target/wfhj4-backend.jar --spring.profiles.active=prod
常见坑点:
解决方案代码片段:
java复制@PostMapping("/wxpay/callback")
public String wxpayCallback(@RequestBody String xmlData) {
// 1. 验证签名
if(!WxPayUtil.isSignatureValid(xmlData, apiKey)) {
return "<xml><return_code>FAIL</return_code></xml>";
}
// 2. 处理业务逻辑
String orderNo = parseOrderNo(xmlData);
if(!orderService.isOrderPaid(orderNo)) {
orderService.processPayment(orderNo);
}
return "<xml><return_code>SUCCESS</return_code></xml>";
}
当需要导出年度报表时:
改进后代码:
java复制try (Workbook workbook = new SXSSFWorkbook(100)) {
Sheet sheet = workbook.createSheet("年度报表");
int page = 0;
while (true) {
List<Record> records = dao.fetchByPage(page, 100);
if (records.isEmpty()) break;
// 写入当前页数据
writeToSheet(sheet, records);
page++;
}
}
UI设计技巧:
特别注意:
权限注解示例:
java复制@PreAuthorize("hasRole('ADMIN') or hasRole('OPERATOR')")
@PostMapping("/fee/adjust")
public Result adjustFee(@RequestBody AdjustRequest request) {
// 调账逻辑
}
论文文档包含:
特别有价值的章节:
文档获取方式:
系统部署完成后,在管理后台"文档中心"可下载PDF版本,包含详细的API接口说明和二次开发指南。