{{currentPageTitle}}
{{currentSchedule.schedule_name}}

管理排课方案,创建、编辑或删除排课方案。不同年级/学期可创建独立方案。

新建方案

📋

暂无排课方案,请点击上方按钮新建

{{s.schedule_name}} 当前
{{s.grade || ''}}{{s.semester || ''}} {{s.year}} {{s.school_name}}
切换 编辑

排课操作流程

1
创建方案
新建排课方案,设置年级、学期等基本信息
2
导入任课安排
下载模板,填写教师与班级科目对应关系后导入
3
配置课程课时
设置各科目每周课时数、是否考试科目、优先级等
4
设置排课约束
添加教师、班级、科目的排课限制条件(可选)
5
智能排课
一键自动排课,支持冲突检测与拖拽微调
6
导出课表
按班级/教师/年级导出Word文档或在线查看

系统功能介绍

多方案管理
支持创建多个排课方案,不同年级/学期独立管理,一键切换
Excel 批量导入
通过Excel模板批量导入任课安排,自动创建教师、班级与课程数据
智能排课引擎
基于约束满足与贪心算法,自动生成无冲突课表,支持连排、均衡分布
灵活约束系统
支持时间段限制、教师偏好、早读关联、节次互斥、周课时拆分等十余种约束
冲突检测报告
自动检测教师/班级时间冲突,显示未排满课程,帮助快速定位问题
拖拽微调
课表展示页面支持直接拖拽课程交换时间,所见即所得
多视图展示
按班级/教师查看个人课表,年级总课表一览全局
Word 导出
一键导出班级课表、教师课表、年级总课表为Word文档,排版规范
{{ (currentSchedule.grade||'') + (currentSchedule.semester||'') }} {{teacherTotal}} 位任课教师
{{teacherTotal}}教师总数
{{teacherSubjectsCount}}任教科目
搜索 重置
导出Excel
批量删除{{teacherSelection.length ? '('+teacherSelection.length+')' : ''}}
编号 姓名 性别 方案任教科 全部可教 年级 课时限制 备注 操作
{{row.teacher_no}} {{row.name}} {{row.gender}} {{row.schedule_subjects}} - {{row.subject}} {{row.subjects}} {{row.grade}} 周{{row.max_weekly_hours}} / 日{{row.max_daily_hours}} / 连{{row.max_continuous}} {{row.note || '-'}}
{{ currentScheduleId ? '暂无教师数据,请先在任课安排页面导入Excel' : '请先选择或创建一个排课方案' }}
{{teacherTotal}} 条记录
{{ (currentSchedule.grade||'') + (currentSchedule.semester||'') }} {{filteredClassList.length}} 个班级
{{classTotal}}班级总数
{{classComboCount}}组合种类
{{classGrades.length}}涉及年级
新增班级
批量删除{{classSelection.length ? '('+classSelection.length+')' : ''}}
班级名称 {{classSortAsc ? ' ▲' : ' ▼'}} 年级 {{classSortAsc ? ' ▲' : ' ▼'}} 组合 {{classSortAsc ? ' ▲' : ' ▼'}} 学期 {{classSortAsc ? ' ▲' : ' ▼'}} 班主任 {{classSortAsc ? ' ▲' : ' ▼'}} 操作
{{row.class_name}} {{row.grade}} {{row.combination}} 未设置 {{row.semester}} {{row.head_teacher_name}} 未分配
{{ currentScheduleId ? '暂无班级数据,请先在任课安排页面导入Excel' : '请先选择或创建一个排课方案' }}
{{filteredClassList.length}} 个班级
{{ (currentSchedule.grade||'') + (currentSchedule.semester||'') }} {{courseList.length}} 门课程

不同组合的同一科目可能有不同的每周课时。选择组合后设置该组合下各科目的周课时数,排课引擎将按组合匹配对应的课时配置。

从默认设置同步
{{courseList.length}} 门课程 全局默认设置,适用于未单独配置的组合
以下科目课时为0,该组合未开设此课程: {{s}}
科目 每周课时 ({{ totalWeeklyHours }}) 考试科目 允许连排 优先级 操作
{{row.subject}} 默认 保存
{{ (currentSchedule.grade||'') + (currentSchedule.semester||'') }} {{assignTeachers.length}} 位教师 {{assignClasses.length}} 个班级 {{assignSubjects.length}} 门科目
导入Excel 导出Excel 下载模板 校验数据 清空全部
从其他方案复制
班级 \ 科目 {{subj}}
{{cls.class_name}} {{cls.combination}}
{{t.name}} {{t.subjects}}
{{ assignMatrix[cls.class_name+'_'+subj] || '—' }}

为当前排课方案设置自定义约束条件。支持固定格式约束和完全自定义约束,可添加任意多条

快速添加: 仅排上午 仅排下午 不能第一节 不能末节 尽量早排 避开某天 强制某天 固定时间段 禁止时段 早读关联 教师首节 时段科目 节次互斥 周课时拆分 跨区域间隔 自定义约束
#{{idx+1}} {{getConstraintLabel(c.constraint_type)}} {{c.subject === '*' ? '所有科目' : c.subject}} {{c.teacher_name}} {{c.teacher_names}} {{c.weekly_split_mode === 'split' ? '拆分' : c.weekly_split_mode === 'continuous' ? '连堂' : '自动'}} 间隔≥{{c.area_gap}}节 {{c.class_name}} 周{{['','一','二','三','四','五'][c.day_of_week]}} 周{{c.custom_condition.linked_days.map(d => ['','一','二','三','四','五'][d]).join('、')}} 第{{c.section_start}}-{{c.section_end}}节 自定义规则 {{c.description}}
{{formatCustomCondition(c.custom_condition)}}
保存全部 ({{constraintList.length}}条) 重置
拖拽 图标可调整优先级排序
拆分(上午+下午各1节) 连堂(同半天连上2节) 自动(算法决定)
请先选择科目、教师和班级

节次互斥:排了A节当天就不排B节。请在下方选择互斥节次对。

例如:排了第1节→不排第5节,排了第5节→不排第6节。

指定班级在指定时段只能排以下科目(用上方日期/节次选择时段)

自定义约束条件:设置匹配字段、运算符和值,当条件匹配时给予加权/扣分

示例:字段=节次、运算符=小于等于、值=4 → 第1-4节排课加分。字段=星期-节次、运算符=等于、值=3-1 → 周三第1节加分。字段=星期、运算符=包含于、值=1,3,5 → 周一三五排课加分。
按班级 按教师 {{t.name}} {{t.subject}}
智能排课 冲突检测 导出Word 清空课表
总课程:{{timetableStats.total_lessons}}节 {{s.subject}}:{{s.cnt}}节

拖拽课程到其他空位可交换/移动时间

节次
时间
{{weekdayNames[d]}}

拖拽课程到其他空位可交换/移动时间

节次
时间
{{weekdayNames[d]}}

以年级视角查看所有班级的完整课表,便于对比排课安排。

{{gradeViewClasses.length}} 个班级 {{combo}} 导出Word
总课程:{{gradeViewStats.total_lessons}}节 {{s.subject}}:{{s.cnt}}节
时间 / 班级
{{cls.class_name}}
{{cls.combination}}
数据加载中,请稍候...