教师排课

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)
{
$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);
}

View File

@ -28,5 +28,9 @@ class TeacherScheduleTime extends BaseModel
{
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
* @return array|void
*/
public function addFreeTime($request)
public function addScheduleTime($request)
{
try {
if (empty($request->teacher)) {
@ -27,29 +27,6 @@ class TeacherScheduleTimeService
if ($teacher->isEmpty()) {
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();
$free_time = json_decode($data['schedule_time'], true);
@ -72,6 +49,8 @@ class TeacherScheduleTimeService
'date' => $free_date,
'time' => $time,
'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)),
];
//@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')) {
$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]);
}
@ -107,7 +107,11 @@ class TeacherScheduleTimeController extends Crud
public function getScheduleTime(Request $request)
{
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'])
->select()
->toArray();

View File

@ -53,7 +53,9 @@
<div class="layui-form-item">
<label class="layui-form-label">是否发布</label>
<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">-->
</div>
</div>

View File

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