166 lines
4.6 KiB
Markdown
166 lines
4.6 KiB
Markdown
# 农村人口登记系统
|
||
|
||
## 项目简介
|
||
这是一个基于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
|
||
|