提交代码修改
This commit is contained in:
1 parent
6a88159417
commit
6a0eeec01e
29 files changed
+3334
No files matched your search
@@ -0,0 +1,173 @@
|
||||
# 学生信息收集批次收集范围功能完善记录
|
||||
|
||||
**日期**: 2025-01-17
|
||||
**开发者**: Cursor AI
|
||||
**变更类型**: 功能完善
|
||||
**影响范围**: 前端页面、后端API接口
|
||||
|
||||
## 📋 变更概述
|
||||
|
||||
完善了学生信息收集批次管理页面中的收集范围功能,实现了前后端完整的API调用,包括设置收集范围和获取收集范围。
|
||||
|
||||
## 🔧 具体变更
|
||||
|
||||
### 1. 后端API接口完善
|
||||
|
||||
#### 新增获取收集范围接口
|
||||
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStuColBatchClassController.java`
|
||||
|
||||
- 添加了 `getScope` API接口
|
||||
- 接口路径: `GET /stuColBatchClass/stuColBatchClass/getScope/{batchId}`
|
||||
- 返回指定批次的班级ID列表
|
||||
- 权限标识: `stuColBatchClass:stuColBatchClass:query`
|
||||
|
||||
#### Mapper层完善
|
||||
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStuColBatchClassMapper.java`
|
||||
|
||||
- 新增 `selectClassIdsByBatchId` 方法
|
||||
- 根据批次ID查询班级ID列表
|
||||
|
||||
#### XML映射文件完善
|
||||
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/stuColBatchClass/XgStuColBatchClassMapper.xml`
|
||||
|
||||
- 添加了 `selectClassIdsByBatchId` 的SQL实现
|
||||
- 查询条件: `batch_id = #{batchId} AND deleted = 0`
|
||||
|
||||
### 2. 前端API接口完善
|
||||
|
||||
#### 新增API方法
|
||||
**文件**: `web/src/api/stuColBatchClass/stuColBatchClass/index.ts`
|
||||
|
||||
- 添加了 `setScope` API方法(设置收集范围)
|
||||
- 添加了 `getScope` API方法(获取收集范围)
|
||||
- 使用标准的request请求格式
|
||||
|
||||
### 3. 前端页面功能完善
|
||||
|
||||
#### 导入API方法
|
||||
**文件**: `web/src/views/XgStuColBatch/stuColBatch/index.vue`
|
||||
|
||||
- 导入了 `setScope` 和 `getScope` API方法
|
||||
- 完善了API调用逻辑
|
||||
|
||||
#### 完善submitScope方法
|
||||
- 移除了临时的console.log代码
|
||||
- 实现了完整的API调用逻辑
|
||||
- 添加了成功和失败的消息提示
|
||||
- 根据API响应显示相应的消息
|
||||
|
||||
#### 完善loadCurrentScope方法
|
||||
- 实现了获取当前批次收集范围的API调用
|
||||
- 将获取到的班级ID列表设置为已选中状态
|
||||
- 添加了错误处理机制
|
||||
|
||||
## 🎯 技术特性
|
||||
|
||||
### 数据一致性保证
|
||||
- ✅ 使用事务确保设置收集范围的数据一致性
|
||||
- ✅ 先清理历史数据,再插入新数据
|
||||
- ✅ 异常时自动回滚
|
||||
|
||||
### 用户体验优化
|
||||
- ✅ 打开弹窗时自动加载已设置的收集范围
|
||||
- ✅ 设置成功后显示详细的操作结果信息
|
||||
- ✅ 完整的错误处理和用户提示
|
||||
|
||||
### 权限控制
|
||||
- ✅ 使用 `@SaCheckPermission` 进行权限验证
|
||||
- ✅ 查询权限: `stuColBatchClass:stuColBatchClass:query`
|
||||
- ✅ 设置权限: `stuColBatchClass:stuColBatchClass:setScope`
|
||||
|
||||
### 操作日志
|
||||
- ✅ 使用 `@Log` 记录设置操作日志
|
||||
- ✅ 业务类型: `BusinessType.UPDATE`
|
||||
|
||||
### 防重复提交
|
||||
- ✅ 使用 `@RepeatSubmit` 防止重复提交
|
||||
|
||||
## 📊 API接口详情
|
||||
|
||||
### 获取收集范围接口
|
||||
- **方法**: GET
|
||||
- **路径**: `/stuColBatchClass/stuColBatchClass/getScope/{batchId}`
|
||||
- **响应格式**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [1, 2, 3] // 班级ID列表
|
||||
}
|
||||
```
|
||||
|
||||
### 设置收集范围接口
|
||||
- **方法**: POST
|
||||
- **路径**: `/stuColBatchClass/stuColBatchClass/setScope`
|
||||
- **请求参数**:
|
||||
- `batchId`: 批次ID
|
||||
- `deptIds`: 班级ID列表
|
||||
- **响应格式**:
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "权限设置成功,共设置 X 个班级权限",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
## 🔍 业务逻辑
|
||||
|
||||
### 获取收集范围流程
|
||||
1. 前端调用 `getScope` API
|
||||
2. 后端查询 `xg_stu_col_batch_class` 表
|
||||
3. 返回该批次下的所有班级ID列表
|
||||
4. 前端将班级ID设置为树形控件的选中状态
|
||||
|
||||
### 设置收集范围流程
|
||||
1. 前端获取树形控件选中的节点
|
||||
2. 调用 `setScope` API传递批次ID和班级ID列表
|
||||
3. 后端清理历史权限数据
|
||||
4. 插入新的权限数据
|
||||
5. 返回操作结果
|
||||
|
||||
## ✅ 质量保证
|
||||
|
||||
### 代码规范
|
||||
- ✅ 遵循项目开发规范
|
||||
- ✅ 使用统一的响应格式
|
||||
- ✅ 完整的异常处理机制
|
||||
- ✅ 详细的注释说明
|
||||
|
||||
### 数据库规范
|
||||
- ✅ 使用逻辑删除,不物理删除数据
|
||||
- ✅ 包含完整的基础字段
|
||||
- ✅ 正确的索引设计
|
||||
|
||||
### 前端规范
|
||||
- ✅ 使用标准的API调用方式
|
||||
- ✅ 完整的错误处理
|
||||
- ✅ 良好的用户体验
|
||||
|
||||
## 🚀 功能验证
|
||||
|
||||
### 测试场景
|
||||
1. **获取收集范围**: 打开收集范围弹窗时,正确显示已设置的班级
|
||||
2. **设置收集范围**: 选择班级后提交,成功保存并显示结果
|
||||
3. **错误处理**: 网络异常或服务器错误时的用户提示
|
||||
4. **权限验证**: 无权限用户无法访问相关功能
|
||||
|
||||
### 预期结果
|
||||
- ✅ 收集范围功能完整可用
|
||||
- ✅ 前后端数据交互正常
|
||||
- ✅ 用户体验良好
|
||||
- ✅ 错误处理完善
|
||||
|
||||
## 📝 后续优化建议
|
||||
|
||||
1. **性能优化**: 考虑对大量班级数据的加载进行分页处理
|
||||
2. **缓存机制**: 对部门树数据进行缓存,提高加载速度
|
||||
3. **批量操作**: 支持批量设置多个批次的收集范围
|
||||
4. **权限细化**: 根据用户角色显示不同的班级选项
|
||||
|
||||
---
|
||||
|
||||
**🎯 目标**: 通过完善前后端API调用,实现了学生信息收集批次收集范围功能的完整可用性,提供了良好的用户体验和稳定的数据操作。
|
||||
@@ -0,0 +1,173 @@
|
||||
# 学生信息收集批次查看详细功能权限范围展示开发记录
|
||||
|
||||
**日期**: 2025-01-17
|
||||
**开发者**: Cursor AI
|
||||
**变更类型**: 功能增强
|
||||
**影响范围**: 前端页面、后端API接口
|
||||
|
||||
## 📋 变更概述
|
||||
|
||||
在学生信息收集批次管理页面的查看详细功能中,新增了权限范围展示功能,用户可以查看批次配置的学院名称、专业名称、班级名称等详细信息。
|
||||
|
||||
## 🔧 具体变更
|
||||
|
||||
### 1. 后端API接口新增
|
||||
|
||||
#### 新增获取权限范围详细信息接口
|
||||
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStuColBatchClassController.java`
|
||||
|
||||
- 添加了 `getScopeDetail` API接口
|
||||
- 接口路径: `GET /stuColBatchClass/stuColBatchClass/getScopeDetail/{batchId}`
|
||||
- 返回指定批次的权限范围详细信息列表
|
||||
- 权限标识: `stuColBatchClass:stuColBatchClass:query`
|
||||
|
||||
#### Mapper层新增方法
|
||||
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStuColBatchClassMapper.java`
|
||||
|
||||
- 新增 `selectScopeDetailByBatchId` 方法
|
||||
- 根据批次ID查询权限范围详细信息
|
||||
|
||||
#### XML映射文件新增SQL
|
||||
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/stuColBatchClass/XgStuColBatchClassMapper.xml`
|
||||
|
||||
- 添加了 `selectScopeDetailByBatchId` 的SQL实现
|
||||
- 查询条件: `batch_id = #{batchId} AND deleted = 0`
|
||||
- 排序规则: 按学院名称、专业名称、班级名称排序
|
||||
- 返回字段: 包含完整的权限范围信息(学院、专业、班级、配置时间等)
|
||||
|
||||
### 2. 前端API接口新增
|
||||
|
||||
#### 新增API方法
|
||||
**文件**: `web/src/api/stuColBatchClass/stuColBatchClass/index.ts`
|
||||
|
||||
- 添加了 `getScopeDetail` API方法(获取权限范围详细信息)
|
||||
- 使用标准的request请求格式
|
||||
|
||||
### 3. 前端页面功能增强
|
||||
|
||||
#### 查看详细对话框优化
|
||||
**文件**: `web/src/views/XgStuColBatch/stuColBatch/index.vue`
|
||||
|
||||
- 将对话框宽度从600px增加到800px,适应更多内容
|
||||
- 使用 `el-tabs` 组件实现标签页切换
|
||||
- 新增"基本信息"和"权限范围"两个标签页
|
||||
|
||||
#### 权限范围展示功能
|
||||
- **基本信息标签页**: 展示批次的基本信息(ID、名称、描述、时间、状态等)
|
||||
- **权限范围标签页**: 展示配置的权限范围详细信息
|
||||
- 使用 `el-alert` 组件显示权限范围说明
|
||||
- 使用 `el-table` 组件展示权限范围列表
|
||||
- 包含序号、学院名称、专业名称、班级名称、配置时间等字段
|
||||
- 支持空数据状态展示
|
||||
|
||||
#### 响应式数据管理
|
||||
- 新增 `viewActiveTab` 响应式引用控制当前激活的标签页
|
||||
- 新增 `scopeDetailList` 响应式引用存储权限范围数据
|
||||
- 新增 `loadScopeDetail` 方法加载权限范围详细信息
|
||||
|
||||
#### 方法优化
|
||||
- 优化 `handleView` 方法,同时加载基本信息和权限范围数据
|
||||
- 优化 `cancelView` 方法,清空所有相关数据并重置标签页
|
||||
|
||||
#### 样式优化
|
||||
- 添加了 `.scope-detail-content`、`.no-data`、`.mb-3` 等样式类
|
||||
- 优化了权限范围展示的视觉效果
|
||||
|
||||
## 🎯 技术特性
|
||||
|
||||
### 数据展示
|
||||
- ✅ 使用标签页分离基本信息和权限范围
|
||||
- ✅ 表格形式展示权限范围详细信息
|
||||
- ✅ 支持空数据状态友好提示
|
||||
- ✅ 时间字段格式化显示
|
||||
|
||||
### 用户体验
|
||||
- ✅ 权限范围说明清晰明了
|
||||
- ✅ 数据加载状态处理完善
|
||||
- ✅ 界面布局美观合理
|
||||
- ✅ 响应式设计适配不同屏幕
|
||||
|
||||
### 数据完整性
|
||||
- ✅ 包含学院名称、专业名称、班级名称
|
||||
- ✅ 包含配置时间信息
|
||||
- ✅ 按逻辑顺序排序展示
|
||||
|
||||
## 📊 API接口详情
|
||||
|
||||
### 请求信息
|
||||
- **方法**: GET
|
||||
- **路径**: `/stuColBatchClass/stuColBatchClass/getScopeDetail/{batchId}`
|
||||
- **参数**: batchId (路径参数,批次ID)
|
||||
|
||||
### 响应格式
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "操作成功",
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"batchId": 123,
|
||||
"classId": 456,
|
||||
"className": "计算机科学与技术2024级1班",
|
||||
"majorId": 789,
|
||||
"majorName": "计算机科学与技术",
|
||||
"collegeId": 101,
|
||||
"collegeName": "信息工程学院",
|
||||
"createTime": "2025-01-17 10:30:00",
|
||||
"updateTime": "2025-01-17 10:30:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 🔍 业务逻辑
|
||||
|
||||
### 数据查询逻辑
|
||||
- 从 `xg_stu_col_batch_class` 表查询指定批次的权限范围
|
||||
- 过滤条件: `batch_id = #{batchId} AND deleted = 0`
|
||||
- 排序规则: `ORDER BY college_name, major_name, class_name`
|
||||
- 返回完整的权限范围信息
|
||||
|
||||
### 前端展示逻辑
|
||||
- 点击"查看详细"按钮时,同时加载基本信息和权限范围
|
||||
- 默认显示"基本信息"标签页
|
||||
- 用户可切换到"权限范围"标签页查看详细信息
|
||||
- 权限范围为空时显示友好的空状态提示
|
||||
|
||||
## ✅ 质量保证
|
||||
|
||||
### 代码规范
|
||||
- ✅ 遵循项目开发规范
|
||||
- ✅ 使用统一的响应格式
|
||||
- ✅ 完整的异常处理机制
|
||||
- ✅ 详细的注释说明
|
||||
|
||||
### 用户体验
|
||||
- ✅ 界面美观,布局合理
|
||||
- ✅ 数据展示清晰,信息完整
|
||||
- ✅ 交互友好,操作简单
|
||||
- ✅ 空状态处理完善
|
||||
|
||||
### 性能优化
|
||||
- ✅ 按需加载权限范围数据
|
||||
- ✅ 合理的数据缓存策略
|
||||
- ✅ 优化的SQL查询语句
|
||||
|
||||
## 🎨 界面效果
|
||||
|
||||
### 查看详细对话框
|
||||
- **基本信息标签页**: 展示批次的所有基本信息
|
||||
- **权限范围标签页**: 展示配置的权限范围列表
|
||||
- 权限范围说明提示
|
||||
- 权限范围统计信息
|
||||
- 详细的权限范围表格
|
||||
|
||||
### 数据展示
|
||||
- 学院名称、专业名称、班级名称清晰展示
|
||||
- 配置时间格式化显示
|
||||
- 序号自动生成,便于查看
|
||||
|
||||
---
|
||||
|
||||
**📝 总结**: 成功实现了学生信息收集批次查看详细功能的权限范围展示,提供了完整的学院、专业、班级信息查看能力,大大提升了用户的使用体验和数据透明度。
|
||||
@@ -0,0 +1,151 @@
|
||||
# 学生信息收集批次班级权限设置API开发记录
|
||||
|
||||
**日期**: 2025-01-17
|
||||
**开发者**: Cursor AI
|
||||
**变更类型**: 新增功能
|
||||
**影响范围**: 后端API接口
|
||||
|
||||
## 📋 变更概述
|
||||
|
||||
在 `XgStuColBatchClassController.java` 中新增了 `setScope` API接口,用于设置学生信息收集批次的班级权限。
|
||||
|
||||
## 🔧 具体变更
|
||||
|
||||
### 1. Controller层变更
|
||||
|
||||
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStuColBatchClassController.java`
|
||||
|
||||
#### 新增内容
|
||||
- 添加了 `setScope` API接口
|
||||
- 接口路径: `POST /stuColBatchClass/stuColBatchClass/setScope`
|
||||
- 入参: `batchId` (批次ID)、`deptIds` (授权的班级ID列表)
|
||||
- 添加了事务注解 `@Transactional(rollbackFor = Exception.class)`
|
||||
- 直接注入 `XgStuColBatchClassMapper` 用于数据库操作
|
||||
|
||||
#### 实现逻辑
|
||||
1. **第一步**: 遍历deptIds,通过SQL查询班级信息
|
||||
2. **第二步**: 清理历史权限数据(逻辑删除)
|
||||
3. **第三步**: 插入新的权限数据
|
||||
|
||||
### 2. Mapper层变更
|
||||
|
||||
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/mapper/XgStuColBatchClassMapper.java`
|
||||
|
||||
#### 新增方法
|
||||
- `clearHistoryPermissions(Long batchId)`: 清理历史权限数据
|
||||
- `selectClassInfoByDeptIds(List<Long> deptIds)`: 根据部门ID查询班级信息
|
||||
|
||||
### 3. XML映射文件变更
|
||||
|
||||
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/resources/mapper/stuColBatchClass/XgStuColBatchClassMapper.xml`
|
||||
|
||||
#### 新增内容
|
||||
- 添加了 `XgStuColBatchClassVoResult` ResultMap
|
||||
- 实现了 `clearHistoryPermissions` 的SQL更新语句
|
||||
- 实现了 `selectClassInfoByDeptIds` 的SQL查询语句
|
||||
- 查询条件: `deleted = 0 AND class_status = '1'`
|
||||
|
||||
### 4. VO类规范修复
|
||||
|
||||
**文件**: `backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/domain/vo/XgStuColBatchClassVo.java`
|
||||
|
||||
#### 修复内容
|
||||
- 添加了基础字段: `createBy`、`createTime`、`updateBy`、`updateTime`
|
||||
- 添加了 `@JsonFormat` 注解进行时间格式化
|
||||
- 符合项目VO类基础字段规范要求
|
||||
|
||||
## 🎯 技术特性
|
||||
|
||||
### 数据一致性保证
|
||||
- ✅ 使用 `@Transactional` 注解确保事务一致性
|
||||
- ✅ 先清理历史数据,再插入新数据
|
||||
- ✅ 异常时自动回滚
|
||||
|
||||
### 参数验证
|
||||
- ✅ 使用 `@NotNull` 和 `@NotEmpty` 进行参数校验
|
||||
- ✅ 批次ID和班级ID列表均为必填项
|
||||
|
||||
### 权限控制
|
||||
- ✅ 使用 `@SaCheckPermission` 进行权限验证
|
||||
- ✅ 权限标识: `stuColBatchClass:stuColBatchClass:setScope`
|
||||
|
||||
### 操作日志
|
||||
- ✅ 使用 `@Log` 记录操作日志
|
||||
- ✅ 业务类型: `BusinessType.UPDATE`
|
||||
|
||||
### 防重复提交
|
||||
- ✅ 使用 `@RepeatSubmit` 防止重复提交
|
||||
|
||||
## 📊 API接口详情
|
||||
|
||||
### 请求信息
|
||||
- **方法**: POST
|
||||
- **路径**: `/stuColBatchClass/stuColBatchClass/setScope`
|
||||
- **Content-Type**: application/x-www-form-urlencoded
|
||||
|
||||
### 请求参数
|
||||
| 参数名 | 类型 | 必填 | 说明 |
|
||||
|--------|------|------|------|
|
||||
| batchId | Long | 是 | 批次ID |
|
||||
| deptIds | List<Long> | 是 | 授权的班级ID列表 |
|
||||
|
||||
### 响应格式
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "权限设置成功,共设置 X 个班级权限",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
## 🔍 业务逻辑
|
||||
|
||||
### 第一步:查询班级信息
|
||||
- 通过 `dept_id` 关联 `xg_class_msg` 表的 `id` 字段
|
||||
- 查询条件: `deleted = 0 AND class_status = '1'`
|
||||
- 获取字段: `college_id`, `college_name`, `major_id`, `major_name`, `id`, `class_name`
|
||||
|
||||
### 第二步:清理历史权限
|
||||
- SQL: `UPDATE xg_stu_col_batch_class SET deleted = 1 WHERE batch_id = #{batchId}`
|
||||
- 逻辑删除,保留历史数据
|
||||
|
||||
### 第三步:插入新权限
|
||||
- 遍历查询到的班级信息
|
||||
- 构建 `XgStuColBatchClass` 实体对象
|
||||
- 批量插入到 `xg_stu_col_batch_class` 表
|
||||
|
||||
## ✅ 质量保证
|
||||
|
||||
### 代码规范
|
||||
- ✅ 遵循项目开发规范
|
||||
- ✅ 使用统一的响应格式 `R<Void>`
|
||||
- ✅ 完整的异常处理机制
|
||||
- ✅ 详细的注释说明
|
||||
|
||||
### 数据库规范
|
||||
- ✅ 使用逻辑删除,不物理删除数据
|
||||
- ✅ 包含完整的基础字段
|
||||
- ✅ 事务一致性保证
|
||||
|
||||
### 安全性
|
||||
- ✅ 参数验证防止非法输入
|
||||
- ✅ 权限控制确保访问安全
|
||||
- ✅ 防重复提交保护
|
||||
|
||||
## 🚀 后续优化建议
|
||||
|
||||
1. **性能优化**: 可考虑使用批量插入提高性能
|
||||
2. **日志完善**: 可添加更详细的操作日志记录
|
||||
3. **缓存机制**: 可考虑添加缓存减少数据库查询
|
||||
4. **异步处理**: 对于大量数据可考虑异步处理
|
||||
|
||||
## 📝 测试建议
|
||||
|
||||
1. **单元测试**: 测试各个步骤的逻辑正确性
|
||||
2. **集成测试**: 测试完整的API调用流程
|
||||
3. **异常测试**: 测试各种异常情况的处理
|
||||
4. **性能测试**: 测试大量数据的处理性能
|
||||
|
||||
---
|
||||
|
||||
**备注**: 本次开发严格按照项目规范进行,确保了代码质量和数据一致性。
|
||||
@@ -0,0 +1,149 @@
|
||||
# 学生信息收集批次管理页面收集范围功能修复
|
||||
|
||||
**修改时间**: 2025-01-27 15:30:00
|
||||
**修改人**: wuzilong
|
||||
**修改文件**: `web/src/views/XgStuColBatch/stuColBatch/index.vue`
|
||||
|
||||
## 问题描述
|
||||
|
||||
在学生信息收集批次管理页面的收集范围功能中,存在以下问题:
|
||||
|
||||
1. **现象**: 第一次配置收集范围后(如配置11个权限),第二次配置时去掉其中一个勾选,第三次打开收集范围弹窗时,发现之前去掉勾选的权限又重新被勾选了
|
||||
2. **后台数据**: 从后台API接口看,数据只返回了10条(正确的),但前端显示仍然包含已取消的权限
|
||||
3. **根本原因**: 树形组件的勾选状态管理存在问题,历史勾选状态没有正确清空
|
||||
|
||||
## 解决方案
|
||||
|
||||
### 核心修改思路
|
||||
每次打开收集范围弹窗界面时,首先清空部门树的勾选项目,然后再将选择的内容回显。
|
||||
|
||||
### 具体修改内容
|
||||
|
||||
#### 1. 修改 `handleScope` 方法
|
||||
```javascript
|
||||
/** 收集范围按钮操作 */
|
||||
const handleScope = async (row: StuColBatchVO) => {
|
||||
currentBatch.value = row;
|
||||
// 先清空勾选状态
|
||||
checkedDeptIds.value = [];
|
||||
|
||||
await loadDeptTree();
|
||||
await loadCurrentScope(row.id);
|
||||
scopeDialog.visible = true;
|
||||
|
||||
// 使用nextTick确保DOM更新完成后再设置勾选状态
|
||||
await nextTick();
|
||||
if (scopeTreeRef.value && checkedDeptIds.value.length > 0) {
|
||||
scopeTreeRef.value.setCheckedKeys(checkedDeptIds.value);
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
#### 2. 移除树形组件的 `:default-checked-keys` 属性
|
||||
```vue
|
||||
<!-- 修改前 -->
|
||||
<el-tree
|
||||
ref="scopeTreeRef"
|
||||
:data="deptTreeData"
|
||||
show-checkbox
|
||||
default-expand-all
|
||||
node-key="id"
|
||||
:default-checked-keys="checkedDeptIds"
|
||||
:props="{ children: 'children', label: 'label' }"
|
||||
:check-strictly="false"
|
||||
/>
|
||||
|
||||
<!-- 修改后 -->
|
||||
<el-tree
|
||||
ref="scopeTreeRef"
|
||||
:data="deptTreeData"
|
||||
show-checkbox
|
||||
default-expand-all
|
||||
node-key="id"
|
||||
:props="{ children: 'children', label: 'label' }"
|
||||
:check-strictly="false"
|
||||
/>
|
||||
```
|
||||
|
||||
#### 3. 添加弹窗关闭事件处理
|
||||
```vue
|
||||
<el-dialog title="设置收集范围" v-model="scopeDialog.visible" width="500px" append-to-body @close="handleScopeDialogClose">
|
||||
```
|
||||
|
||||
#### 4. 新增 `handleScopeDialogClose` 方法
|
||||
```javascript
|
||||
/** 处理收集范围弹窗关闭 */
|
||||
const handleScopeDialogClose = () => {
|
||||
// 清空相关状态
|
||||
currentBatch.value = null;
|
||||
checkedDeptIds.value = [];
|
||||
// 清空树形组件的勾选状态
|
||||
if (scopeTreeRef.value) {
|
||||
scopeTreeRef.value.setCheckedKeys([]);
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
#### 5. 修改 `cancelScope` 方法
|
||||
```javascript
|
||||
/** 取消收集范围设置 */
|
||||
const cancelScope = () => {
|
||||
scopeDialog.visible = false;
|
||||
currentBatch.value = null;
|
||||
checkedDeptIds.value = [];
|
||||
// 清空树形组件的勾选状态
|
||||
if (scopeTreeRef.value) {
|
||||
scopeTreeRef.value.setCheckedKeys([]);
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
#### 6. 修改 `submitScope` 方法
|
||||
```javascript
|
||||
if (response && response.code === 200) {
|
||||
ElMessage.success(response.msg || '收集范围设置成功');
|
||||
scopeDialog.visible = false;
|
||||
// 提交成功后清空状态
|
||||
handleScopeDialogClose();
|
||||
} else {
|
||||
ElMessage.error(response?.msg || '设置收集范围失败');
|
||||
}
|
||||
```
|
||||
|
||||
## 技术要点
|
||||
|
||||
### 1. 状态管理优化
|
||||
- **问题**: 使用 `:default-checked-keys` 只在组件初始化时生效
|
||||
- **解决**: 改为手动调用 `setCheckedKeys()` 方法控制勾选状态
|
||||
|
||||
### 2. 时序控制
|
||||
- **问题**: DOM更新和状态设置的时序问题
|
||||
- **解决**: 使用 `nextTick()` 确保DOM更新完成后再设置勾选状态
|
||||
|
||||
### 3. 状态清理
|
||||
- **问题**: 弹窗关闭时状态没有完全清理
|
||||
- **解决**: 在弹窗关闭、取消、提交成功时都进行状态清理
|
||||
|
||||
## 测试验证
|
||||
|
||||
### 测试场景
|
||||
1. **首次配置**: 配置11个权限,保存成功
|
||||
2. **修改配置**: 去掉1个权限,保存成功
|
||||
3. **再次打开**: 验证只显示10个勾选,不包含已取消的权限
|
||||
4. **多次操作**: 重复上述操作,确保状态正确
|
||||
|
||||
### 预期结果
|
||||
- 每次打开弹窗时,勾选状态与后台数据完全一致
|
||||
- 历史勾选状态不会影响当前显示
|
||||
- 弹窗关闭后状态完全清理
|
||||
|
||||
## 影响范围
|
||||
|
||||
- **功能影响**: 仅影响收集范围功能的显示逻辑,不影响数据保存
|
||||
- **用户体验**: 修复了勾选状态显示错误的问题,提升用户体验
|
||||
- **代码质量**: 优化了状态管理逻辑,提高了代码的健壮性
|
||||
|
||||
## 相关文档
|
||||
|
||||
- 前端开发规范: `.cursor/cursorrules-frontend.md`
|
||||
- 学生信息收集批次管理API文档: `docs/开发文档/API/学生信息收集批次管理API.md`
|
||||
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
Navicat Premium Dump SQL
|
||||
|
||||
Source Server : 47.99.164.66 hn02le.34lkdLKD
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 50736 (5.7.36)
|
||||
Source Host : 47.99.164.66:3306
|
||||
Source Schema : hzdyjs_xg
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 50736 (5.7.36)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 26/07/2025 23:24:40
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for xg_student_manager
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `xg_student_manager`;
|
||||
CREATE TABLE `xg_student_manager` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`manager_name` varchar(100) NOT NULL COMMENT '管理员姓名',
|
||||
`manager_type` char(1) NOT NULL COMMENT '管理员类型(1 全校管理员 2 自定义管理员 3 班主任)',
|
||||
`manager_level` int(11) DEFAULT '1' COMMENT '管理级别(1-3,1为最高)',
|
||||
`user_id` bigint(20) DEFAULT NULL COMMENT '关联用户ID',
|
||||
`phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
||||
`gender` char(1) DEFAULT '0' COMMENT '性别(0男 1女 2未知)',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user_id` (`user_id`),
|
||||
KEY `idx_manager_type` (`manager_type`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生管理员信息表';
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
Navicat Premium Dump SQL
|
||||
|
||||
Source Server : 47.99.164.66 hn02le.34lkdLKD
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 50736 (5.7.36)
|
||||
Source Host : 47.99.164.66:3306
|
||||
Source Schema : hzdyjs_xg
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 50736 (5.7.36)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 26/07/2025 23:24:33
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for xg_student_manager_source
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `xg_student_manager_source`;
|
||||
CREATE TABLE `xg_student_manager_source` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`manager_id` bigint(20) NOT NULL COMMENT '管理员ID',
|
||||
`permission_type` char(1) DEFAULT '1' COMMENT '权限类型(1查看 2编辑 3完全管理)',
|
||||
`auth_type` char(1) NOT NULL COMMENT '授权类型(1全校级 2自定义 3班主任)',
|
||||
`auth_source` bigint(20) DEFAULT NULL COMMENT '授权来源ID(对应班级id)',
|
||||
`status` char(1) DEFAULT '0' COMMENT '状态(0有效 1已撤销)',
|
||||
`deleted` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`tenant_id` bigint(20) DEFAULT '0' COMMENT '租户编号',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_manager_id` (`manager_id`),
|
||||
KEY `idx_auth_source` (`auth_source`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生管理员授权关系表';
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
Navicat Premium Dump SQL
|
||||
|
||||
Source Server : 47.99.164.66 hn02le.34lkdLKD
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 50736 (5.7.36)
|
||||
Source Host : 47.99.164.66:3306
|
||||
Source Schema : hzdyjs_xg
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 50736 (5.7.36)
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 26/07/2025 23:24:16
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for xg_student_msg
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `xg_student_msg`;
|
||||
CREATE TABLE `xg_student_msg` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
`student_no` varchar(32) NOT NULL COMMENT '学号',
|
||||
`id_card` varchar(18) DEFAULT NULL COMMENT '身份证号',
|
||||
`name` varchar(50) NOT NULL COMMENT '姓名',
|
||||
`name_english` varchar(100) DEFAULT NULL COMMENT '英文姓名',
|
||||
`former_name` varchar(50) DEFAULT NULL COMMENT '曾用名',
|
||||
`gender` char(1) NOT NULL COMMENT '性别:0-男,1-女',
|
||||
`birth_date` date DEFAULT NULL COMMENT '出生日期',
|
||||
`nationality` varchar(20) DEFAULT NULL COMMENT '民族 ',
|
||||
`native_place` varchar(20) DEFAULT NULL COMMENT '籍贯',
|
||||
`political_status` varchar(20) DEFAULT NULL COMMENT '政治面貌',
|
||||
`hukou_location` varchar(1000) DEFAULT NULL COMMENT '户籍所在地',
|
||||
`home_address` varchar(1000) DEFAULT NULL COMMENT '家庭地址',
|
||||
`current_address` varchar(1000) DEFAULT NULL COMMENT '现住址',
|
||||
`postal_code` varchar(10) DEFAULT NULL COMMENT '邮政编码',
|
||||
`photo_url` varchar(500) DEFAULT NULL COMMENT '照片URL',
|
||||
`photo_path` varchar(500) DEFAULT NULL COMMENT '学生照片存储路径',
|
||||
`phone` varchar(20) DEFAULT NULL COMMENT '手机号码',
|
||||
`is_boarder` tinyint(1) DEFAULT '0' COMMENT '是否住校:0-否,1-是',
|
||||
`education_level` varchar(20) DEFAULT NULL COMMENT '文化程度',
|
||||
`household_register_type` varchar(20) DEFAULT NULL COMMENT '户口类型:农业、非农业',
|
||||
`religion` varchar(200) DEFAULT NULL COMMENT '宗教信仰',
|
||||
`source_region` varchar(100) DEFAULT NULL COMMENT '生源地区(省市县)',
|
||||
`graduate_school` varchar(100) DEFAULT NULL COMMENT '毕业院校',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '电子邮箱',
|
||||
`qq` varchar(20) DEFAULT NULL COMMENT 'QQ号码',
|
||||
`wechat` varchar(50) DEFAULT NULL COMMENT '微信号',
|
||||
`marital_status` varchar(10) DEFAULT NULL COMMENT '婚姻状况:1 未婚、2 已婚、3 离异、4 丧偶 ',
|
||||
`emergency_contact_name` varchar(50) DEFAULT NULL COMMENT '紧急联系人姓名',
|
||||
`emergency_contact_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系人电话',
|
||||
`emergency_contact_relation` varchar(100) DEFAULT NULL COMMENT '紧急联系人关系',
|
||||
`is_poor_student` tinyint(1) DEFAULT '0' COMMENT '是否贫困生:0-否,1-是',
|
||||
`is_minority` tinyint(1) DEFAULT '0' COMMENT '是否少数民族:0-否,1-是',
|
||||
`is_disabled` tinyint(1) DEFAULT '0' COMMENT '是否残疾:0-否,1-是',
|
||||
`is_orphan` tinyint(1) DEFAULT '0' COMMENT '是否孤儿:0-否,1-是',
|
||||
`is_left_behind_child` tinyint(1) DEFAULT '0' COMMENT '是否留守儿童:0-否,1-是',
|
||||
`is_single_child` tinyint(1) DEFAULT '0' COMMENT '是否独生子女:0-否,1-是',
|
||||
`is_low_income` tinyint(1) DEFAULT '0' COMMENT '是否低保:0-否,1-是',
|
||||
`has_loan` tinyint(1) DEFAULT '0' COMMENT '是否有助学贷款:0-否,1-是',
|
||||
`loan_amount` decimal(10,2) DEFAULT NULL COMMENT '助学贷款金额',
|
||||
`specialties` text COMMENT '特长爱好',
|
||||
`awards` text COMMENT '获奖情况',
|
||||
`violations` text COMMENT '违纪记录',
|
||||
`social_activities` text COMMENT '社会活动',
|
||||
`father_name` varchar(50) DEFAULT NULL COMMENT '父亲姓名',
|
||||
`father_phone` varchar(20) DEFAULT NULL COMMENT '父亲电话',
|
||||
`father_work_unit` varchar(1000) DEFAULT NULL COMMENT '父亲工作单位',
|
||||
`mother_name` varchar(50) DEFAULT NULL COMMENT '母亲姓名',
|
||||
`mother_phone` varchar(20) DEFAULT NULL COMMENT '母亲电话',
|
||||
`mother_work_unit` varchar(1000) DEFAULT NULL COMMENT '母亲工作单位',
|
||||
`guardian_name` varchar(50) DEFAULT NULL COMMENT '监护人姓名',
|
||||
`guardian_phone` varchar(20) DEFAULT NULL COMMENT '监护人电话',
|
||||
`guardian_relation` varchar(20) DEFAULT NULL COMMENT '监护人关系',
|
||||
`family_income` decimal(12,2) DEFAULT NULL COMMENT '家庭年收入',
|
||||
`per_capita_income` decimal(12,2) DEFAULT NULL COMMENT '人均收入',
|
||||
`income_source` varchar(100) DEFAULT NULL COMMENT '收入来源',
|
||||
`family_economic_status` varchar(20) DEFAULT NULL COMMENT '家庭经济状况:富裕、一般、困难、特困',
|
||||
`family_members` tinyint(2) DEFAULT NULL COMMENT '家庭成员数量',
|
||||
`height` decimal(10,2) DEFAULT NULL COMMENT '身高(cm)',
|
||||
`weight` decimal(10,2) DEFAULT NULL COMMENT '体重(kg)',
|
||||
`blood_type` varchar(10) DEFAULT NULL COMMENT '血型',
|
||||
`health_status` varchar(1000) DEFAULT NULL COMMENT '健康状况',
|
||||
`special_condition` varchar(1000) DEFAULT NULL COMMENT '特殊体质或疾病',
|
||||
`medical_history` varchar(1000) DEFAULT NULL COMMENT '病史',
|
||||
`allergies` varchar(1000) DEFAULT NULL COMMENT '过敏史',
|
||||
`disability_type` varchar(50) DEFAULT NULL COMMENT '残疾类型 1 - 视力残疾 2 - 听力残疾 3 - 智力残疾 9 - 其他残疾',
|
||||
`disability_level` varchar(20) DEFAULT NULL COMMENT '残疾等级',
|
||||
`admission_category` varchar(20) DEFAULT NULL COMMENT '录取类别:统招、自主招生、专项计划等',
|
||||
`student_status` char(1) DEFAULT '1' COMMENT '学籍状态:1-在籍,2-休学,3-复学,4-退学,5-毕业',
|
||||
`enrollment_year` int(4) DEFAULT NULL COMMENT '入学年份',
|
||||
`enrollment_date` date DEFAULT NULL COMMENT '入学日期',
|
||||
`bank_card_no` varchar(30) DEFAULT NULL COMMENT '银行卡号',
|
||||
`bank_name` varchar(100) DEFAULT NULL COMMENT '开户银行',
|
||||
`bank_branch` varchar(100) DEFAULT NULL COMMENT '开户支行',
|
||||
`card_holder_name` varchar(50) DEFAULT NULL COMMENT '持卡人姓名',
|
||||
`info_status` char(1) DEFAULT '1' COMMENT '信息状态:1-正常,2-待审核,3-审核中,4-已驳回,5-已锁定',
|
||||
`data_source` varchar(20) DEFAULT 'manual' COMMENT '数据来源:manual-手工录入,import-批量导入,sync-系统同步',
|
||||
`last_batch_id` bigint(20) DEFAULT NULL COMMENT '最后修改批次ID',
|
||||
`last_audit_time` datetime DEFAULT NULL COMMENT '最后审核时间',
|
||||
`is_complete` tinyint(1) DEFAULT '0' COMMENT '信息是否完整:0-不完整,1-完整',
|
||||
`completion_rate` decimal(10,2) DEFAULT '0.00' COMMENT '完整度百分比',
|
||||
`school_system` int(2) DEFAULT '4' COMMENT '学制(年)- 预留,数据从班级表关联',
|
||||
`academic_level` varchar(20) DEFAULT NULL COMMENT '学历层次 - 预留,数据从班级表关联',
|
||||
`training_type` varchar(20) DEFAULT NULL COMMENT '培养方式:全日制、在职、函授、夜大等 - 预留,数据从班级表关联',
|
||||
`major_id` varchar(100) DEFAULT NULL COMMENT '专业id - 预留,数据从班级表关联',
|
||||
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称 - 预留,数据从班级表关联',
|
||||
`class_id` varchar(100) DEFAULT NULL COMMENT '班级id - 预留,数据从班级表关联',
|
||||
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称 - 预留,数据从班级表关联',
|
||||
`grade` varchar(10) DEFAULT NULL COMMENT '年级 - 预留,数据从班级表关联',
|
||||
`college_id` varchar(100) DEFAULT NULL COMMENT '学院id - 预留,数据从班级表关联',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称 - 预留,数据从班级表关联',
|
||||
`counselor_id` bigint(20) DEFAULT NULL COMMENT '辅导员ID - 预留,数据从班级表关联',
|
||||
`counselor_name` varchar(50) DEFAULT NULL COMMENT '辅导员姓名 - 预留,数据从班级表关联',
|
||||
`class_teacher_id` bigint(20) DEFAULT NULL COMMENT '班主任ID - 预留,数据从班级表关联',
|
||||
`class_teacher_name` varchar(50) DEFAULT NULL COMMENT '班主任姓名 - 预留,数据从班级表关联',
|
||||
`dormitory_building` varchar(100) DEFAULT NULL COMMENT '宿舍楼栋 - 预留,数据从班级表关联',
|
||||
`dormitory_room` varchar(100) DEFAULT NULL COMMENT '宿舍房间号 - 预留,数据从班级表关联',
|
||||
`ext_field1` varchar(200) DEFAULT NULL COMMENT '扩展字段1',
|
||||
`ext_field2` varchar(200) DEFAULT NULL COMMENT '扩展字段2',
|
||||
`ext_field3` varchar(200) DEFAULT NULL COMMENT '扩展字段3',
|
||||
`ext_field4` varchar(200) DEFAULT NULL COMMENT '扩展字段4',
|
||||
`ext_field5` varchar(500) DEFAULT NULL COMMENT '扩展字段5',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_student_no_tenant` (`student_no`,`tenant_id`),
|
||||
UNIQUE KEY `uk_id_card_tenant` (`id_card`,`tenant_id`),
|
||||
KEY `idx_tenant_id` (`tenant_id`),
|
||||
KEY `idx_deleted` (`deleted`),
|
||||
KEY `idx_name` (`name`),
|
||||
KEY `idx_student_status` (`student_status`),
|
||||
KEY `idx_info_status` (`info_status`),
|
||||
KEY `idx_enrollment_year` (`enrollment_year`),
|
||||
KEY `idx_last_batch_id` (`last_batch_id`),
|
||||
KEY `idx_phone` (`phone`),
|
||||
KEY `idx_create_time` (`create_time`),
|
||||
KEY `idx_status_filter` (`tenant_id`,`student_status`,`info_status`,`deleted`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
@@ -0,0 +1,61 @@
|
||||
-- =============================================
|
||||
-- 学生信息收集批次管理表设计
|
||||
-- 创建时间: 2025-01-27
|
||||
-- 说明: 用于管理学生信息收集的批次信息和班级权限
|
||||
-- =============================================
|
||||
|
||||
-- 1. 学生信息收集批次表
|
||||
DROP TABLE IF EXISTS `xg_stu_col_batch`;
|
||||
CREATE TABLE `xg_stu_col_batch` (
|
||||
`id` bigint(20) NOT NULL COMMENT '批次ID',
|
||||
`batch_name` varchar(100) NOT NULL COMMENT '批次名称',
|
||||
`description` text COMMENT '批次描述',
|
||||
`start_time` datetime NOT NULL COMMENT '开始时间',
|
||||
`end_time` datetime NOT NULL COMMENT '结束时间',
|
||||
`status` char(1) NOT NULL DEFAULT '0' COMMENT '状态(0正常 1停用)',
|
||||
`collection_type` varchar(50) NOT NULL COMMENT '收集类型 1 - 新学期收集 2 - 其他',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_status` (`status`),
|
||||
KEY `idx_start_time` (`start_time`),
|
||||
KEY `idx_end_time` (`end_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生信息收集批次表';
|
||||
|
||||
-- 2. 批次班级权限表
|
||||
DROP TABLE IF EXISTS `xg_stu_col_batch_class`;
|
||||
CREATE TABLE `xg_stu_col_batch_class` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`batch_id` bigint(20) NOT NULL COMMENT '批次ID',
|
||||
`class_id` bigint(20) NOT NULL COMMENT '班级ID',
|
||||
`class_name` varchar(100) NOT NULL COMMENT '班级名称',
|
||||
`major_id` bigint(20) DEFAULT NULL COMMENT '专业ID',
|
||||
`major_name` varchar(50) DEFAULT NULL COMMENT '专业名称',
|
||||
`college_id` bigint(20) DEFAULT NULL COMMENT '院系ID',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '院系名称',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
|
||||
-- 基础字段
|
||||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) DEFAULT '0' COMMENT '删除标志(0代表存在 1代表删除)',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_batch_class` (`batch_id`, `class_id`),
|
||||
KEY `idx_batch_id` (`batch_id`),
|
||||
KEY `idx_class_id` (`class_id`),
|
||||
KEY `idx_grade_id` (`major_id`),
|
||||
KEY `idx_department_id` (`college_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生信息收集批次班级权限表';
|
||||
Reference in new issue
Block a user