教师排课

This commit is contained in:
Dai 2024-07-15 17:26:13 +08:00
parent a4c42b946c
commit ff70a5b4e8
6 changed files with 108 additions and 52 deletions

View File

@ -17,7 +17,19 @@ class TeacherScheduleTimeController extends BaseController
public function addScheduleTime(Request $request) public function addScheduleTime(Request $request)
{ {
$service = new TeacherScheduleTimeService(); $service = new TeacherScheduleTimeService();
$res = $service->addFreeTime($request); $res = $service->addScheduleTime($request);
return $this->json($res);
}
/**
* @desc 获取排期信息
* @param Request $request
* @return \support\Response
*/
public function getScheduleTime(Request $request)
{
$service = new TeacherScheduleTimeService();
$res = $service->getScheduleTime($request);
return $this->json($res); return $this->json($res);
} }

View File

@ -28,5 +28,9 @@ class TeacherScheduleTime extends BaseModel
{ {
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');
}
} }

View File

@ -16,7 +16,7 @@ class TeacherScheduleTimeService
* @param $request * @param $request
* @return array|void * @return array|void
*/ */
public function addFreeTime($request) public function addScheduleTime($request)
{ {
try { try {
if (empty($request->teacher)) { if (empty($request->teacher)) {
@ -27,29 +27,6 @@ class TeacherScheduleTimeService
if ($teacher->isEmpty()) { if ($teacher->isEmpty()) {
throw new Exception('未找到教师信息,设置失败'); throw new Exception('未找到教师信息,设置失败');
} }
// $free_time = [
// '2024-7-14'=>[
// '9:00-10:00',
// '10:00-11:00',
// '11:00-12:00',
// ],
// '2024-7-15'=>[
// '14:00-15:00',
// '15:00-16:00',
// '16:00-17:00',
// ],
// '2024-7-16'=>[
// '9:00-10:00',
// '10:00-11:00',
// '11:00-12:00',
// ],
// '2024-7-17'=>[
// '9:00-10:00',
// '10:00-11:00',
// '11:00-12:00',
// ]
// ];
$data = $request->post(); $data = $request->post();
$free_time = json_decode($data['schedule_time'], true); $free_time = json_decode($data['schedule_time'], true);
@ -72,6 +49,8 @@ class TeacherScheduleTimeService
'date' => $free_date, 'date' => $free_date,
'time' => $time, 'time' => $time,
'hour' => $hour, 'hour' => $hour,
'start_time' => date('Y-m-d H:i:s', $firstDate->getTimestamp()),
'end_time' => date('Y-m-d H:i:s', $secondDate->getTimestamp()),
'month' => date('Y-m', strtotime($free_date)), 'month' => date('Y-m', strtotime($free_date)),
]; ];
//@todo:判断是否已经存在 //@todo:判断是否已经存在
@ -95,4 +74,34 @@ class TeacherScheduleTimeService
} }
} }
public function getScheduleTime($request)
{
try {
if (empty($request->teacher)) {
throw new Exception('请教师登陆后再设置');
}
$teacher = Teacher::where(['id' => $request->teacher->id])->findOrEmpty();
if ($teacher->isEmpty()) {
throw new Exception('未找到教师信息,设置失败');
}
$data = $request->get();
$schedule = TeacherScheduleTime::where(['teacher_id'=>$teacher->id, 'date'=>$data['schedule_date']])->select();
return [
'code' => ResponseCode::SUCCESS,
'data'=>$schedule,
'msg' => 'success',
];
}catch (Exception $e){
return [
'code' => ResponseCode::FAIL,
'msg' => $e->getMessage()
];
}
}
} }

View File

