fix 教师排课添加课程、学生

This commit is contained in:
Dai 2024-10-09 23:54:37 +08:00
parent 1ce0da01c6
commit a2eafa699f
4 changed files with 135 additions and 35 deletions

View File

@ -350,7 +350,7 @@ class TeacherFreeTimeController extends Crud
]; ];
//获取已排课时间 //获取已排课时间
$teacher_schedule_time = TeacherScheduleTime::where(['free_time_id' => $free_time_id])->select()->toArray(); $teacher_schedule_time = TeacherScheduleTime::where(['free_time_id' => $free_time_id])->with(['oneStudentSchedule'])->select()->toArray();
// $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $free_time_id])->select()->toArray(); // $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $free_time_id])->select()->toArray();

View File

@ -129,9 +129,9 @@ class TeacherScheduleTimeController extends Crud
$ids = $this->deleteInput($request); $ids = $this->deleteInput($request);
$this->doDelete($ids); $this->doDelete($ids);
//删除排课相关的学生课程 //删除排课相关的学生课程
$student_schedule = StudentSchedule::where(['teacher_schedule_time_id'=>$ids])->select(); $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $ids])->select();
if(!$student_schedule->isEmpty()){ if (!$student_schedule->isEmpty()) {
$student_schedule->delete(); $student_schedule->delete();
} }
@ -165,7 +165,14 @@ class TeacherScheduleTimeController extends Crud
} }
} }
\app\common\model\TeacherScheduleTime::where(['free_time_id' => $free_time->id])->select()->delete(); if (isset($data['teacher_schedule_id'])) {
$teacher_schedule_id = array_filter($data['teacher_schedule_id']);
if ($teacher_schedule_id) {
$res = \app\common\model\TeacherScheduleTime::where(['free_time_id' => $free_time->id])->whereNotIn('id', $teacher_schedule_id)->select()->delete();
}
}
foreach ($data['schedule_time'] as $index => $item) { foreach ($data['schedule_time'] as $index => $item) {
$time_period = explode(' - ', $item); $time_period = explode(' - ', $item);
$en_time_period = explode(' - ', $data['schedule_en_time'][$index]); $en_time_period = explode(' - ', $data['schedule_en_time'][$index]);
@ -181,20 +188,82 @@ class TeacherScheduleTimeController extends Crud
$m = round($diff->i / 60, 2); $m = round($diff->i / 60, 2);
$hour = round($h + $m, 2); $hour = round($h + $m, 2);
$time = trim($time_period[0]) . ' - ' . trim($time_period[1]); $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([
'teacher_id' => $free_time->teacher_id,
'date' => $free_time->date,
'time' => $time,
'en_time' => $data['schedule_en_time'][$index],
'hour' => $hour,
'start_time' => $start_time,
'end_time' => $end_time,
'en_start_time' => $en_start_time,
'en_end_time' => $en_end_time,
'month' => $free_time->month,
'free_time_id' => $free_time->id,
]);
} else {
$teacher_schedule_time = \app\common\model\TeacherScheduleTime::create([
'teacher_id' => $free_time->teacher_id,
'date' => $free_time->date,
'time' => $time,
'en_time' => $data['schedule_en_time'][$index],
'hour' => $hour,
'start_time' => $start_time,
'end_time' => $end_time,
'en_start_time' => $en_start_time,
'en_end_time' => $en_end_time,
'month' => $free_time->month,
'free_time_id' => $free_time->id,
]);
}
\app\common\model\TeacherScheduleTime::create([ //更新学生排课
'teacher_id' => $free_time->teacher_id, $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $teacher_schedule_time->id])->findOrEmpty();
'date' => $free_time->date, $student_name = '';
'time' => $time, if($data['student_id'][$index]){
'en_time' => $data['schedule_en_time'][$index], $student = Student::where(['id' => $data['student_id'][$index]])->findOrEmpty();
'hour' => $hour, if(!$student->isEmpty()){
'start_time' => $start_time, $student_name = $student->student_name;
'end_time' => $end_time, }
'en_start_time' => $en_start_time, }
'en_end_time' => $en_end_time, if ($student_schedule->isEmpty()) {
'month' => $free_time->month, StudentSchedule::create([
'free_time_id' => $free_time->id, 'student_id' => $data['student_id'][$index],
]); 'student_name' => $student_name,
'teacher_schedule_time_id' => $teacher_schedule_time->id,
'teacher_id' => $free_time->teacher_id,
'subject_id' => $data['subject_id'][$index],
'date' => $free_time->date,
'time' => $time,
'en_time' => $data['schedule_en_time'][$index],
'hour' => $hour,
'start_time' => $start_time,
'end_time' => $end_time,
'en_start_time' => $en_start_time,
'en_end_time' => $en_end_time,
'month' => $free_time->month,
]);
} else {
$student_schedule->save([
'student_id' => $data['student_id'][$index],
'student_name' => $student_name,
'teacher_schedule_time_id' => $teacher_schedule_time->id,
'teacher_id' => $free_time->teacher_id,
'subject_id' => $data['subject_id'][$index],
'date' => $free_time->date,
'time' => $time,
'en_time' => $data['schedule_en_time'][$index],
'hour' => $hour,
'start_time' => $start_time,
'end_time' => $end_time,
'en_start_time' => $en_start_time,
'en_end_time' => $en_end_time,
'month' => $free_time->month,
]);
}
} }
return json([ return json([
@ -543,9 +612,9 @@ class TeacherScheduleTimeController extends Crud
// $writer->save(public_path('/export_file/' . $month . '-' . time() . '.xlsx')); // $writer->save(public_path('/export_file/' . $month . '-' . time() . '.xlsx'));
if($is_publish){ if ($is_publish) {
$file_name = $month . '-publish-' . time() . '.xlsx'; $file_name = $month . '-publish-' . time() . '.xlsx';
}else{ } else {
$file_name = $month . '-unpublish-' . time() . '.xlsx'; $file_name = $month . '-unpublish-' . time() . '.xlsx';
} }
$file_path = '/export_file/'; $file_path = '/export_file/';

View File

@ -186,7 +186,7 @@
title: "教师空闲时间排课", title: "教师空闲时间排课",
shade: 0.1, shade: 0.1,
maxmin: true, maxmin: true,
area: ["750px", "650px"], area: ["950px", "650px"],
content: "/app/admin/teacherFreeTime/freeTimeSetting?free_time_id=" + free_time_id content: "/app/admin/teacherFreeTime/freeTimeSetting?free_time_id=" + free_time_id
}); });
// if (confirm('您确定要删除此事件吗?')) { // if (confirm('您确定要删除此事件吗?')) {

