From 92c9177f25acefc4a2ac544708439871b730f6b4 Mon Sep 17 00:00:00 2001 From: wangzeyan <258785420@qq.com> Date: Mon, 26 May 2025 18:53:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/app/api/classroom.ts | 8 + .../timetables/components/schedule-add.vue | 231 ++++++++++++-- .../timetables/components/seat-selector.vue | 289 ++++++++++++++++++ .../controller/classroom/Classroom.php | 102 ++++--- .../app/adminapi/controller/venue/Venue.php | 2 + niucloud/app/adminapi/route/class.php | 65 ---- niucloud/app/adminapi/route/classroom.php | 4 + niucloud/app/model/class_grade/ClassGrade.php | 8 + niucloud/app/model/classroom/Classroom.php | 148 --------- .../model/course_schedule/CourseSchedule.php | 135 -------- niucloud/app/model/rel/ClassPersonnelRel.php | 32 ++ .../admin/classroom/ClassroomService.php | 48 ++- 12 files changed, 646 insertions(+), 426 deletions(-) create mode 100644 admin/src/app/views/timetables/components/seat-selector.vue delete mode 100644 niucloud/app/adminapi/route/class.php delete mode 100644 niucloud/app/model/classroom/Classroom.php create mode 100644 niucloud/app/model/rel/ClassPersonnelRel.php diff --git a/admin/src/app/api/classroom.ts b/admin/src/app/api/classroom.ts index 5dc3aa8f..6c0c9415 100644 --- a/admin/src/app/api/classroom.ts +++ b/admin/src/app/api/classroom.ts @@ -66,4 +66,12 @@ export function getWithPersonnelList(params: Record) { export function getAllClassroomList() { return request.get('classroom/classroom_all') } + +export function getClassroompeople($class_id: number) { + return request.get(`classroom/getClassroompeople/${$class_id}`) +} + +export function getClassroompeopleCount($class_id: number,params: Record) { + return request.get(`classroom/getClassroompeopleCount/${$class_id}`,{params}) +} // USER_CODE_END -- class diff --git a/admin/src/app/views/timetables/components/schedule-add.vue b/admin/src/app/views/timetables/components/schedule-add.vue index 43607ddd..0d23fb87 100644 --- a/admin/src/app/views/timetables/components/schedule-add.vue +++ b/admin/src/app/views/timetables/components/schedule-add.vue @@ -25,7 +25,7 @@ - - {{ availableCapacity }} - - 班级 @@ -74,16 +70,13 @@ - - - - {{ item.class_name }} - - + + @@ -129,11 +122,12 @@ + + \ No newline at end of file diff --git a/niucloud/app/adminapi/controller/classroom/Classroom.php b/niucloud/app/adminapi/controller/classroom/Classroom.php index 34ad1e96..68c61fd7 100644 --- a/niucloud/app/adminapi/controller/classroom/Classroom.php +++ b/niucloud/app/adminapi/controller/classroom/Classroom.php @@ -22,19 +22,20 @@ use app\service\admin\classroom\ClassroomService; */ class Classroom extends BaseAdminController { - /** - * 获取场地管理列表 - * @return \think\Response - */ - public function lists(){ + /** + * 获取场地管理列表 + * @return \think\Response + */ + public function lists() + { $data = $this->request->params([ - ["campus_id",""], - ["class_name",""], - ["head_coach",""], - ["class_type",""], - ["assistant_coach",""], - ["created_at",""], - ["status",""] + ["campus_id", ""], + ["class_name", ""], + ["head_coach", ""], + ["class_type", ""], + ["assistant_coach", ""], + ["created_at", ""], + ["status", ""] ]); return success((new ClassroomService())->getPage($data)); } @@ -44,7 +45,8 @@ class Classroom extends BaseAdminController * @param int $id * @return \think\Response */ - public function info(int $id){ + public function info(int $id) + { return success((new ClassroomService())->getInfo($id)); } @@ -52,17 +54,18 @@ class Classroom extends BaseAdminController * 添加场地管理 * @return \think\Response */ - public function add(){ + public function add() + { $data = $this->request->params([ - ["campus_id",0], - ["class_name",""], - ["head_coach",""], - ["age_group",""], - ["class_type",""], - ["assistant_coach",""], - ["status",""], - ["sort_order",0], - ["remarks",""] + ["campus_id", 0], + ["class_name", ""], + ["head_coach", ""], + ["age_group", ""], + ["class_type", ""], + ["assistant_coach", ""], + ["status", ""], + ["sort_order", 0], + ["remarks", ""] ]); $this->validate($data, 'app\validate\classroom\Classroom.add'); $id = (new ClassroomService())->add($data); @@ -74,17 +77,18 @@ class Classroom extends BaseAdminController * @param $id 场地管理id * @return \think\Response */ - public function edit(int $id){ + public function edit(int $id) + { $data = $this->request->params([ - ["campus_id",0], - ["class_name",""], - ["head_coach",""], - ["age_group",""], - ["class_type",""], - ["assistant_coach",""], - ["status",""], - ["sort_order",0], - ["remarks",""] + ["campus_id", 0], + ["class_name", ""], + ["head_coach", ""], + ["age_group", ""], + ["class_type", ""], + ["assistant_coach", ""], + ["status", ""], + ["sort_order", 0], + ["remarks", ""] ]); $this->validate($data, 'app\validate\classroom\Classroom.edit'); (new ClassroomService())->edit($id, $data); @@ -96,22 +100,40 @@ class Classroom extends BaseAdminController * @param $id 场地管理id * @return \think\Response */ - public function del(int $id){ + public function del(int $id) + { (new ClassroomService())->del($id); return success('DELETE_SUCCESS'); } - - public function getCampusAll(){ - return success(( new ClassroomService())->getCampusAll()); + + public function getCampusAll() + { + return success((new ClassroomService())->getCampusAll()); } - public function getPersonnelAll(){ - return success(( new ClassroomService())->getPersonnelAll()); + public function getPersonnelAll() + { + return success((new ClassroomService())->getPersonnelAll()); } public function classroom_all() { - return success(( new ClassroomService())->classroom_all()); + return success((new ClassroomService())->classroom_all()); } + + public function getClassroompeople($class_id) + { + return success((new ClassroomService())->getClassroompeople($class_id)); + } + + public function getClassroompeopleCount($venue_id) + { + $where = $this->request->params([ + ["course_date", ""], + ["time_slot", ""] + ]); + return success((new ClassroomService())->getClassroompeopleCount($venue_id,$where)); + } + } diff --git a/niucloud/app/adminapi/controller/venue/Venue.php b/niucloud/app/adminapi/controller/venue/Venue.php index 4df1484d..c7d5ee22 100644 --- a/niucloud/app/adminapi/controller/venue/Venue.php +++ b/niucloud/app/adminapi/controller/venue/Venue.php @@ -81,6 +81,8 @@ class Venue extends BaseAdminController ["campus_id", 0], ["venue_name", ""], ["capacity", 0], + ["time_range_start", 0], + ["time_range_end", 0], ["availability_status", 0], ["time_range_type", ""], ["fixed_time_ranges", []], diff --git a/niucloud/app/adminapi/route/class.php b/niucloud/app/adminapi/route/class.php deleted file mode 100644 index f87d8a1c..00000000 --- a/niucloud/app/adminapi/route/class.php +++ /dev/null @@ -1,65 +0,0 @@ -middleware([ - AdminCheckToken::class, - AdminCheckRole::class, - AdminLog::class -]); -// USER_CODE_END -- campus - -// USER_CODE_BEGIN -- class - -Route::group('class', function () { - - //场地管理列表 - Route::get('class', 'class.Class/lists'); - //场地管理详情 - Route::get('class/:id', 'class.Class/info'); - //添加场地管理 - Route::post('class', 'class.Class/add'); - //编辑场地管理 - Route::put('class/:id', 'class.Class/edit'); - //删除场地管理 - Route::delete('class/:id', 'class.Class/del'); - - Route::get('campus_all','class.Class/getCampusAll'); - - Route::get('personnel_all','class.Class/getPersonnelAll'); - -})->middleware([ - AdminCheckToken::class, - AdminCheckRole::class, - AdminLog::class -]); -// USER_CODE_END -- class diff --git a/niucloud/app/adminapi/route/classroom.php b/niucloud/app/adminapi/route/classroom.php index 00cf5d89..36e8feab 100644 --- a/niucloud/app/adminapi/route/classroom.php +++ b/niucloud/app/adminapi/route/classroom.php @@ -35,6 +35,10 @@ Route::group('classroom', function () { Route::get('classroom_all','classroom.Classroom/classroom_all'); + Route::get('getClassroompeople/:class_id','classroom.Classroom/getClassroompeople'); + + Route::get('getClassroompeopleCount/:class_id','classroom.Classroom/getClassroompeopleCount'); + })->middleware([ AdminCheckToken::class, AdminCheckRole::class, diff --git a/niucloud/app/model/class_grade/ClassGrade.php b/niucloud/app/model/class_grade/ClassGrade.php index 7df2cbcf..acff649b 100644 --- a/niucloud/app/model/class_grade/ClassGrade.php +++ b/niucloud/app/model/class_grade/ClassGrade.php @@ -11,6 +11,8 @@ namespace app\model\class_grade; +use app\model\campus\Campus; +use app\model\personnel\Personnel; use core\base\BaseModel; use think\model\concern\SoftDelete; use think\model\relation\HasMany; @@ -219,7 +221,13 @@ class ClassGrade extends BaseModel } + public function campus(){ + return $this->hasOne(Campus::class, 'id', 'campus_id')->joinType('left')->withField('campus_name,id')->bind(['campus_id_name'=>'campus_name']); + } + public function personnel(){ + return $this->hasOne(Personnel::class, 'id', 'head_coach')->joinType('left')->withField('name,id')->bind(['head_coach_name'=>'name']); + } diff --git a/niucloud/app/model/classroom/Classroom.php b/niucloud/app/model/classroom/Classroom.php deleted file mode 100644 index d6a815c8..00000000 --- a/niucloud/app/model/classroom/Classroom.php +++ /dev/null @@ -1,148 +0,0 @@ -where("campus_id", $value); - } - } - - /** - * 搜索器:场地管理班级名称 - * @param $value - * @param $data - */ - public function searchClassNameAttr($query, $value, $data) - { - if ($value) { - $query->where("class_name", $value); - } - } - - /** - * 搜索器:场地管理主教练 - * @param $value - * @param $data - */ - public function searchHeadCoachAttr($query, $value, $data) - { - if ($value) { - $query->where("head_coach", $value); - } - } - - /** - * 搜索器:场地管理班级类型 - * @param $value - * @param $data - */ - public function searchClassTypeAttr($query, $value, $data) - { - if ($value) { - $query->where("class_type", $value); - } - } - - /** - * 搜索器:场地管理助教 - * @param $value - * @param $data - */ - public function searchAssistantCoachAttr($query, $value, $data) - { - if ($value) { - $query->where("assistant_coach", $value); - } - } - - /** - * 搜索器:场地管理创建时间 - * @param $value - * @param $data - */ - public function searchCreatedAtAttr($query, $value, $data) - { - if ($value) { - $query->where("created_at", $value); - } - } - - /** - * 搜索器:场地管理班级状态 - * @param $value - * @param $data - */ - public function searchStatusAttr($query, $value, $data) - { - if ($value) { - $query->where("status", $value); - } - } - - public function campus(){ - return $this->hasOne(Campus::class, 'id', 'campus_id')->joinType('left')->withField('campus_name,id')->bind(['campus_id_name'=>'campus_name']); - } - - public function personnel(){ - return $this->hasOne(Personnel::class, 'id', 'head_coach')->joinType('left')->withField('name,id')->bind(['head_coach_name'=>'name']); - } - -} diff --git a/niucloud/app/model/course_schedule/CourseSchedule.php b/niucloud/app/model/course_schedule/CourseSchedule.php index b872e72d..0adf3eb0 100644 --- a/niucloud/app/model/course_schedule/CourseSchedule.php +++ b/niucloud/app/model/course_schedule/CourseSchedule.php @@ -50,141 +50,6 @@ class CourseSchedule extends BaseModel */ protected $defaultSoftDelete = 0; - /** - * 搜索器:课程安排课程安排编号 - * @param $value - * @param $data - */ - public function searchIdAttr($query, $value, $data) - { - if ($value) { - $query->where("id", $value); - } - } - - /** - * 搜索器:课程安排校区ID - * @param $value - * @param $data - */ - public function searchCampusIdAttr($query, $value, $data) - { - if ($value) { - $query->where("campus_id", $value); - } - } - - /** - * 搜索器:课程安排场地ID - * @param $value - * @param $data - */ - public function searchVenueIdAttr($query, $value, $data) - { - if ($value) { - $query->where("venue_id", $value); - } - } - - /** - * 搜索器:课程安排上课日期 - * @param $value - * @param $data - */ - public function searchCourseDateAttr($query, $value, $data) - { - if ($value) { - $query->where("course_date", $value); - } - } - - /** - * 搜索器:课程安排上课时段 - * @param $value - * @param $data - */ - public function searchTimeSlotAttr($query, $value, $data) - { - if ($value) { - $query->where("time_slot", $value); - } - } - - /** - * 搜索器:课程安排课程ID - * @param $value - * @param $data - */ - public function searchCourseIdAttr($query, $value, $data) - { - if ($value) { - $query->where("course_id", $value); - } - } - - /** - * 搜索器:课程安排上课教练ID - * @param $value - * @param $data - */ - public function searchCoachIdAttr($query, $value, $data) - { - if ($value) { - $query->where("coach_id", $value); - } - } - - /** - * 搜索器:课程安排参与人员列表 - * @param $value - * @param $data - */ - public function searchParticipantsAttr($query, $value, $data) - { - if ($value) { - $query->where("participants", $value); - } - } - - /** - * 搜索器:课程安排上课学生列表 - * @param $value - * @param $data - */ - public function searchStudentIdsAttr($query, $value, $data) - { - if ($value) { - $query->where("student_ids", $value); - } - } - - /** - * 搜索器:课程安排根据场地容量判断的可安排学员位置数量 - * @param $value - * @param $data - */ - public function searchAvailableCapacityAttr($query, $value, $data) - { - if ($value) { - $query->where("available_capacity", $value); - } - } - - /** - * 搜索器:课程安排课程状态: - * @param $value - * @param $data - */ - public function searchStatusAttr($query, $value, $data) - { - if ($value) { - $query->where("status", $value); - } - } - - - - } diff --git a/niucloud/app/model/rel/ClassPersonnelRel.php b/niucloud/app/model/rel/ClassPersonnelRel.php new file mode 100644 index 00000000..82e0b8bb --- /dev/null +++ b/niucloud/app/model/rel/ClassPersonnelRel.php @@ -0,0 +1,32 @@ +hasOne(Personnel::class, 'id', 'personnel_id'); + } + + public function student() + { + return $this->hasOne(Student::class, 'id', 'source_id'); + } +} \ No newline at end of file diff --git a/niucloud/app/service/admin/classroom/ClassroomService.php b/niucloud/app/service/admin/classroom/ClassroomService.php index e3822fc5..e8530d7e 100644 --- a/niucloud/app/service/admin/classroom/ClassroomService.php +++ b/niucloud/app/service/admin/classroom/ClassroomService.php @@ -11,10 +11,12 @@ namespace app\service\admin\classroom; -use app\model\classroom\Classroom; +use app\model\class_grade\ClassGrade; use app\model\campus\Campus; +use app\model\course_schedule\CourseSchedule; use app\model\personnel\Personnel; +use app\model\rel\ClassPersonnelRel; use core\base\BaseAdminService; @@ -28,7 +30,7 @@ class ClassroomService extends BaseAdminService public function __construct() { parent::__construct(); - $this->model = new Classroom(); + $this->model = new ClassGrade(); } /** @@ -41,7 +43,7 @@ class ClassroomService extends BaseAdminService $field = 'id,campus_id,campus_name,class_name,head_coach,age_group,class_type,assistant_coach,created_at,updated_at,deleted_at,status,sort_order,remarks'; $order = 'id desc'; - $search_model = $this->model->withSearch(["campus_id","class_name","head_coach","class_type","assistant_coach","created_at","status"], $where)->with(['campus','personnel','personnel'])->field($field)->order($order); + $search_model = $this->model->withSearch(["campus_id", "class_name", "head_coach", "class_type", "assistant_coach", "created_at", "status"], $where)->with(['campus', 'personnel', 'personnel'])->field($field)->order($order); $list = $this->pageQuery($search_model); return $list; } @@ -55,8 +57,8 @@ class ClassroomService extends BaseAdminService { $field = 'id,campus_id,campus_name,class_name,head_coach,age_group,class_type,assistant_coach,created_at,updated_at,deleted_at,status,sort_order,remarks'; - $info = $this->model->field($field)->where([['id', "=", $id]])->with(['campus','personnel','personnel'])->findOrEmpty()->toArray(); - $info['status'] = strval($info['status']); + $info = $this->model->field($field)->where([['id', "=", $id]])->with(['campus', 'personnel', 'personnel'])->findOrEmpty()->toArray(); + $info['status'] = strval($info['status']); return $info; } @@ -97,22 +99,40 @@ class ClassroomService extends BaseAdminService return $res; } - - public function getCampusAll(){ - $campusModel = new Campus(); - return $campusModel->select()->toArray(); + + public function getCampusAll() + { + $campusModel = new Campus(); + return $campusModel->select()->toArray(); } - public function getPersonnelAll(){ - $personnelModel = new Personnel(); - return $personnelModel->select()->toArray(); + public function getPersonnelAll() + { + $personnelModel = new Personnel(); + return $personnelModel->select()->toArray(); } public function classroom_all() { - $data = $this->model->where('status', 1)->order('sort_order desc')->select()->toArray(); - return $data; + $data = $this->model->where('status', 1)->order('sort_order desc')->select()->toArray(); + return $data; } + public function getClassroompeople($class_id) + { + $listmodel = new ClassPersonnelRel(); + return $listmodel->with(['student','personnel'])->where('class_id', $class_id)->select()->toArray(); + } + /** + * 获取班级当前时段人员安排情况 + */ + public function getClassroompeopleCount($venue_id,$where = []) + { + $listmodel = new CourseSchedule(); + return $listmodel->where('venue_id', $venue_id) + ->where($where) + ->select() + ->toArray(); + } }