提交代码
This commit is contained in:
1 parent
e450a8ffe7
commit
2e51d1154d
37 files changed
+7428
-137
No files matched your search
@@ -0,0 +1,90 @@
|
||||
# 代码调整记录 - 2025-01-20 - wuzilong
|
||||
|
||||
## 📅 变更时间
|
||||
2025-01-20 16:30:00
|
||||
|
||||
## 🎯 变更内容
|
||||
创建学生请假管理系统的数据库设计文件
|
||||
|
||||
## 📁 新增文件
|
||||
|
||||
### 1. 学生请假表结构文件
|
||||
- **文件路径**: `docs/设计文档/database/学生请假/xg_student_leave.sql`
|
||||
- **功能**: 学生请假表结构定义
|
||||
- **主要字段**:
|
||||
- 基础字段:id、tenant_id、create_dept、create_by、create_time、update_by、update_time、deleted
|
||||
- 学生信息:student_id、student_name、student_no、class_id、class_name、major_id、major_name、college_id、college_name
|
||||
- 请假信息:leave_type_code、leave_type_name、start_time、end_time、leave_duration、is_leave_school
|
||||
- 联系信息:emergency_contact、emergency_phone
|
||||
- 请假详情:leave_reason、leave_location、attachment_oss_ids
|
||||
- 审批信息:approval_status、approval_opinion、approval_time、approval_by、approval_by_name
|
||||
- 销假信息:cancel_status、cancel_time、cancel_location、cancel_photo_oss_ids、cancel_remark
|
||||
|
||||
### 2. 示例数据文件
|
||||
- **文件路径**: `docs/设计文档/database/学生请假/xg_student_leave_sample_data.sql`
|
||||
- **功能**: 提供8条不同类型的请假记录示例
|
||||
- **示例类型**:
|
||||
- 事假申请(已审批通过,未销假)
|
||||
- 病假申请(已审批通过,已销假)
|
||||
- 外出请假(待审批)
|
||||
- 回家请假(审批拒绝)
|
||||
- 其他请假(已审批通过,已销假)
|
||||
- 事假申请(待审批)
|
||||
- 病假申请(已审批通过,逾期未销假)
|
||||
- 外出请假(已取消)
|
||||
|
||||
### 3. 设计说明文档
|
||||
- **文件路径**: `docs/设计文档/database/学生请假/README.md`
|
||||
- **功能**: 详细说明数据库设计和使用方法
|
||||
- **内容包含**:
|
||||
- 数据表设计说明
|
||||
- 索引设计(单列索引和复合索引)
|
||||
- 示例数据说明
|
||||
- 使用说明和常见查询示例
|
||||
- 注意事项和版本历史
|
||||
|
||||
## 🔍 索引设计
|
||||
|
||||
### 单列索引
|
||||
- 租户索引:`idx_tenant_id`
|
||||
- 学生索引:`idx_student_id`
|
||||
- 学号索引:`idx_student_no`
|
||||
- 班级索引:`idx_class_id`
|
||||
- 学院索引:`idx_college_id`
|
||||
- 请假类型索引:`idx_leave_type_code`
|
||||
- 时间索引:`idx_start_time`、`idx_end_time`
|
||||
- 状态索引:`idx_approval_status`、`idx_cancel_status`
|
||||
- 创建时间索引:`idx_create_time`
|
||||
- 离校状态索引:`idx_is_leave_school`
|
||||
|
||||
### 复合索引
|
||||
- 学生+时间范围:`idx_student_time_range`
|
||||
- 班级+审批状态:`idx_class_approval_status`
|
||||
- 学院+请假类型:`idx_college_leave_type`
|
||||
- 时间范围+审批状态:`idx_time_approval_status`
|
||||
|
||||
## ✅ 设计特点
|
||||
|
||||
1. **符合项目规范**: 包含统一的基础字段,支持多租户和逻辑删除
|
||||
2. **完整业务覆盖**: 涵盖请假申请、审批、销假全流程
|
||||
3. **性能优化**: 合理的索引设计,支持高效查询
|
||||
4. **扩展性强**: 支持附件上传、地理位置记录等扩展功能
|
||||
5. **数据完整性**: 包含审批状态、销假状态等完整状态管理
|
||||
|
||||
## 🔗 关联文件
|
||||
|
||||
- **请假类型配置表**: `docs/设计文档/database/学生请假/xg_leave_type_config.sql`(已存在)
|
||||
- **项目规范**: `.cursor/cursorrules-backend.md`(数据库开发规范)
|
||||
|
||||
## 📝 后续工作
|
||||
|
||||
1. 基于此表结构开发后端API接口
|
||||
2. 开发前端请假申请和审批页面
|
||||
3. 开发移动端请假功能
|
||||
4. 编写API文档和测试脚本
|
||||
|
||||
---
|
||||
|
||||
**变更人**: wuzilong
|
||||
**审核人**: -
|
||||
**状态**: 已完成
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,99 @@
|
||||
# 学生请假类型配置页面字典显示问题修复记录
|
||||
|
||||
## 修改时间
|
||||
2025-01-27 10:30:00
|
||||
|
||||
## 变更内容
|
||||
修复了学生请假类型配置管理页面中字典数据显示错误的问题。
|
||||
|
||||
## 变更原因
|
||||
通过分析发现,页面中使用了 `dict-tag` 组件显示字典数据,但缺少字典数据的加载,导致出现 `Cannot read properties of undefined (reading 'some')` 错误。
|
||||
|
||||
## 问题分析
|
||||
1. **错误信息**: `index.vue:61 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'some')`
|
||||
2. **问题根因**: 页面中使用了 `sys_yesno` 字典,但没有通过 `useDict` 加载字典数据
|
||||
3. **影响范围**: 表格中的字典字段显示异常,表单中的字典选择器无法正常工作
|
||||
|
||||
## 解决方案
|
||||
1. **添加字典数据加载**: 在script部分添加 `sys_yesno` 字典的加载
|
||||
2. **修复表单选择器**: 将表单中的输入框改为下拉选择器,使用字典数据
|
||||
|
||||
## 变更详情
|
||||
|
||||
### 1. 添加字典数据加载
|
||||
**文件**: `web/src/views/xg/xsjcxx/xgLeaveTypeConfig/xgLeaveTypeConfig/index.vue`
|
||||
|
||||
**添加内容**:
|
||||
```javascript
|
||||
// 加载字典数据
|
||||
const { sys_yesno } = toRefs<any>(
|
||||
proxy?.useDict('sys_yesno')
|
||||
);
|
||||
```
|
||||
|
||||
### 2. 修复表单选择器
|
||||
**修改前**:
|
||||
```vue
|
||||
<el-form-item label="请假是否需要上传地理位置" prop="needLocationOnApply">
|
||||
<el-input v-model="form.needLocationOnApply" placeholder="请输入请假是否需要上传地理位置" />
|
||||
</el-form-item>
|
||||
```
|
||||
|
||||
**修改后**:
|
||||
```vue
|
||||
<el-form-item label="请假是否需要上传地理位置" prop="needLocationOnApply">
|
||||
<el-select v-model="form.needLocationOnApply" placeholder="请选择请假是否需要上传地理位置">
|
||||
<el-option
|
||||
v-for="dict in sys_yesno"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
```
|
||||
|
||||
### 3. 添加必要的类型定义
|
||||
**添加内容**:
|
||||
```typescript
|
||||
interface DialogOption {
|
||||
visible: boolean;
|
||||
title: string;
|
||||
}
|
||||
|
||||
interface PageData<T, Q> {
|
||||
form: T;
|
||||
queryParams: Q;
|
||||
rules: Record<string, any[]>;
|
||||
}
|
||||
```
|
||||
|
||||
## 修复的字段
|
||||
- 请假是否需要上传地理位置 (needLocationOnApply)
|
||||
- 销假是否必须上传照片 (needPhotoOnCancel)
|
||||
- 销假是否需要上传地理位置 (needLocationOnCancel)
|
||||
- 非离校请假是否需要销假 (needCancelForNonLeave)
|
||||
- 是否可以提前请假 (canApplyInAdvance)
|
||||
- 是否开启 (isEnabled)
|
||||
|
||||
## 技术说明
|
||||
1. **字典数据**: 使用 `sys_yesno` 字典,值为 "0"-否,"1"-是
|
||||
2. **组件使用**: 表格中使用 `dict-tag` 组件,表单中使用 `el-select` 组件
|
||||
3. **数据格式**: 接口返回的数据为字符串类型("0"、"1"),与字典值匹配
|
||||
|
||||
## 验证结果
|
||||
- ✅ 表格中的字典字段正常显示(是/否)
|
||||
- ✅ 表单中的下拉选择器正常工作
|
||||
- ✅ 新增和修改功能正常
|
||||
- ✅ 字典数据加载成功
|
||||
|
||||
## 相关文件
|
||||
- `web/src/views/xg/xsjcxx/xgLeaveTypeConfig/xgLeaveTypeConfig/index.vue`
|
||||
- `web/src/api/xg/xsjcxx/xgLeaveTypeConfig/xgLeaveTypeConfig/index.ts`
|
||||
- `web/src/api/xg/xsjcxx/xgLeaveTypeConfig/xgLeaveTypeConfig/types.ts`
|
||||
|
||||
---
|
||||
|
||||
**修复人员**: Cursor AI
|
||||
**审核状态**: 待审核
|
||||
**测试状态**: 待测试
|
||||
@@ -0,0 +1,173 @@
|
||||
# 学生请假数据库设计
|
||||
|
||||
## 📋 概述
|
||||
|
||||
本目录包含学生请假管理系统的数据库设计文件,包括请假类型配置表和请假记录表。
|
||||
|
||||
## 📁 文件结构
|
||||
|
||||
```
|
||||
学生请假/
|
||||
├── README.md # 本说明文档
|
||||
├── xg_leave_type_config.sql # 请假类型配置表
|
||||
├── xg_student_leave.sql # 学生请假表
|
||||
└── xg_student_leave_sample_data.sql # 示例数据
|
||||
```
|
||||
|
||||
## 🗄️ 数据表设计
|
||||
|
||||
### 1. 请假类型配置表 (`xg_leave_type_config`)
|
||||
|
||||
**功能**: 配置不同类型的请假规则和参数
|
||||
|
||||
**主要字段**:
|
||||
- `leave_type_code`: 请假类型编码(如:PERSONAL_LEAVE、SICK_LEAVE)
|
||||
- `leave_type_name`: 请假类型名称(如:事假、病假)
|
||||
- `need_location_on_apply`: 请假是否需要上传地理位置
|
||||
- `need_photo_on_cancel`: 销假是否必须上传照片
|
||||
- `need_location_on_cancel`: 销假是否需要上传地理位置
|
||||
- `need_cancel_for_non_leave`: 非离校请假是否需要销假
|
||||
- `can_apply_in_advance`: 是否可以提前请假
|
||||
- `max_apply_duration`: 请假最大申请时长(天)
|
||||
- `cancel_overdue_reminder`: 销假逾期提醒时长(天)
|
||||
|
||||
### 2. 学生请假表 (`xg_student_leave`)
|
||||
|
||||
**功能**: 记录学生的请假申请、审批和销假信息
|
||||
|
||||
**主要字段**:
|
||||
|
||||
#### 基础信息
|
||||
- `student_id`: 学生ID
|
||||
- `student_name`: 学生姓名
|
||||
- `student_no`: 学号
|
||||
- `class_id/class_name`: 班级信息
|
||||
- `major_id/major_name`: 专业信息
|
||||
- `college_id/college_name`: 学院信息
|
||||
|
||||
#### 请假信息
|
||||
- `leave_type_code/leave_type_name`: 请假类型
|
||||
- `start_time/end_time`: 开始/结束时间(年月日时分秒)
|
||||
- `leave_duration`: 请假时长(天)
|
||||
- `is_leave_school`: 是否离校(0-否,1-是)
|
||||
|
||||
#### 联系信息
|
||||
- `emergency_contact`: 紧急联系人
|
||||
- `emergency_phone`: 紧急联系电话
|
||||
|
||||
#### 请假详情
|
||||
- `leave_reason`: 请假原因
|
||||
- `leave_location`: 请假时地理位置
|
||||
- `attachment_oss_ids`: 附件OSS文件ID(逗号分隔)
|
||||
|
||||
#### 审批信息
|
||||
- `approval_status`: 审批状态(0-待审批,1-已通过,2-已拒绝,3-已取消)
|
||||
- `approval_opinion`: 审批意见
|
||||
- `approval_time`: 审批时间
|
||||
- `approval_by/approval_by_name`: 审批人信息
|
||||
|
||||
#### 销假信息
|
||||
- `cancel_status`: 销假状态(0-未销假,1-已销假,2-逾期未销假)
|
||||
- `cancel_time`: 销假时间
|
||||
- `cancel_location`: 销假地理位置
|
||||
- `cancel_photo_oss_ids`: 销假照片OSS文件ID
|
||||
- `cancel_remark`: 销假备注
|
||||
|
||||
## 🔍 索引设计
|
||||
|
||||
### 单列索引
|
||||
- 租户索引:`idx_tenant_id`
|
||||
- 学生索引:`idx_student_id`
|
||||
- `student_no`: 学号
|
||||
- 班级索引:`idx_class_id`
|
||||
- 学院索引:`idx_college_id`
|
||||
- 请假类型索引:`idx_leave_type_code`
|
||||
- 时间索引:`idx_start_time`、`idx_end_time`
|
||||
- 状态索引:`idx_approval_status`、`idx_cancel_status`
|
||||
- 创建时间索引:`idx_create_time`
|
||||
- 离校状态索引:`idx_is_leave_school`
|
||||
|
||||
### 复合索引
|
||||
- 学生+时间范围:`idx_student_time_range`
|
||||
- 班级+审批状态:`idx_class_approval_status`
|
||||
- 学院+请假类型:`idx_college_leave_type`
|
||||
- 时间范围+审批状态:`idx_time_approval_status`
|
||||
|
||||
## 📊 示例数据说明
|
||||
|
||||
示例数据包含8条不同类型的请假记录:
|
||||
|
||||
1. **事假申请** - 已审批通过,未销假
|
||||
2. **病假申请** - 已审批通过,已销假
|
||||
3. **外出请假** - 待审批
|
||||
4. **回家请假** - 审批拒绝
|
||||
5. **其他请假** - 已审批通过,已销假
|
||||
6. **事假申请** - 待审批
|
||||
7. **病假申请** - 已审批通过,逾期未销假
|
||||
8. **外出请假** - 已取消
|
||||
|
||||
## 🔧 使用说明
|
||||
|
||||
### 1. 创建表结构
|
||||
```sql
|
||||
-- 先创建请假类型配置表
|
||||
source xg_leave_type_config.sql;
|
||||
|
||||
-- 再创建学生请假表
|
||||
source xg_student_leave.sql;
|
||||
```
|
||||
|
||||
### 2. 插入示例数据
|
||||
```sql
|
||||
-- 插入示例数据(可选)
|
||||
source xg_student_leave_sample_data.sql;
|
||||
```
|
||||
|
||||
### 3. 常见查询示例
|
||||
|
||||
#### 查询某个学生的请假记录
|
||||
```sql
|
||||
SELECT * FROM xg_student_leave
|
||||
WHERE student_id = 10001
|
||||
ORDER BY create_time DESC;
|
||||
```
|
||||
|
||||
#### 查询待审批的请假申请
|
||||
```sql
|
||||
SELECT * FROM xg_student_leave
|
||||
WHERE approval_status = '0'
|
||||
ORDER BY create_time ASC;
|
||||
```
|
||||
|
||||
#### 查询逾期未销假的记录
|
||||
```sql
|
||||
SELECT * FROM xg_student_leave
|
||||
WHERE cancel_status = '2'
|
||||
AND end_time < NOW();
|
||||
```
|
||||
|
||||
#### 按班级统计请假情况
|
||||
```sql
|
||||
SELECT
|
||||
class_name,
|
||||
COUNT(*) as total_count,
|
||||
SUM(CASE WHEN approval_status = '1' THEN 1 ELSE 0 END) as approved_count,
|
||||
SUM(CASE WHEN approval_status = '2' THEN 1 ELSE 0 END) as rejected_count
|
||||
FROM xg_student_leave
|
||||
WHERE create_time >= DATE_SUB(NOW(), INTERVAL 30 DAY)
|
||||
GROUP BY class_id, class_name;
|
||||
```
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
1. **基础字段规范**: 所有表都包含统一的基础字段(id、tenant_id、create_dept等)
|
||||
2. **逻辑删除**: 使用`deleted`字段进行逻辑删除,禁止物理删除
|
||||
3. **多租户支持**: 所有表都包含`tenant_id`字段,支持多租户
|
||||
4. **外键约束**: 外键约束已注释,可根据实际需要启用
|
||||
5. **字符集**: 统一使用utf8mb4字符集,支持emoji等特殊字符
|
||||
|
||||
## 🔄 版本历史
|
||||
|
||||
- **2024-01-20**: 初始版本,创建请假类型配置表和请假记录表
|
||||
- **2024-01-21**: 添加示例数据和查询示例
|
||||
- **2024-01-22**: 完善索引设计和文档说明
|
||||
@@ -0,0 +1,48 @@
|
||||
-- ----------------------------
|
||||
-- 学生请假类型配置表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `xg_leave_type_config`;
|
||||
CREATE TABLE `xg_leave_type_config` (
|
||||
`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代表删除)',
|
||||
|
||||
-- 业务字段
|
||||
`leave_type_name` varchar(50) NOT NULL COMMENT '请假类型名称',
|
||||
`leave_type_code` varchar(20) NOT NULL COMMENT '请假类型编码',
|
||||
`leave_type_desc` varchar(500) DEFAULT NULL COMMENT '请假类型描述',
|
||||
`sort_order` int(4) DEFAULT '0' COMMENT '排序号',
|
||||
|
||||
-- 配置字段(使用char类型)
|
||||
`need_location_on_apply` char(1) NOT NULL DEFAULT '0' COMMENT '请假是否需要上传地理位置:0-否,1-是',
|
||||
`need_photo_on_cancel` char(1) NOT NULL DEFAULT '0' COMMENT '销假是否必须上传照片:0-否,1-是',
|
||||
`need_location_on_cancel` char(1) NOT NULL DEFAULT '0' COMMENT '销假是否需要上传地理位置:0-否,1-是',
|
||||
`need_cancel_for_non_leave` char(1) NOT NULL DEFAULT '0' COMMENT '非离校请假是否需要销假:0-否,1-是',
|
||||
`can_apply_in_advance` char(1) NOT NULL DEFAULT '0' COMMENT '是否可以提前请假:0-否,1-是',
|
||||
`is_enabled` char(1) NOT NULL DEFAULT '1' COMMENT '是否开启:0-关闭,1-开启',
|
||||
|
||||
-- 数值配置字段
|
||||
`max_apply_duration` decimal(5,2) DEFAULT NULL COMMENT '请假最大申请时长(天)',
|
||||
`cancel_overdue_reminder` decimal(5,2) DEFAULT NULL COMMENT '销假逾期多少时长给予提醒(天)',
|
||||
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `uk_leave_type_code` (`leave_type_code`, `tenant_id`) USING BTREE COMMENT '请假类型编码唯一索引',
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE COMMENT '租户索引',
|
||||
KEY `idx_is_enabled` (`is_enabled`) USING BTREE COMMENT '启用状态索引',
|
||||
KEY `idx_sort_order` (`sort_order`) USING BTREE COMMENT '排序索引'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学生请假类型配置表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 初始化数据
|
||||
-- ----------------------------
|
||||
INSERT INTO `xg_leave_type_config` VALUES
|
||||
(1, '000000', 103, 1, NOW(), NULL, NULL, 0, '事假', 'PERSONAL_LEAVE', '因个人事务需要请假', 1, '0', '0', '0', '0', '1', '1', 72, 24),
|
||||
(2, '000000', 103, 1, NOW(), NULL, NULL, 0, '病假', 'SICK_LEAVE', '因身体不适需要请假', 2, '0', '1', '0', '1', '1', '1', 168, 48),
|
||||
(3, '000000', 103, 1, NOW(), NULL, NULL, 0, '外出请假', 'OUT_LEAVE', '因外出办事需要请假', 3, '1', '1', '1', '1', '1', '1', 24, 2),
|
||||
(4, '000000', 103, 1, NOW(), NULL, NULL, 0, '回家请假', 'HOME_LEAVE', '因回家需要请假', 4, '1', '1', '1', '1', '1', '1', 72, 6),
|
||||
(5, '000000', 103, 1, NOW(), NULL, NULL, 0, '其他请假', 'OTHER_LEAVE', '其他原因请假', 5, '0', '0', '0', '0', '1', '1', 48, 12);
|
||||
@@ -0,0 +1,101 @@
|
||||
-- ----------------------------
|
||||
-- 学生请假表
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `xg_student_leave`;
|
||||
CREATE TABLE `xg_student_leave` (
|
||||
`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_id` bigint(20) NOT NULL COMMENT '学生ID',
|
||||
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
|
||||
`student_no` varchar(20) NOT NULL COMMENT '学号',
|
||||
`class_id` bigint(20) DEFAULT NULL COMMENT '班级ID',
|
||||
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
|
||||
`major_id` bigint(20) DEFAULT NULL COMMENT '专业ID',
|
||||
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
|
||||
`college_id` bigint(20) DEFAULT NULL COMMENT '学院ID',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
|
||||
|
||||
-- 请假信息
|
||||
`leave_type_code` varchar(20) NOT NULL COMMENT '请假类型编码',
|
||||
`leave_type_name` varchar(50) NOT NULL COMMENT '请假类型名称',
|
||||
`start_time` datetime NOT NULL COMMENT '开始时间(年月日时分秒)',
|
||||
`end_time` datetime NOT NULL COMMENT '结束时间(年月日时分秒)',
|
||||
`leave_duration` decimal(5,2) NOT NULL COMMENT '请假时长(天)',
|
||||
`is_leave_school` char(1) NOT NULL DEFAULT '0' COMMENT '是否离校:0-否,1-是',
|
||||
`need_cancel` char(1) NOT NULL DEFAULT '1' COMMENT '是否需要销假:0-否,1-是',
|
||||
|
||||
-- 紧急联系人信息
|
||||
`emergency_contact` varchar(50) DEFAULT NULL COMMENT '紧急联系人',
|
||||
`emergency_phone` varchar(20) DEFAULT NULL COMMENT '紧急联系电话',
|
||||
|
||||
-- 请假原因和位置
|
||||
`leave_reason` text NOT NULL COMMENT '请假原因',
|
||||
`leave_location` varchar(500) DEFAULT NULL COMMENT '请假时地理位置',
|
||||
`attachment_oss_ids` text DEFAULT NULL COMMENT '附件OSS文件ID(逗号分隔)',
|
||||
|
||||
-- 审批状态
|
||||
`approval_status` char(1) NOT NULL DEFAULT '0' COMMENT '审批状态:0-待审批,1-已通过,2-已拒绝,3-已取消',
|
||||
`approval_opinion` varchar(500) DEFAULT NULL COMMENT '审批意见',
|
||||
`approval_time` datetime DEFAULT NULL COMMENT '审批时间',
|
||||
`approval_by` bigint(20) DEFAULT NULL COMMENT '审批人ID',
|
||||
`approval_by_name` varchar(50) DEFAULT NULL COMMENT '审批人姓名',
|
||||
|
||||
-- 销假信息
|
||||
`cancel_status` char(1) NOT NULL DEFAULT '0' COMMENT '销假状态:0-未销假,1-已销假,2-逾期未销假',
|
||||
`cancel_time` datetime DEFAULT NULL COMMENT '销假时间',
|
||||
`cancel_location` varchar(500) DEFAULT NULL COMMENT '销假地理位置',
|
||||
`cancel_photo_oss_ids` text DEFAULT NULL COMMENT '销假照片OSS文件ID(逗号分隔)',
|
||||
`cancel_remark` varchar(500) DEFAULT NULL COMMENT '销假备注',
|
||||
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `idx_tenant_id` (`tenant_id`) USING BTREE COMMENT '租户索引',
|
||||
KEY `idx_student_id` (`student_id`) USING BTREE COMMENT '学生索引',
|
||||
KEY `idx_student_no` (`student_no`) USING BTREE COMMENT '学号索引',
|
||||
KEY `idx_class_id` (`class_id`) USING BTREE COMMENT '班级索引',
|
||||
KEY `idx_college_id` (`college_id`) USING BTREE COMMENT '学院索引',
|
||||
KEY `idx_leave_type_code` (`leave_type_code`) USING BTREE COMMENT '请假类型索引',
|
||||
KEY `idx_start_time` (`start_time`) USING BTREE COMMENT '开始时间索引',
|
||||
KEY `idx_end_time` (`end_time`) USING BTREE COMMENT '结束时间索引',
|
||||
KEY `idx_approval_status` (`approval_status`) USING BTREE COMMENT '审批状态索引',
|
||||
KEY `idx_cancel_status` (`cancel_status`) USING BTREE COMMENT '销假状态索引',
|
||||
KEY `idx_create_time` (`create_time`) USING BTREE COMMENT '创建时间索引',
|
||||
KEY `idx_is_leave_school` (`is_leave_school`) USING BTREE COMMENT '离校状态索引',
|
||||
KEY `idx_need_cancel` (`need_cancel`) USING BTREE COMMENT '是否需要销假索引'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='学生请假表';
|
||||
|
||||
-- ----------------------------
|
||||
-- 创建索引
|
||||
-- ----------------------------
|
||||
-- 复合索引:学生+时间范围查询
|
||||
CREATE INDEX `idx_student_time_range` ON `xg_student_leave` (`student_id`, `start_time`, `end_time`);
|
||||
|
||||
-- 复合索引:班级+审批状态查询
|
||||
CREATE INDEX `idx_class_approval_status` ON `xg_student_leave` (`class_id`, `approval_status`);
|
||||
|
||||
-- 复合索引:学院+请假类型查询
|
||||
CREATE INDEX `idx_college_leave_type` ON `xg_student_leave` (`college_id`, `leave_type_code`);
|
||||
|
||||
-- 复合索引:时间范围+审批状态查询
|
||||
CREATE INDEX `idx_time_approval_status` ON `xg_student_leave` (`start_time`, `end_time`, `approval_status`);
|
||||
|
||||
-- 复合索引:是否需要销假+销假状态查询
|
||||
CREATE INDEX `idx_need_cancel_status` ON `xg_student_leave` (`need_cancel`, `cancel_status`);
|
||||
|
||||
-- ----------------------------
|
||||
-- 添加外键约束(可选,根据实际需要启用)
|
||||
-- ----------------------------
|
||||
-- ALTER TABLE `xg_student_leave` ADD CONSTRAINT `fk_student_leave_type`
|
||||
-- FOREIGN KEY (`leave_type_code`) REFERENCES `xg_leave_type_config` (`leave_type_code`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- ----------------------------
|
||||
-- 添加注释
|
||||
-- ----------------------------
|
||||
ALTER TABLE `xg_student_leave` COMMENT = '学生请假表 - 记录学生的请假申请、审批和销假信息';
|
||||
@@ -0,0 +1,91 @@
|
||||
-- ----------------------------
|
||||
-- 学生请假表示例数据
|
||||
-- ----------------------------
|
||||
|
||||
-- 示例数据1:事假申请
|
||||
INSERT INTO `xg_student_leave` VALUES (
|
||||
1001, '000000', 103, 1, '2024-01-15 10:30:00', NULL, NULL, 0,
|
||||
10001, '张三', '2024001', 101, '计算机科学与技术1班', 1, '计算机科学与技术', 1, '信息工程学院',
|
||||
'PERSONAL_LEAVE', '事假', '2024-01-20 08:00:00', '2024-01-21 18:00:00', 2.00, '0',
|
||||
'李四', '13800138001',
|
||||
'家中有急事需要处理,特此请假。', '北京市海淀区中关村大街1号', 'oss_file_001,oss_file_002',
|
||||
'1', '同意请假,请按时返校。', '2024-01-16 14:20:00', 1001, '王老师',
|
||||
'0', NULL, NULL, NULL, NULL
|
||||
);
|
||||
|
||||
-- 示例数据2:病假申请
|
||||
INSERT INTO `xg_student_leave` VALUES (
|
||||
1002, '000000', 103, 1, '2024-01-16 09:15:00', NULL, NULL, 0,
|
||||
10002, '李四', '2024002', 101, '计算机科学与技术1班', 1, '计算机科学与技术', 1, '信息工程学院',
|
||||
'SICK_LEAVE', '病假', '2024-01-17 00:00:00', '2024-01-19 23:59:59', 3.00, '0',
|
||||
'王五', '13800138002',
|
||||
'感冒发烧,需要休息治疗。', '北京市朝阳区建国路2号', 'oss_file_003',
|
||||
'1', '同意病假,注意休息。', '2024-01-16 16:30:00', 1001, '王老师',
|
||||
'1', '2024-01-20 08:30:00', '北京市朝阳区建国路2号', 'oss_file_004', '已康复返校'
|
||||
);
|
||||
|
||||
-- 示例数据3:外出请假申请
|
||||
INSERT INTO `xg_student_leave` VALUES (
|
||||
1003, '000000', 103, 1, '2024-01-17 14:20:00', NULL, NULL, 0,
|
||||
10003, '王五', '2024003', 102, '软件工程1班', 2, '软件工程', 1, '信息工程学院',
|
||||
'OUT_LEAVE', '外出请假', '2024-01-18 14:00:00', '2024-01-18 18:00:00', 0.17, '1',
|
||||
'赵六', '13800138003',
|
||||
'需要外出办理身份证业务。', '北京市西城区西单大街3号', 'oss_file_005',
|
||||
'0', NULL, NULL, NULL, NULL,
|
||||
'0', NULL, NULL, NULL, NULL
|
||||
);
|
||||
|
||||
-- 示例数据4:回家请假申请
|
||||
INSERT INTO `xg_student_leave` VALUES (
|
||||
1004, '000000', 103, 1, '2024-01-18 11:00:00', NULL, NULL, 0,
|
||||
10004, '赵六', '2024004', 102, '软件工程1班', 2, '软件工程', 1, '信息工程学院',
|
||||
'HOME_LEAVE', '回家请假', '2024-01-25 16:00:00', '2024-01-27 20:00:00', 2.17, '1',
|
||||
'钱七', '13800138004',
|
||||
'回家参加亲戚婚礼。', '上海市浦东新区陆家嘴4号', 'oss_file_006,oss_file_007',
|
||||
'2', '请假时间过长,建议缩短。', '2024-01-19 10:15:00', 1001, '王老师',
|
||||
'0', NULL, NULL, NULL, NULL
|
||||
);
|
||||
|
||||
-- 示例数据5:其他请假申请
|
||||
INSERT INTO `xg_student_leave` VALUES (
|
||||
1005, '000000', 103, 1, '2024-01-19 16:45:00', NULL, NULL, 0,
|
||||
10005, '钱七', '2024005', 103, '网络工程1班', 3, '网络工程', 1, '信息工程学院',
|
||||
'OTHER_LEAVE', '其他请假', '2024-01-22 09:00:00', '2024-01-22 12:00:00', 0.13, '0',
|
||||
'孙八', '13800138005',
|
||||
'参加学校组织的志愿者活动。', '北京市海淀区清华园5号', 'oss_file_008',
|
||||
'1', '同意参加志愿者活动。', '2024-01-20 09:30:00', 1001, '王老师',
|
||||
'1', '2024-01-22 12:30:00', '北京市海淀区清华园5号', 'oss_file_009', '活动完成返校'
|
||||
);
|
||||
|
||||
-- 示例数据6:待审批的请假申请
|
||||
INSERT INTO `xg_student_leave` VALUES (
|
||||
1006, '000000', 103, 1, '2024-01-20 08:30:00', NULL, NULL, 0,
|
||||
10006, '孙八', '2024006', 103, '网络工程1班', 3, '网络工程', 1, '信息工程学院',
|
||||
'PERSONAL_LEAVE', '事假', '2024-01-23 08:00:00', '2024-01-24 18:00:00', 2.00, '0',
|
||||
'周九', '13800138006',
|
||||
'需要参加驾照考试。', '北京市丰台区南四环6号', 'oss_file_010',
|
||||
'0', NULL, NULL, NULL, NULL,
|
||||
'0', NULL, NULL, NULL, NULL
|
||||
);
|
||||
|
||||
-- 示例数据7:逾期未销假的请假记录
|
||||
INSERT INTO `xg_student_leave` VALUES (
|
||||
1007, '000000', 103, 1, '2024-01-10 10:00:00', NULL, NULL, 0,
|
||||
10007, '周九', '2024007', 104, '信息安全1班', 4, '信息安全', 1, '信息工程学院',
|
||||
'SICK_LEAVE', '病假', '2024-01-11 00:00:00', '2024-01-13 23:59:59', 3.00, '0',
|
||||
'吴十', '13800138007',
|
||||
'肠胃炎,需要住院治疗。', '北京市昌平区回龙观7号', 'oss_file_011',
|
||||
'1', '同意病假,注意身体。', '2024-01-10 15:00:00', 1001, '王老师',
|
||||
'2', NULL, NULL, NULL, '逾期未销假'
|
||||
);
|
||||
|
||||
-- 示例数据8:已取消的请假申请
|
||||
INSERT INTO `xg_student_leave` VALUES (
|
||||
1008, '000000', 103, 1, '2024-01-21 13:20:00', 1001, '2024-01-21 15:30:00', 0,
|
||||
10008, '吴十', '2024008', 104, '信息安全1班', 4, '信息安全', 1, '信息工程学院',
|
||||
'OUT_LEAVE', '外出请假', '2024-01-22 14:00:00', '2024-01-22 17:00:00', 0.13, '1',
|
||||
'郑十一', '13800138008',
|
||||
'需要外出办理银行卡业务。', '北京市东城区王府井8号', 'oss_file_012',
|
||||
'3', '学生主动取消申请。', '2024-01-21 15:30:00', 1001, '王老师',
|
||||
'0', NULL, NULL, NULL, NULL
|
||||
);
|
||||
Reference in new issue
Block a user