diff --git a/app/common/model/TeacherScheduleTime.php b/app/common/model/TeacherScheduleTime.php index f50d68c..f3ba403 100644 --- a/app/common/model/TeacherScheduleTime.php +++ b/app/common/model/TeacherScheduleTime.php @@ -20,17 +20,27 @@ class TeacherScheduleTime extends BaseModel { public function teacher() + { + return $this->hasOne(Teacher::class, 'id', 'teacher_id')->bind([ + 'teacher_account' => 'account', + 'teacher_name', + 'time_zone_name' + ]); + } + + public function teacherAttr() { return $this->hasOne(Teacher::class, 'id', 'teacher_id'); } public function subject() { - return $this->hasOne(Subject::class, 'id', 'subject_id')->bind(['subject_name','english_name']); + return $this->hasOne(Subject::class, 'id', 'subject_id')->bind(['subject_name', 'english_name']); } + public function subjectArr() { return $this->hasOne(Subject::class, 'id', 'subject_id'); } - + } diff --git a/plugin/admin/app/controller/TeacherController.php b/plugin/admin/app/controller/TeacherController.php index 558296e..e000db9 100644 --- a/plugin/admin/app/controller/TeacherController.php +++ b/plugin/admin/app/controller/TeacherController.php @@ -2,6 +2,7 @@ namespace plugin\admin\app\controller; +use app\common\model\TeacherScheduleTime; use app\constant\ResponseCode; use support\Request; use support\Response; @@ -147,6 +148,70 @@ class TeacherController extends Crud return view('teacher/update'); } + /** + * @desc 查看教师日程安排 + * @param Request $request + * @return Response + */ + public function check_schedule(Request $request) + { + + $data = $request->get(); + + return view('teacher/check_schedule', ['teacher_id' => $data['id']]); + } + + + /** + * @desc 获取教师课程安排统计 + * @param Request $request + * @return Response + */ + public function getTeacherScheduleMonth(Request $request) + { + try { + $data = $request->get(); + $schedule_time = TeacherScheduleTime::where(['teacher_id' => $data['teacher_id']]) + ->field(' + teacher_id, + month, + COUNT(id) AS total_courses, + SUM(hour) AS total_hours, + SUM(CASE WHEN subject_id > 0 THEN 1 ELSE 0 END) AS has_subject, + SUM(CASE WHEN subject_id = 0 THEN 1 ELSE 0 END) AS has_no_subject, + SUM(CASE WHEN subject_id = 0 THEN hour ELSE 0 END) AS total_nonscheduled_hours, + SUM(CASE WHEN subject_id != 0 THEN hour ELSE 0 END) AS total_scheduled_hours, + SUM(CASE WHEN subject_id != 0 AND is_publish = 1 THEN hour ELSE 0 END) AS total_published_scheduled_hours, + SUM(CASE WHEN subject_id != 0 AND is_publish = 0 THEN hour ELSE 0 END) AS total_unpublished_scheduled_hours, + + SUM(CASE WHEN is_publish = 1 THEN 1 ELSE 0 END) AS published_courses, + SUM(CASE WHEN is_publish = 0 THEN 1 ELSE 0 END) AS unpublished_courses + ') + ->group('month') + ->with(['teacher']); + + $limit = (int)$request->get('limit', 10); + $limit = $limit <= 0 ? 10 : $limit; + $page = (int)$request->get('page'); + $page = $page > 0 ? $page : 1; + + $total = $schedule_time->count(); + $list = $schedule_time->page($page, $limit)->select(); + + return json([ + 'code' => ResponseCode::WEB_API_SUCCESS, + 'data' => $list, + 'count' => $total, + 'msg' => 'ok' + ]); + } catch (Exception $e) { + return json([ + 'code' => ResponseCode::WEB_API_FAIL, + 'msg' => $e->getMessage() + ]); + } + } + /** * @desc 重置密码 * @param Request $request @@ -165,7 +230,7 @@ class TeacherController extends Crud 'salt' => $salt, 'password' => $password ]); - if(!$res){ + if (!$res) { throw new Exception('重置失败'); } diff --git a/plugin/admin/app/controller/TeacherScheduleTimeController.php b/plugin/admin/app/controller/TeacherScheduleTimeController.php index cdebe65..79c2b89 100644 --- a/plugin/admin/app/controller/TeacherScheduleTimeController.php +++ b/plugin/admin/app/controller/TeacherScheduleTimeController.php @@ -10,6 +10,7 @@ use support\Response; use plugin\admin\app\model\TeacherScheduleTime; use plugin\admin\app\controller\Crud; use support\exception\BusinessException; +use think\Exception; /** * 教师空闲时间 @@ -37,7 +38,53 @@ class TeacherScheduleTimeController extends Crud */ public function index(): Response { - return view('teacher-schedule-time/index'); + //获取所有老师 + $teacher = Teacher::order('id asc')->field('id,teacher_name,account')->select()->toArray(); + //所有课程 + $subject = Subject::order('sort desc,id asc')->field('id,subject_name,english_name')->select()->toArray(); + return view('teacher-schedule-time/index', ['teacher' => $teacher, 'subject' => $subject]); + } + + public function select(Request $request): Response + { + try { + $data = $request->get(); + $teacherSchedule = \app\common\model\TeacherScheduleTime::order('id asc'); + if (isset($data['teacher_id']) && $data['teacher_id']) { + $teacherSchedule->where(['teacher_id' => $data['teacher_id']]); + } + if (isset($data['date']) && $data['date']) { + $teacherSchedule->where(['date' => $data['date']]); + } + if (isset($data['month']) && $data['month']) { + $teacherSchedule->where(['month' => $data['month']]); + } + if (isset($data['subject_id']) && $data['subject_id']) { + $teacherSchedule->where(['subject_id' => $data['subject_id']]); + } + if (isset($data['is_publish']) && $data['is_publish'] !== '') { + $teacherSchedule->where(['is_publish' => $data['is_publish']]); + } + $limit = (int)$request->get('limit', 10); + $limit = $limit <= 0 ? 10 : $limit; + $page = (int)$request->get('page'); + $page = $page > 0 ? $page : 1; + + $total = $teacherSchedule->count(); + $list = $teacherSchedule->with(['subject', 'teacher'])->page($page, $limit)->select(); + + return json([ + 'code' => ResponseCode::WEB_API_SUCCESS, + 'data' => $list, + 'count' => $total, + 'msg' => 'success' + ]); + } catch (Exception $e) { + return json([ + 'code' => ResponseCode::WEB_API_FAIL, + 'msg' => $e->getMessage() + ]); + } } @@ -85,7 +132,7 @@ class TeacherScheduleTimeController extends Crud { if ($request->method() === 'POST') { - if($request->post('is_publish')){ + if ($request->post('is_publish')) { $request->post('is_publish', 0); } // parent::update($request); @@ -120,10 +167,10 @@ class TeacherScheduleTimeController extends Crud foreach ($list as $item) { $time_period = explode('-', $item['time']); if ($item['subject_id']) { - $title = $item['time'] . ' - ' . $item['subject_name'] . '/' .$item['english_name']; - if($item['is_publish'] == 0){ + $title = $item['time'] . ' - ' . $item['subject_name'] . '/' . $item['english_name']; + if ($item['is_publish'] == 0) { $color = 'orange'; - }else{ + } else { $color = 'green'; } } else { diff --git a/plugin/admin/app/view/teacher-schedule-time/index.html b/plugin/admin/app/view/teacher-schedule-time/index.html index cb01338..d80ec2c 100644 --- a/plugin/admin/app/view/teacher-schedule-time/index.html +++ b/plugin/admin/app/view/teacher-schedule-time/index.html @@ -1,398 +1,419 @@ - -
- -