# 农村人口登记系统 ## 项目简介 这是一个基于uni-app + Spring Boot的农村人口登记系统,支持多平台部署(H5、小程序、APP)。 ## 技术栈 - **前端**: uni-app + Vue2 + uView UI - **后端**: Spring Boot + JPA + MySQL - **数据库**: MySQL 8.0+ ## 功能特性 - ✅ 用户登录认证 - ✅ 完整的户主信息登记表单 - ✅ 家庭成员信息管理 - ✅ 手写签名功能(支持图片保存) - ✅ 单选/多选字段支持 - ✅ 表单验证 - ✅ 数据暂存功能 - ✅ 记录查询和统计 - ✅ 数据导出(Excel) - ✅ 响应式设计,支持多平台 ## 快速开始 ### 1. 数据库配置 ```sql -- 执行 database.sql 创建数据库和表 mysql -u root -p < database.sql ``` ### 2. 后端启动 ```bash # 进入backend目录 cd backend # 修改 application.yml 中的数据库配置 # 启动Spring Boot应用 mvn spring-boot:run ``` ### 3. 前端启动 ```bash # 安装依赖 npm install # 运行到H5 npm run dev:h5 # 运行到微信小程序 npm run dev:mp-weixin ``` ## 项目结构 ``` ├── pages/login/login.vue # 登录页面 ├── pages/index/index.vue # 主页(功能选择) ├── pages/index/householdForm.vue # 户主信息填报页面 ├── pages/query/query.vue # 结果查询页面 ├── backend/ # 后端项目目录 │ ├── pom.xml # Maven配置 │ ├── src/main/java/com/rural/ # 后端源码 │ │ ├── controller/ # 控制器层 │ │ │ ├── AuthController.java # 认证控制器 │ │ │ └── HouseholdController.java # 户主控制器 │ │ ├── service/ # 业务逻辑层 │ │ │ ├── AdminUserService.java # 管理员服务 │ │ │ └── HouseholdService.java # 户主服务 │ │ ├── repository/ # 数据访问层 │ │ │ ├── AdminUserRepository.java # 管理员数据访问 │ │ │ └── HouseholdRepository.java # 户主数据访问 │ │ ├── entity/ # 实体类 │ │ │ ├── AdminUser.java # 管理员实体 │ │ │ └── Household.java # 户主实体 │ │ └── dto/ # 数据传输对象 │ │ └── HouseholdDTO.java # 户主DTO │ └── src/main/resources/ # 配置文件 │ └── application.yml # Spring Boot配置 ├── database.sql # 数据库初始化脚本 └── README.md # 项目说明文档 ``` ## API接口 ### 认证接口 ``` POST /houseapi/auth/login Content-Type: application/json { "username": "admin", "password": "admin123" } ``` ### 户主信息接口 ``` # 保存户主信息 POST /houseapi/household/save Content-Type: application/json # 暂存户主信息 POST /houseapi/household/draft Content-Type: application/json # 获取暂存数据 GET /houseapi/household/draft # 查询我的记录 GET /houseapi/household/my-list?page=1&size=20&submitStatus=1 # 获取统计信息 GET /houseapi/household/stats ``` ## 功能说明 ### 1. 用户登录 - 支持用户名密码登录 - 登录后获取token和用户信息 - 未登录自动跳转到登录页 ### 2. 户主信息填报 - 完整的户主信息表单 - 支持手写签名 - 支持暂存功能 - 支持编辑已有记录 - 提交时自动删除相同身份证号的旧记录 ### 3. 暂存功能 - 点击暂存按钮保存当前表单数据 - 下次进入填报页面时自动加载暂存数据 - 暂存数据状态为"暂存",提交后状态变为"已提交" ### 4. 结果查询 - 查看自己提交的所有记录 - 支持按状态筛选(全部/已提交/暂存) - 支持搜索户主姓名或身份证号 - 点击记录可查看详情或编辑 ### 5. 统计功能 - 显示总记录数、已提交数、暂存数 - 实时更新统计数据 ## 签名功能说明 - 使用 `lime-signature` 组件实现手写签名 - 签名数据以base64格式保存 - 支持签名图片反显 - 签名数据会保存到数据库的 `signature_img` 字段 ## 注意事项 1. 确保MySQL服务已启动 2. 修改 `backend/src/main/resources/application.yml` 中的数据库连接信息 3. 前端API地址默认为 `http://localhost:8080`,请根据实际情况修改 4. 签名图片较大,建议配置适当的文件上传限制 5. 默认管理员账号:admin/admin123,user1/user123,user2/user123 ## 开发环境 - Node.js 14+ - Java 8+ - MySQL 8.0+ - Maven 3.6+ ## 许可证 MIT License