diff --git a/app/common/service/SendMsgCronJobService.php b/app/common/service/SendMsgCronJobService.php index acfcdb9..7972994 100644 --- a/app/common/service/SendMsgCronJobService.php +++ b/app/common/service/SendMsgCronJobService.php @@ -345,7 +345,7 @@ class SendMsgCronJobService foreach ($teacher_schedule_time as $item) { $studentSchedule = $item->studentSchedule->toArray(); - if (empty($studentSchedule)) { + if (!empty($studentSchedule)) { CronJob::create([ 'msg_type' => self::CLASS_BEGIN_NOTIFY_TEACHER, 'teacher_id' => $item->teacher_id, @@ -364,7 +364,7 @@ class SendMsgCronJobService 'send_result' => 0, 'send_result_msg' => '未找到课程分配的学生', ]); - throw new Exception('未找到课程分配的学生'); +// throw new Exception('未找到课程分配的学生'); } $student_info = []; @@ -378,7 +378,7 @@ class SendMsgCronJobService } $student_name = implode(',', array_column($student_info, 'student_name')); - if (empty($student_name)) { + if (!empty($student_name)) { CronJob::create([ 'msg_type' => self::CLASS_BEGIN_NOTIFY_TEACHER, 'teacher_id' => $item->teacher_id, @@ -397,7 +397,7 @@ class SendMsgCronJobService 'send_result' => 0, 'send_result_msg' => '未找到课程分配的学生', ]); - throw new Exception('未找到课程分配的学生'); +// throw new Exception('未找到课程分配的学生'); } $send_teacher_data = [ @@ -575,16 +575,13 @@ class SendMsgCronJobService { try { $teacher_schedule_time = TeacherScheduleTime::where(['is_publish' => 1]) - ->whereTime('start_time', '>=', date('Y-m-d H:i:s', strtotime('+10 minute'))) - ->whereTime('start_time', '<=', date('Y-m-d H:i:s', strtotime('+11 minute'))) + ->whereTime('start_time', '>=', date('Y-m-d 00:00:00', strtotime('+10 minute'))) + ->whereTime('start_time', '<=', date('Y-m-d 00:00:00', strtotime('+11 minute'))) ->with(['teacherAttr', 'subject', 'studentSchedule']) ->select(); foreach ($teacher_schedule_time as $item) { - if (strtotime($item['start_time']) - time() > 60) { - continue; - } $studentSchedule = $item->studentSchedule->toArray(); if (empty($studentSchedule)) { @@ -824,7 +821,7 @@ class SendMsgCronJobService ->findOrEmpty(); $studentSchedule = $teacher_schedule_time->studentSchedule->toArray(); - if (empty($studentSchedule)) { + if (!empty($studentSchedule)) { CronJob::create([ 'msg_type' => self::CLASS_BEGIN_NOTIFY_TEACHER, 'teacher_id' => $teacher_schedule_time->teacher_id, @@ -843,7 +840,7 @@ class SendMsgCronJobService 'send_result' => 0, 'send_result_msg' => '未找到课程分配的学生', ]); - throw new Exception('未找到课程分配的学生'); +// throw new Exception('未找到课程分配的学生'); } $student_info = []; @@ -857,7 +854,7 @@ class SendMsgCronJobService } $student_name = implode(',', array_column($student_info, 'student_name')); - if (empty($student_name)) { + if (!empty($student_name)) { CronJob::create([ 'msg_type' => self::CLASS_BEGIN_NOTIFY_TEACHER, 'teacher_id' => $teacher_schedule_time->teacher_id, @@ -876,7 +873,7 @@ class SendMsgCronJobService 'send_result' => 0, 'send_result_msg' => '未找到课程分配的学生', ]); - throw new Exception('未找到课程分配的学生'); +// throw new Exception('未找到课程分配的学生'); } $send_teacher_data = [ @@ -930,6 +927,7 @@ class SendMsgCronJobService } catch (Exception $e) { + raw_log('cron_job/send_to_teacher_before_day_field', ['msg'=>$e->getMessage()]); return [ 'code' => ResponseCode::FAIL, diff --git a/app/common/service/StudentHomeworkService.php b/app/common/service/StudentHomeworkService.php index 4053f61..ff40adc 100644 --- a/app/common/service/StudentHomeworkService.php +++ b/app/common/service/StudentHomeworkService.php @@ -159,16 +159,18 @@ class StudentHomeworkService //未提交作业的课程 $model = StudentSchedule::order('id desc')->where('id', 'not in', function ($query) use ($student) { $query->table('wa_student_homework')->where('student_id', $student->id)->field('teacher_schedule_time_id'); - }); + })->where('student_id', $student->id); $total = $model->count(); $list = $model->with(['student', 'subject', 'teacher'])->page($page, $limit) ->select(); } else { - $model = StudentSchedule::order('ss.id desc')->alias('ss') - ->leftJoin('student_homework sh', 'ss.teacher_schedule_time_id = sh.teacher_schedule_time_id') - ->where(['ss.student_id' => $student->id]); + $model = StudentSchedule::order('id desc') + ->where(['student_id' => $student->id]) + ->where('id', 'in', function ($query) use ($student) { + $query->table('wa_student_homework')->where('student_id', $student->id)->field('teacher_schedule_time_id'); + }); $total = $model->count(); $list = $model->with(['student', 'subject', 'teacher']) ->page($page, $limit) diff --git a/app/common/service/StudentService.php b/app/common/service/StudentService.php index 68aba97..8241ab4 100644 --- a/app/common/service/StudentService.php +++ b/app/common/service/StudentService.php @@ -143,7 +143,7 @@ class StudentService throw new Exception('请登陆后再查看'); } if (!empty((array)$request->student)) { - $student = Student::where(['id' => $request->student->id])->with(['parentArr'])->field('id,student_name,account,openid,avatar,nickname,parent_id')->findOrEmpty(); + $student = Student::where(['id' => $request->student->id])->with(['parentArr'])->field('id,student_name,account,openid,avatar,nickname,parent_id,show_schedule,show_homework,show_feedback')->findOrEmpty(); if ($student->isEmpty()) { throw new Exception('未找到学生信息'); } diff --git a/app/common/service/SubjectHomeworkService.php b/app/common/service/SubjectHomeworkService.php index 8f8ed2b..315e92c 100644 --- a/app/common/service/SubjectHomeworkService.php +++ b/app/common/service/SubjectHomeworkService.php @@ -122,6 +122,7 @@ class SubjectHomeworkService try { $data = $request->get(); $subject_homework = SubjectHomework::where(['teacher_schedule_time_id' => $data['teacher_schedule_time_id']]) + ->where(['homework_file_is_publish' => 1]) ->with(['teacher', 'subject']) ->findOrEmpty(); diff --git a/app/functions.php b/app/functions.php index eb1af79..1eb86a0 100644 --- a/app/functions.php +++ b/app/functions.php @@ -81,3 +81,41 @@ if (!function_exists('get_dates_in_month')) { return $dates; } } + +if(!function_exists('is_time_cross')){ + /** + * PHP计算多个时间段是否有交集(边界重叠不算) + * @param ...$timePeriods + * @return bool|mixed + */ + function is_time_cross(array $timePeriods) { + + $timePeriods = array_values($timePeriods); + // 将时间字符串转换为时间戳 + $timePeriods = array_map(function ($period) { + extract($period); + + return [ + 'begin' => strtotime($beginTime), + 'end' => strtotime($endTime) + ]; + }, $timePeriods); + + // 递归函数来检查时间段是否有交集 + $checkCross = function ($index, $timePeriods) use (&$checkCross) { + if ($index === count($timePeriods) - 1) { + return true; // 最后一个时间段,没有交集 + } + + for ($i = $index + 1; $i < count($timePeriods); $i++) { + if ($timePeriods[$index]['end'] > $timePeriods[$i]['begin'] && $timePeriods[$i]['end'] > $timePeriods[$index]['begin']) { + return false; // 有交集 + } + } + + return $checkCross($index + 1, $timePeriods); // 递归检查下一个时间段 + }; + + return $checkCross(0, $timePeriods); // 从第一个时间段开始检查 + } +} diff --git a/plugin/admin/app/controller/StudentController.php b/plugin/admin/app/controller/StudentController.php index 2ca6cf8..6a52d06 100644 --- a/plugin/admin/app/controller/StudentController.php +++ b/plugin/admin/app/controller/StudentController.php @@ -147,6 +147,9 @@ class StudentController extends Crud 'account' => $request_data['account'], 'avatar' => $request_data['avatar'], 'parent_id' => $request_data['parent_id'], + 'show_schedule' => isset($request_data['show_schedule']) ? $request_data['show_schedule'] : 0, + 'show_homework' => isset($request_data['show_homework']) ? $request_data['show_homework'] : 0, + 'show_feedback' => isset($request_data['show_feedback']) ? $request_data['show_feedback'] : 0, ]; } else { $salt = random_str(16); @@ -158,6 +161,9 @@ class StudentController extends Crud 'salt' => $salt, 'avatar' => $request_data['avatar'], 'parent_id' => $request_data['parent_id'], + 'show_schedule' => isset($request_data['show_schedule']) ? $request_data['show_schedule'] : 0, + 'show_homework' => isset($request_data['show_homework']) ? $request_data['show_homework'] : 0, + 'show_feedback' => isset($request_data['show_feedback']) ? $request_data['show_feedback'] : 0, ]; } diff --git a/plugin/admin/app/controller/StudentScheduleController.php b/plugin/admin/app/controller/StudentScheduleController.php index fbf9f45..01e3553 100644 --- a/plugin/admin/app/controller/StudentScheduleController.php +++ b/plugin/admin/app/controller/StudentScheduleController.php @@ -8,6 +8,8 @@ use app\common\model\Teacher; use app\common\model\TeacherScheduleTime; use app\common\service\SendMsgCronJobService; use app\constant\ResponseCode; +use PhpOffice\PhpSpreadsheet\Spreadsheet; +use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use support\Request; use support\Response; use plugin\admin\app\model\StudentSchedule; @@ -88,6 +90,10 @@ class StudentScheduleController extends Crud $total = $student_schedule->count(); $list = $student_schedule->with(['teacher', 'subject'])->page($page, $limit)->select(); + foreach ($list as &$item) { + $item['week'] = date('D', strtotime($item['date'])); + } + return json([ 'code' => ResponseCode::WEB_API_SUCCESS, 'data' => $list, @@ -203,7 +209,7 @@ class StudentScheduleController extends Crud //删除其它学生的课程 $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $teacher_schedule_time->id])->delete(); - $student = Student::where(['id'=>$data['student_id']])->findOrEmpty(); + $student = Student::where(['id' => $data['student_id']])->findOrEmpty(); $res = \app\common\model\StudentSchedule::create([ 'student_id' => $data['student_id'], 'student_name' => $student->student_name, @@ -280,7 +286,7 @@ class StudentScheduleController extends Crud foreach ($list as $item) { $time_period = explode('-', $item['time']); if ($item['subject_id']) { - $title = $item['time'] . PHP_EOL . $item['teacher_name'] . PHP_EOL . $item['subject_name'] . '/' . $item['english_name']; + $title = $item['time'] . PHP_EOL . $item['teacher_name'] . PHP_EOL . $item['subject_name'] . '/' . $item['english_name']; if ($item['is_publish'] == 0) { $color = 'orange'; } else { @@ -321,7 +327,7 @@ class StudentScheduleController extends Crud { $data = $request->get(); - $schedule_time = \app\common\model\StudentSchedule::where(['id'=>$data['schedule_time_id']])->with(['teacher', 'subject',])->findOrEmpty()->toArray(); + $schedule_time = \app\common\model\StudentSchedule::where(['id' => $data['schedule_time_id']])->with(['teacher', 'subject',])->findOrEmpty()->toArray(); return view('student/schedule_time_setting', ['schedule_time' => $schedule_time]); } @@ -341,9 +347,9 @@ class StudentScheduleController extends Crud throw new Exception('未找到排课时间'); } $changeData = []; - if(isset($data['is_publish'])){ + if (isset($data['is_publish'])) { $student_schedule_time->is_publish = $data['is_publish']; - if($data['is_publish']){ + if ($data['is_publish']) { (new SendMsgCronJobService())->teacherScheduleTimePublishMsgToStudent($student_schedule_time->teacher_schedule_time_id); } } @@ -355,7 +361,7 @@ class StudentScheduleController extends Crud 'data' => [], 'msg' => 'success' ]); - }catch (Exception $e) { + } catch (Exception $e) { return json([ 'code' => ResponseCode::WEB_API_FAIL, 'data' => [], @@ -364,4 +370,166 @@ class StudentScheduleController extends Crud } } + + /** + * @desc 导出学生课表 + * @param Request $request + * @return Response + */ + public function exportStudentSchedule(Request $request) + { + try { + $data = $request->post(); + + if (!isset($data['student_id']) || empty($data['student_id'])) { + throw new Exception('请选择学生后导出'); + } + + if (!isset($data['month']) || empty($data['month'])) { + throw new Exception('请选择月份后导出'); + } + + $student_schedule = \app\common\model\StudentSchedule::order('start_time asc'); + + if (isset($data['student_id']) && !empty($data['student_id'])) { + $student_schedule->where(['student_id' => $data['student_id']]); + } + if (isset($data['teacher_id']) && !empty($data['teacher_id'])) { + $student_schedule->where(['teacher_id' => $data['teacher_id']]); + } + if (isset($data['subject_id']) && !empty($data['subject_id'])) { + $student_schedule->where(['subject_id' => $data['subject_id']]); + } + + if (isset($data['month']) && !empty($data['month'])) { + $student_schedule->where(['month' => $data['month']]); + } + + $publish_status = 'all'; + + if (isset($data['is_publish']) && !empty($data['is_publish'])) { + if($data['is_publish'] == 1){ + $publish_status = 'published'; + }else{ + $publish_status = 'unpublished'; + } + $student_schedule->where(['is_publish' => $data['is_publish']]); + } + $summary = $student_schedule->with(['teacher', 'subject'])->select()->toArray(); + + $export_data = []; + foreach ($summary as $item) { + $export_data[$item['date']][$item['time']][] = $item; + } + + + + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); +//设置工作表标题名称 + $worksheet->setTitle('学生排课汇总'); + $worksheet->setCellValue('A1', 'Week'); + $worksheet->setCellValue('B1', 'Date'); + $worksheet->setCellValue('C1', 'China Time'); + $worksheet->setCellValue('D1', 'Local Time(Tutor)'); + $worksheet->setCellValue('E1', 'Subject'); + $worksheet->setCellValue('F1', 'Tutor'); + $worksheet->setCellValue('G1', 'Student'); + $worksheet->setCellValue('H1', 'Duration'); + $worksheet->setCellValue('I1', 'Note'); + $worksheet->getStyle('A1:I1')->getFill() + ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) + ->getStartColor()->setRGB('4f81bd'); + + + $month_days = get_dates_in_month(date('Y', strtotime($data['month'])), date('m', strtotime($data['month']))); + +// $column = Coordinate::columnIndexFromString(2); + + $global_student_name = ''; + $offset_row = 2; + foreach ($month_days as $index => $date) { + $week = date('l', strtotime($date)); + + if ($week == 'Sunday' && $index != 0) { + //合并单元格 + $merge_offset = $index + $offset_row; + $worksheet->mergeCells("A{$merge_offset}:H{$merge_offset}"); + $offset_row++; + } + + $merge_count = 1; + $china_time = ''; + $en_time = ''; + $subject_name = ''; + $teacher_name = ''; + $student_name = ''; + $row_publish_status = ''; + $hour = ''; + if (isset($export_data[$date])) { + $merge_count = count($export_data[$date]); + foreach ($export_data[$date] as $schedule) { + foreach ($schedule as $schedule_time) { + $china_time = $schedule_time['time']; + $en_time = $schedule_time['en_time']; + $subject_name = $schedule_time['english_name']; + $teacher_name = $schedule_time['teacher_name']; + $student_name = $schedule_time['student_name']; + $global_student_name = $student_name; + $row_publish_status = $schedule_time['is_publish']? 'published' : 'unpublished'; + $hour = $schedule_time['hour']; + } + + } + } + + $row = $index + $offset_row; + if ($merge_count > 1) { + //合并单元格 + $worksheet->mergeCells("A{$row}:A" . ($row + $merge_count - 1)); + } + + $worksheet->setCellValue('A' . $row, $week); + $worksheet->setCellValue('B' . $row, date('m/d', strtotime($date))); + $worksheet->setCellValue('C' . $row, $china_time); + $worksheet->setCellValue('D' . $row, $en_time); + $worksheet->setCellValue('E' . $row, $subject_name); + $worksheet->setCellValue('F' . $row, $teacher_name); + $worksheet->setCellValue('G' . $row, $student_name); + $worksheet->setCellValue('H' . $row, $hour); + $worksheet->setCellValue('I' . $row, $row_publish_status); + } + + $writer = new Xlsx($spreadsheet); + + + $file_name = $data['month'] . '-' . $global_student_name .'-' . $publish_status .'-' . time() . '.xlsx'; + + $file_path = '/export_file/'; + $save_path = public_path($file_path); + if (!is_dir($save_path)) { + mkdir($save_path, 0777, true); + } + $writer->save($save_path . $file_name); + + return json([ + 'code' => ResponseCode::WEB_API_SUCCESS, + 'data' => [ + 'file_url' => getenv('SERVER_DOMAIN') . $file_path . $file_name, +// 'file_url' => 'http://course.test' . $file_path . $file_name, + 'file_name' => $file_name + ], + 'msg' => 'success' + ]); + + + } catch (Exception $e) { + return json([ + 'code' => ResponseCode::WEB_API_FAIL, + 'data' => [], + 'msg' => $e->getMessage() + ]); + } + } + } diff --git a/plugin/admin/app/controller/TeacherScheduleTimeController.php b/plugin/admin/app/controller/TeacherScheduleTimeController.php index 6a12c01..fac5707 100644 --- a/plugin/admin/app/controller/TeacherScheduleTimeController.php +++ b/plugin/admin/app/controller/TeacherScheduleTimeController.php @@ -139,10 +139,10 @@ class TeacherScheduleTimeController extends Crud $student_schedule->delete(); } - if(!$subject_homework->isEmpty()){ + if (!$subject_homework->isEmpty()) { $subject_homework->delete(); //删除学生家庭作业 - StudentHomework::where(['teacher_schedule_time_id'=>$ids])->select()->delete(); + StudentHomework::where(['teacher_schedule_time_id' => $ids])->select()->delete(); } return $this->json(0); @@ -175,16 +175,31 @@ class TeacherScheduleTimeController extends Crud } } + //检测时间是否有相交的 + $cross_data_time = []; + foreach ($data['schedule_time'] as $index => $item) { + $time_period = explode(' - ', $item); + $cross_data_time[$index] = [ + 'beginTime' => $data['date'] . ' ' . $time_period[0], + 'endTime' => $data['date'] . ' ' . $time_period[1], + ]; + } + + if (!is_time_cross($cross_data_time)) { + throw new Exception('请确认时间是否有重叠'); + } + + if (isset($data['teacher_schedule_id'])) { $teacher_schedule_id = array_filter($data['teacher_schedule_id']); if ($teacher_schedule_id) { //查找在空闲时间中却不在已存在提交的排课时间的已被删除的排课时间 $removed_teacher_schedule_time = \app\common\model\TeacherScheduleTime::where(['free_time_id' => $free_time->id])->whereNotIn('id', $teacher_schedule_id)->select(); - if(!$removed_teacher_schedule_time->isEmpty()){ + if (!$removed_teacher_schedule_time->isEmpty()) { //删除对用的学生排课时间 $removed_teacher_schedule_time_ids = array_column($removed_teacher_schedule_time->toArray(), 'id'); - StudentSchedule::where(['teacher_schedule_time_id'=>$removed_teacher_schedule_time_ids])->select()->delete(); + StudentSchedule::where(['teacher_schedule_time_id' => $removed_teacher_schedule_time_ids])->select()->delete(); //删除教师被删除的排课时间 $removed_teacher_schedule_time->delete(); } @@ -208,7 +223,7 @@ class TeacherScheduleTimeController extends Crud $m = round($diff->i / 60, 2); $hour = round($h + $m, 2); $time = trim($time_period[0]) . ' - ' . trim($time_period[1]); - + if (isset($data['teacher_schedule_id']) && $data['teacher_schedule_id'][$index]) { $teacher_schedule_time = \app\common\model\TeacherScheduleTime::where(['id' => $data['teacher_schedule_id'][$index]])->findOrEmpty(); $teacher_schedule_time->save([ @@ -222,6 +237,7 @@ class TeacherScheduleTimeController extends Crud 'en_start_time' => $en_start_time, 'en_end_time' => $en_end_time, 'month' => $free_time->month, + 'subject_id' => $data['subject_id'][$index], 'free_time_id' => $free_time->id, ]); } else { @@ -236,6 +252,7 @@ class TeacherScheduleTimeController extends Crud 'en_start_time' => $en_start_time, 'en_end_time' => $en_end_time, 'month' => $free_time->month, + 'subject_id' => $data['subject_id'][$index], 'free_time_id' => $free_time->id, ]); } @@ -243,9 +260,9 @@ class TeacherScheduleTimeController extends Crud //更新学生排课 $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $teacher_schedule_time->id])->findOrEmpty(); $student_name = ''; - if($data['student_id'][$index]){ + if ($data['student_id'][$index]) { $student = Student::where(['id' => $data['student_id'][$index]])->findOrEmpty(); - if(!$student->isEmpty()){ + if (!$student->isEmpty()) { $student_name = $student->student_name; } } @@ -309,15 +326,15 @@ class TeacherScheduleTimeController extends Crud if ($request->method() === 'POST') { if ($request->post('is_publish')) { //发布检测是否排课和安排学生 - $teacher_schedule_time = \app\common\model\TeacherScheduleTime::where(['id'=> $request->post('id')])->findOrEmpty(); - if(empty($teacher_schedule_time->subject_id)){ + $teacher_schedule_time = \app\common\model\TeacherScheduleTime::where(['id' => $request->post('id')])->findOrEmpty(); + if (empty($teacher_schedule_time->subject_id)) { return json([ 'code' => ResponseCode::WEB_API_FAIL, 'msg' => '请先选择课程再发布' ]); } $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $teacher_schedule_time->id])->select(); - if($student_schedule->isEmpty()){ + if ($student_schedule->isEmpty()) { return json([ 'code' => ResponseCode::WEB_API_FAIL, 'msg' => '请先安排学生后再发布' @@ -452,7 +469,7 @@ class TeacherScheduleTimeController extends Crud if (isset($data['is_publish'])) { $teacher_schedule_time->is_publish = $data['is_publish']; - if(empty($teacher_schedule_time->subject_id)){ + if (empty($teacher_schedule_time->subject_id)) { return json([ 'code' => ResponseCode::WEB_API_FAIL, 'msg' => '请先选择课程再发布' @@ -460,7 +477,7 @@ class TeacherScheduleTimeController extends Crud } $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $teacher_schedule_time->id])->select(); - if($student_schedule->isEmpty()){ + if ($student_schedule->isEmpty()) { return json([ 'code' => ResponseCode::WEB_API_FAIL, 'msg' => '请先安排学生后再发布' @@ -499,7 +516,7 @@ class TeacherScheduleTimeController extends Crud //获取所有老师 $teacher = Teacher::order('id asc')->field('id,teacher_name,account')->select()->toArray(); - return view('teacher-schedule-time/export_schedule_index', [ 'teacher' => $teacher]); + return view('teacher-schedule-time/export_schedule_index', ['teacher' => $teacher]); } @@ -515,7 +532,7 @@ class TeacherScheduleTimeController extends Crud ->leftJoin('teacher t', 'ts.teacher_id = t.id') ->leftJoin('student_schedule ss', 'ts.id = ss.teacher_schedule_time_id and t.id = ss.teacher_id'); - if($request->get('teacher_id')){ + if ($request->get('teacher_id')) { $summary->where('ts.teacher_id', $request->get('teacher_id')); } // ->where(['ts.is_publish' => 1]) @@ -591,11 +608,11 @@ class TeacherScheduleTimeController extends Crud ss.student_name ') ->group('ts.id'); - if($request->get('teacher_id')){ + if ($request->get('teacher_id')) { $query->where('ts.teacher_id', $request->get('teacher_id')); } $summary = $query->select()->toArray(); - + $export_data = []; foreach ($summary as $item) { diff --git a/plugin/admin/app/view/student-schedule/index.html b/plugin/admin/app/view/student-schedule/index.html index 352c856..0a31010 100644 --- a/plugin/admin/app/view/student-schedule/index.html +++ b/plugin/admin/app/view/student-schedule/index.html @@ -11,7 +11,7 @@