@ -70,7 +70,7 @@ class TeacherScheduleTimeController extends Crud
if ($request->get('id')) { if ($request->get('id')) {
$teacher_free_time = \app\common\model\TeacherScheduleTime::where(['id' => $request->get('id')])->findOrEmpty(); $teacher_free_time = \app\common\model\TeacherScheduleTime::where(['id' => $request->get('id')])->findOrEmpty();
$teacher = Teacher::where(['id' => $teacher_free_time->teacher_id])->field('teacher_name,account')->findOrEmpty()->toArray(); $teacher = Teacher::where(['id' => $teacher_free_time->teacher_id])->field('id,teacher_name,account')->findOrEmpty()->toArray();
} }
return view('teacher-schedule-time/update', ['teacher' => $teacher]); return view('teacher-schedule-time/update', ['teacher' => $teacher]);
} }
@ -107,7 +107,11 @@ class TeacherScheduleTimeController extends Crud
public function getScheduleTime(Request $request) public function getScheduleTime(Request $request)
{ {
try { try {
$list = \app\common\model\TeacherScheduleTime::where(['teacher_id' => $request->get('id'), 'month' => '2024-07']) $teacher_id = $request->post('id');
$start_date = date('Y-m-d H:i:s', strtotime($request->post('start_date')));
$end_date = date('Y-m-d 23:59:59', strtotime($request->post('end_date')));
$list = \app\common\model\TeacherScheduleTime::where(['teacher_id' => $teacher_id])
->whereBetweenTime('start_time', $start_date, $end_date)
->with(['subject']) ->with(['subject'])
->select() ->select()
->toArray(); ->toArray();

View File

@ -53,7 +53,9 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">是否发布</label> <label class="layui-form-label">是否发布</label>
<div class="layui-input-block"> <div class="layui-input-block">
<input type="checkbox" name="is_publish" title="发布|未发布" lay-skin="switch" value="1" { if($schedule_time['is_publish'] == 1)} checked {/if} > <input type="radio" name="is_publish" value="0" title="未发布" {if($schedule_time['is_publish'] == 0)} checked {/if}>
<input type="radio" name="is_publish" value="1" title="发布" {if($schedule_time['is_publish'] == 1)} checked {/if}>
<!-- <input type="checkbox" name="is_publish" title="发布|未发布" lay-skin="switch" value="1" { if($schedule_time['is_publish'] == 1)} checked {/if} >-->
<!-- <input type="text" name="hour" value="{$schedule_time['hour']}" disabled class="layui-input">--> <!-- <input type="text" name="hour" value="{$schedule_time['hour']}" disabled class="layui-input">-->
</div> </div>
</div> </div>

View File

@ -71,28 +71,49 @@
<div id='wrap' style="display: flex;"> <div id='wrap' style="display: flex;">
<div id='external-events'> <div id='external-events'>
<h4>老师信息</h4> <h4>老师信息</h4>
<div id='external-events-list'> <div>
<div class='fc-event fc-h-event fc-daygrid-event fc-daygrid-block-event'> <div class='fc-event-main'><?= $teacher['teacher_name']?></div>
<div class='fc-event-main'><?= $teacher['teacher_name']?></div> </div>
<div style="display: flex;flex-direction: column;">
<div style="width: 100px;height: 20px;">
<span class="layui-badge-dot layui-bg-danger"></span>
<span>未排课</span>
</div> </div>
<!-- <div class='fc-event fc-h-event fc-daygrid-event fc-daygrid-block-event'>--> <div style="width: 120px;height: 20px;">
<!-- <div class='fc-event-main'>事件 2</div>--> <span class="layui-badge-dot layui-bg-orange"></span>
<!-- </div>--> <span>已排课,未发布</span>
<!-- <div class='fc-event fc-h-event fc-daygrid-event fc-daygrid-block-event'>--> </div>
<!-- <div class='fc-event-main'>事件 3</div>--> <div style="width: 100px;height: 20px;">
<!-- </div>--> <span class="layui-badge-dot layui-bg-green"></span>
<!-- <div class='fc-event fc-h-event fc-daygrid-event fc-daygrid-block-event'>--> <span>已发布</span>
<!-- <div class='fc-event-main'>事件 4</div>--> </div>
<!-- </div>--> </div>
<!-- <div class='fc-event fc-h-event fc-daygrid-event fc-daygrid-block-event'>--> <div id='external-events-list'>
<!-- <div class='fc-event-main'>事件 5</div>-->
<!-- </div>--> <!-- <div class='fc-event fc-h-event fc-daygrid-event fc-daygrid-block-event'>-->
<!-- <span class="layui-badge-dot layui-bg-danger">未排课</span>-->
<!-- <span class="layui-badge-dot layui-bg-orange">已排课,未发布</span>-->
<!-- <span class="layui-badge-dot layui-bg-green">已发布</span>-->
<!-- </div>-->
<!-- <div class='fc-event fc-h-event fc-daygrid-event fc-daygrid-block-event'>-->
<!-- <div class='fc-event-main'>事件 2</div>-->
<!-- </div>-->
<!-- <div class='fc-event fc-h-event fc-daygrid-event fc-daygrid-block-event'>-->
<!-- <div class='fc-event-main'>事件 3</div>-->
<!-- </div>-->
<!-- <div class='fc-event fc-h-event fc-daygrid-event fc-daygrid-block-event'>-->
<!-- <div class='fc-event-main'>事件 4</div>-->
<!-- </div>-->
<!-- <div class='fc-event fc-h-event fc-daygrid-event fc-daygrid-block-event'>-->
<!-- <div class='fc-event-main'>事件 5</div>-->
<!-- </div>-->
</div> </div>
<!-- <p>--> <!-- <p>-->
<!-- <input type='checkbox' id='drop-remove'/>--> <!-- <input type='checkbox' id='drop-remove'/>-->
<!-- <label for='drop-remove'>移动后清除</label>--> <!-- <label for='drop-remove'>移动后清除</label>-->
<!-- </p>--> <!-- </p>-->
</div> </div>
<div id='calendar' style="height: 650px;width: 750px;"></div> <div id='calendar' style="height: 650px;width: 750px;"></div>
@ -197,12 +218,16 @@
editable: true, editable: true,
dayMaxEvents: true, // allow "more" link when too many events dayMaxEvents: true, // allow "more" link when too many events
events: function (info, successCallback, failureCallback) { events: function (info, successCallback, failureCallback) {
console.log('12312313') console.log('12312313', info)
let start_date = info.startStr;
let end_date = info.endStr;
let teacher_id = "{$teacher['id']}"
layui.$.ajax({ layui.$.ajax({
url: '/app/admin/teacherScheduleTime/getScheduleTime?id=1', url: '/app/admin/teacherScheduleTime/getScheduleTime',
type: "POST", type: "POST",
dateType: "json", dateType: "json",
// data: data.field, data: {id: teacher_id, start_date: start_date, end_date: end_date},
success: function (res) { success: function (res) {
console.log(res) console.log(res)
if (res.code == 0) { if (res.code == 0) {
@ -220,8 +245,8 @@
} }
}); });
}, },
eventTextColor :function (obj){ eventTextColor: function (obj) {
console.log('字体颜色',obj) console.log('字体颜色', obj)
}, },
eventMouseEnter: function (info) { eventMouseEnter: function (info) {
console.log('鼠标', info) console.log('鼠标', info)