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

@ -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]);
@ -182,7 +189,9 @@ class TeacherScheduleTimeController extends Crud
$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]);
\app\common\model\TeacherScheduleTime::create([ 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, 'teacher_id' => $free_time->teacher_id,
'date' => $free_time->date, 'date' => $free_time->date,
'time' => $time, 'time' => $time,
@ -195,6 +204,66 @@ class TeacherScheduleTimeController extends Crud
'month' => $free_time->month, 'month' => $free_time->month,
'free_time_id' => $free_time->id, '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,
]);
}
//更新学生排课
$student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $teacher_schedule_time->id])->findOrEmpty();
$student_name = '';
if($data['student_id'][$index]){
$student = Student::where(['id' => $data['student_id'][$index]])->findOrEmpty();
if(!$student->isEmpty()){
$student_name = $student->student_name;
}
}
if ($student_schedule->isEmpty()) {
StudentSchedule::create([
'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([

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();
}) })
// 删除时间 // 删除时间