View File

@ -107,19 +107,38 @@
{else /} {else /}
{foreach $teacher_schedule_time as $index=>$item} {foreach $teacher_schedule_time as $index=>$item}
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">本地时间</label> <input type="hidden" name="teacher_schedule_id[{$index+1}]" value="{$item['id']}">
<label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -17px;">本地时间</label>
<div class="layui-input-inline" style="width: 120px;"> <div class="layui-input-inline" style="width: 120px;">
<input type="text" name="schedule_en_time[{$index+1}]" lay-verify="required" <input type="text" name="schedule_en_time[{$index+1}]" lay-verify="required"
value="{$item['en_time']}" placeholder="请选择排课时间" curNum='{$index+1}' value="{$item['en_time']}" placeholder="请选择排课时间" curNum='{$index+1}'
autocomplete="off" class="layui-input time"> autocomplete="off" class="layui-input time">
</div> </div>
<label class="layui-form-label">中国时间</label> <label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -17px;">中国时间</label>
<div class="layui-input-inline" style="width: 120px;"> <div class="layui-input-inline" style="width: 120px;">
<input type="text" name="schedule_time[{$index+1}]" lay-verify="required" <input type="text" name="schedule_time[{$index+1}]" lay-verify="required"
value="{$item['time']}" placeholder="请选择排课时间" curNum='{$index+1}' value="{$item['time']}" placeholder="请选择排课时间" curNum='{$index+1}'
autocomplete="off" readonly class="layui-input schedule_time"> autocomplete="off" readonly class="layui-input schedule_time">
</div> </div>
<div class="layui-input-inline" style="margin-left: 50px;padding-top: 10px;width: 90px"> <label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -40px;">课程</label>
<div class="layui-input-inline" style="width: 120px;">
<select lay-search="" name="subject_id[{$index+1}]" required lay-verify="required" lay-filter="selectTimezone">
<option value="">请选择或搜索课程</option>
{foreach $project as $subject_item}
<option value="{$subject_item['id']}" {if isset($item['oneStudentSchedule']) && !empty($item['oneStudentSchedule']) && ($item['oneStudentSchedule']['subject_id'] == $subject_item['id'])} selected {/if}>{$subject_item['english_name']}</option>
{/foreach}
</select>
</div>
<label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -40px;">学生</label>
<div class="layui-input-inline" style="width: 120px;">
<select lay-search="{caseSensitive:false, fuzzy: false}" name="student_id[{$index+1}]" required lay-verify="required" lay-filter="selectTimezone">
<option value="">请选择或搜索学生</option>
{foreach $student as $student_item}
<option value="{$student_item['id']}" {if isset($item['oneStudentSchedule']) && !empty($item['oneStudentSchedule']) && ($item['oneStudentSchedule']['student_id'] == $student_item['id'])} selected {/if}>{$student_item['student_name']}</option>
{/foreach}
</select>
</div>
<div class="layui-input-inline" style="padding-top: 10px;width: 90px">
<button type="button" class="layui-btn layui-btn-xs layui-bg-green add-schedule-time" <button type="button" class="layui-btn layui-btn-xs layui-bg-green add-schedule-time"
lay-event="remove" permission="app.admin.teacher.delete">添加 lay-event="remove" permission="app.admin.teacher.delete">添加
</button> </button>
@ -200,30 +219,40 @@
var maxNum = $('#schedule_free_time').find('.time:last').attr('curNum'); var maxNum = $('#schedule_free_time').find('.time:last').attr('curNum');
maxNum = Number(maxNum) + 1; maxNum = Number(maxNum) + 1;
// var htmlStr = '<div class="layui-form-item">\n' +
// ' <div class="layui-input-inline" style="width: 250px;">\n' +
// ' <input type="text" name="schedule_time[' + maxNum + ']" lay-verify="required" placeholder="请选择排课时间" curNum="' + maxNum + '" autocomplete="off" class="layui-input time">\n' +
// ' </div>\n' +
// ' <div class="layui-input-inline" style="margin-left: 50px;padding-top: 10px;">\n' +
// ' <button type="button" class="layui-btn layui-btn-xs layui-bg-green add-schedule-time" lay-event="remove" permission="app.admin.teacher.delete">添加</button>\n' +
// ' <button type="button" class="layui-btn layui-btn-xs layui-bg-red remove-schedule-time" lay-event="remove" permission="app.admin.teacher.delete">删除</button>\n' +
// ' </div>\n' +
// '</div>';
var htmlStr = '<div class="layui-form-item">\n' + var htmlStr = '<div class="layui-form-item">\n' +
' <label class="layui-form-label">本地时间</label>\n' + ' <input type="hidden" name="teacher_schedule_id[' + maxNum + ']" value="">' +
' <label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -17px;">本地时间</label>\n' +
' <div class="layui-input-inline" style="width: 120px;">\n' + ' <div class="layui-input-inline" style="width: 120px;">\n' +
' <input type="text" name="schedule_en_time[' + maxNum + ']" lay-verify="required"\n' + ' <input type="text" name="schedule_en_time[' + maxNum + ']" lay-verify="required"\n' +
' placeholder="请选择排课时间"\n' + ' placeholder="请选择排课时间"\n' +
' curNum="' + maxNum + '" autocomplete="off" class="layui-input time">\n' + ' curNum="' + maxNum + '" autocomplete="off" class="layui-input time">\n' +
' </div>\n' + ' </div>\n' +
' <label class="layui-form-label">中国时间</label>\n' + ' <label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -17px;">中国时间</label>\n' +
' <div class="layui-input-inline" style="width: 120px;">\n' + ' <div class="layui-input-inline" style="width: 120px;">\n' +
' <input type="text" name="schedule_time[' + maxNum + ']" lay-verify="required"\n' + ' <input type="text" name="schedule_time[' + maxNum + ']" lay-verify="required"\n' +
' value="" placeholder="请选择排课时间" curNum="' + maxNum + '"\n' + ' value="" placeholder="请选择排课时间" curNum="' + maxNum + '"\n' +
' autocomplete="off" readonly class="layui-input schedule_time">\n' + ' autocomplete="off" readonly class="layui-input schedule_time">\n' +
' </div>\n' + ' </div>\n' +
' <div class="layui-input-inline" style="margin-left: 50px;padding-top: 10px;width: 90px">\n' + ' <label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -40px;">课程</label>\n' +
' <div class="layui-input-inline" style="width: 120px;">\n' +
' <select lay-search="" name="subject_id[' + maxNum + ']" required lay-verify="required" lay-filter="selectTimezone">\n' +
' <option value="">请选择或搜索课程</option>\n' +
' {foreach $project as $item}\n' +
' <option value="{$item[\'id\']}">{$item[\'english_name\']}</option>\n' +
' {/foreach}\n' +
' </select>\n' +
' </div>\n' +
' <label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -40px;">学生</label>\n' +
' <div class="layui-input-inline" style="width: 120px;">\n' +
' <select lay-search="{caseSensitive:false, fuzzy: false}" name="student_id[' + maxNum + ']" required lay-verify="required" lay-filter="selectTimezone">\n' +
' <option value="">请选择或搜索学生</option>\n' +
' {foreach $student as $item}\n' +
' <option value="{$item[\'id\']}">{$item[\'student_name\']}</option>\n' +
' {/foreach}\n' +
' </select>\n' +
' </div>' +
' <div class="layui-input-inline" style="padding-top: 10px;width: 90px">\n' +
' <button type="button" class="layui-btn layui-btn-xs layui-bg-green add-schedule-time"\n' + ' <button type="button" class="layui-btn layui-btn-xs layui-bg-green add-schedule-time"\n' +
' lay-event="remove" permission="app.admin.teacher.delete">添加\n' + ' lay-event="remove" permission="app.admin.teacher.delete">添加\n' +
' </button>\n' + ' </button>\n' +
@ -257,6 +286,8 @@
$(this.elem).parent().parent().children().find('.schedule_time').val(start_time + ' - ' + end_time) $(this.elem).parent().parent().children().find('.schedule_time').val(start_time + ' - ' + end_time)
} }
}); });
form.render();
}) })
// 删除时间 // 删除时间