# 必胜教育排课系统 **Repository Path**: grey-ts/uwin ## Basic Information - **Project Name**: 必胜教育排课系统 - **Description**: ---------- - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: 2.x - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-13 - **Last Updated**: 2026-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 单据中心 ## 分支说明 | 分支名称 | 描述 | 负责人 | | -------- | ---- | ------ | | div | 开发分支 | 许波 | | div | 操作日志 | 许波 | | pjs | 已排课程明细-编辑教室 | 许波 | ## 文档地址 更新地址:http://localhost:15239/swagger/v1/swagger.json ## 数据库启动 docker run -p 3306:3306 --name mysql29 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.29 --default-authentication-plugin=mysql_native_password ## 删除外键 -- 生成删除外键的SQL语句 SELECT CONCAT('ALTER TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` DROP FOREIGN KEY `', CONSTRAINT_NAME, '`;') FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA='UwinEducation' AND CONSTRAINT_TYPE='FOREIGN KEY'; ## Excel导出功能 ### 功能概述 项目提供了一个强大的Excel导出功能,支持自定义表头和数据的导出,位于 `src/pages/student-course/module/student-list/capabilities/use-timetable-export/index.tsx`。 ### 主要功能 - 🔧 支持自定义表头配置(表头文字、数据字段、列宽) - 📊 支持多种数据类型的导出 - 📁 支持自定义文件名和工作表名 - ⚠️ 完善的错误处理机制 - 🎨 自动列宽调整功能 ### 使用方法 #### 1. 导入相关模块 ```typescript import { exportExcelByJson, IExcelExportData, IExcelHeader } from '@/pages/student-course/module/student-list/capabilities/use-timetable-export'; ``` #### 2. 定义数据结构 ```typescript // 定义表头配置 const headers: IExcelHeader[] = [ { title: '课程名称', dataIndex: 'courseName', width: 20 }, { title: '教师姓名', dataIndex: 'teacherName', width: 15 }, { title: '学生姓名', dataIndex: 'studentName', width: 15 }, { title: '上课时间', dataIndex: 'startTime', width: 20 }, { title: '结束时间', dataIndex: 'endTime', width: 20 }, { title: '教室', dataIndex: 'classroom', width: 15 }, { title: '课程状态', dataIndex: 'status', width: 12 }, { title: '备注', dataIndex: 'remarks', width: 25 } ]; // 定义导出数据 const data = [ { courseName: '数学', teacherName: '张老师', studentName: '小明', startTime: '2024-01-15 09:00:00', endTime: '2024-01-15 10:30:00', classroom: 'A101', status: '正常', remarks: '期中考试复习' } // 更多数据... ]; ``` #### 3. 执行导出 ```typescript const exportData: IExcelExportData = { headers, data, sheetName: '课表数据', fileName: `课表导出_${dayjs().format('YYYY-MM-DD')}.xlsx` }; // 执行导出 try { await exportExcelByJson(exportData); console.log('导出成功!'); } catch (error) { console.error('导出失败:', error); } ``` ### 接口说明 #### IExcelExportData 接口 | 参数 | 类型 | 必填 | 默认值 | 说明 | |------|------|------|--------|------| | headers | IExcelHeader[] | 是 | - | 表头配置数组 | | data | Record[] | 是 | - | 导出数据数组 | | sheetName | string | 否 | 'Sheet1' | 工作表名称 | | fileName | string | 否 | '导出数据_时间戳.xlsx' | 文件名称 | #### IExcelHeader 接口 | 参数 | 类型 | 必填 | 默认值 | 说明 | |------|------|------|--------|------| | title | string | 是 | - | 表头显示文字 | | dataIndex | string | 是 | - | 数据字段名 | | width | number | 否 | 15 | 列宽度(字符数) | ### 错误处理 - 自动验证表头和数据是否为空 - 处理null/undefined值,转换为空字符串 - 提供详细的错误信息和用户提示 - 控制台输出错误日志便于调试 ### 示例函数 项目中提供了 `exportTimetableExample()` 函数作为使用示例,展示了完整的课表数据导出流程。 ### 注意事项 1. 确保数据中的字段名与表头配置的 `dataIndex` 一致 2. 文件名会自动添加时间戳避免重复 3. 支持中文文件名和内容 4. 建议为重要数据设置适当的列宽度以保证显示效果