From 6fb9aa4cce9ee0a833c1b89f4d964c13c14a5550 Mon Sep 17 00:00:00 2001 From: "1213317725@qq.com" <1213317725@qq.com> Date: Thu, 12 Jun 2025 13:02:39 +0800 Subject: [PATCH] 1 --- admin/src/app/api/assignment.ts | 62 ++++ .../app/lang/zh-cn/assignment.assignment.json | 23 ++ admin/src/app/views/assignment/assignment.vue | 274 +++++++++++++++++ .../assignment/components/assignment-edit.vue | 291 ++++++++++++++++++ niucloud/app/.idea/.gitignore | 8 + niucloud/app/.idea/app.iml | 8 + niucloud/app/.idea/modules.xml | 8 + niucloud/app/.idea/php.xml | 22 ++ niucloud/app/.idea/vcs.xml | 6 + .../controller/assignment/Assignment.php | 119 +++++++ niucloud/app/adminapi/route/assignment.php | 46 +++ niucloud/app/model/assignment/Assignment.php | 101 +++++- .../admin/assignment/AssignmentService.php | 123 ++++++++ .../app/validate/assignment/Assignment.php | 43 +++ 14 files changed, 1124 insertions(+), 10 deletions(-) create mode 100644 admin/src/app/api/assignment.ts create mode 100644 admin/src/app/lang/zh-cn/assignment.assignment.json create mode 100644 admin/src/app/views/assignment/assignment.vue create mode 100644 admin/src/app/views/assignment/components/assignment-edit.vue create mode 100644 niucloud/app/.idea/.gitignore create mode 100644 niucloud/app/.idea/app.iml create mode 100644 niucloud/app/.idea/modules.xml create mode 100644 niucloud/app/.idea/php.xml create mode 100644 niucloud/app/.idea/vcs.xml create mode 100644 niucloud/app/adminapi/controller/assignment/Assignment.php create mode 100644 niucloud/app/adminapi/route/assignment.php create mode 100644 niucloud/app/service/admin/assignment/AssignmentService.php create mode 100644 niucloud/app/validate/assignment/Assignment.php diff --git a/admin/src/app/api/assignment.ts b/admin/src/app/api/assignment.ts new file mode 100644 index 00000000..85d478cf --- /dev/null +++ b/admin/src/app/api/assignment.ts @@ -0,0 +1,62 @@ +import request from '@/utils/request' + + + +// USER_CODE_BEGIN -- assignment +/** + * 获取作业管理列表 + * @param params + * @returns + */ +export function getAssignmentList(params: Record) { + return request.get(`assignment/assignment`, {params}) +} + +/** + * 获取作业管理详情 + * @param id 作业管理id + * @returns + */ +export function getAssignmentInfo(id: number) { + return request.get(`assignment/assignment/${id}`); +} + +/** + * 添加作业管理 + * @param params + * @returns + */ +export function addAssignment(params: Record) { + return request.post('assignment/assignment', params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 编辑作业管理 + * @param id + * @param params + * @returns + */ +export function editAssignment(params: Record) { + return request.put(`assignment/assignment/${params.id}`, params, { showErrorMessage: true, showSuccessMessage: true }) +} + +/** + * 删除作业管理 + * @param id + * @returns + */ +export function deleteAssignment(id: number) { + return request.delete(`assignment/assignment/${id}`, { showErrorMessage: true, showSuccessMessage: true }) +} + +export function getWithClassGradeList(params: Record){ + return request.get('assignment/class_grade_all', {params}) +}export function getWithCourseList(params: Record){ + return request.get('assignment/course_all', {params}) +}export function getWithPersonnelList(params: Record){ + return request.get('assignment/personnel_all', {params}) +}export function getWithStudentList(params: Record){ + return request.get('assignment/student_all', {params}) +} + +// USER_CODE_END -- assignment diff --git a/admin/src/app/lang/zh-cn/assignment.assignment.json b/admin/src/app/lang/zh-cn/assignment.assignment.json new file mode 100644 index 00000000..a6d03ec6 --- /dev/null +++ b/admin/src/app/lang/zh-cn/assignment.assignment.json @@ -0,0 +1,23 @@ +{ + "classId":"班级", + "classIdPlaceholder":"全部", + "courseId":"课程", + "courseIdPlaceholder":"全部", + "personnelId":"老师", + "personnelIdPlaceholder":"全部", + "studentId":"学员", + "studentIdPlaceholder":"全部", + "description":"作业描述", + "descriptionPlaceholder":"请输入作业描述", + "contentType":"作业类型", + "contentTypePlaceholder":"请输入作业类型", + "contentText":"学生提交的作业内容", + "contentTextPlaceholder":"请输入学生提交的作业内容", + "status":"状态", + "statusPlaceholder":"请输入状态", + "addAssignment":"添加作业管理", + "updateAssignment":"编辑作业管理", + "assignmentDeleteTips":"确定要删除该数据吗?", + "startDate":"请选择开始时间", + "endDate":"请选择结束时间" +} \ No newline at end of file diff --git a/admin/src/app/views/assignment/assignment.vue b/admin/src/app/views/assignment/assignment.vue new file mode 100644 index 00000000..e8f83100 --- /dev/null +++ b/admin/src/app/views/assignment/assignment.vue @@ -0,0 +1,274 @@ + + + + + diff --git a/admin/src/app/views/assignment/components/assignment-edit.vue b/admin/src/app/views/assignment/components/assignment-edit.vue new file mode 100644 index 00000000..a652f783 --- /dev/null +++ b/admin/src/app/views/assignment/components/assignment-edit.vue @@ -0,0 +1,291 @@ + + + + + + diff --git a/niucloud/app/.idea/.gitignore b/niucloud/app/.idea/.gitignore new file mode 100644 index 00000000..35410cac --- /dev/null +++ b/niucloud/app/.idea/.gitignore @@ -0,0 +1,8 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/niucloud/app/.idea/app.iml b/niucloud/app/.idea/app.iml new file mode 100644 index 00000000..c956989b --- /dev/null +++ b/niucloud/app/.idea/app.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/niucloud/app/.idea/modules.xml b/niucloud/app/.idea/modules.xml new file mode 100644 index 00000000..8c4259da --- /dev/null +++ b/niucloud/app/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/niucloud/app/.idea/php.xml b/niucloud/app/.idea/php.xml new file mode 100644 index 00000000..29059d00 --- /dev/null +++ b/niucloud/app/.idea/php.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/niucloud/app/.idea/vcs.xml b/niucloud/app/.idea/vcs.xml new file mode 100644 index 00000000..b2bdec2d --- /dev/null +++ b/niucloud/app/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/niucloud/app/adminapi/controller/assignment/Assignment.php b/niucloud/app/adminapi/controller/assignment/Assignment.php new file mode 100644 index 00000000..4b980b29 --- /dev/null +++ b/niucloud/app/adminapi/controller/assignment/Assignment.php @@ -0,0 +1,119 @@ +request->params([ + ["class_id",""], + ["course_id",""], + ["personnel_id",""], + ["student_id",""], + ["status",""] + ]); + return success((new AssignmentService())->getPage($data)); + } + + /** + * 作业管理详情 + * @param int $id + * @return \think\Response + */ + public function info(int $id){ + return success((new AssignmentService())->getInfo($id)); + } + + /** + * 添加作业管理 + * @return \think\Response + */ + public function add(){ + $data = $this->request->params([ + ["class_id",0], + ["course_id",0], + ["personnel_id",0], + ["student_id",""], + ["description",""], + ["content_type",""], + ["content_text",""], + ["status",0], + + ]); + $this->validate($data, 'app\validate\assignment\Assignment.add'); + $id = (new AssignmentService())->add($data); + return success('ADD_SUCCESS', ['id' => $id]); + } + + /** + * 作业管理编辑 + * @param $id 作业管理id + * @return \think\Response + */ + public function edit(int $id){ + $data = $this->request->params([ + ["class_id",0], + ["course_id",0], + ["personnel_id",0], + ["student_id",""], + ["description",""], + ["content_type",""], + ["content_text",""], + ["status",0], + + ]); + $this->validate($data, 'app\validate\assignment\Assignment.edit'); + (new AssignmentService())->edit($id, $data); + return success('EDIT_SUCCESS'); + } + + /** + * 作业管理删除 + * @param $id 作业管理id + * @return \think\Response + */ + public function del(int $id){ + (new AssignmentService())->del($id); + return success('DELETE_SUCCESS'); + } + + + public function getClassGradeAll(){ + return success(( new AssignmentService())->getClassGradeAll()); + } + + public function getCourseAll(){ + return success(( new AssignmentService())->getCourseAll()); + } + + public function getPersonnelAll(){ + return success(( new AssignmentService())->getPersonnelAll()); + } + + public function getStudentAll(){ + return success(( new AssignmentService())->getStudentAll()); + } + +} diff --git a/niucloud/app/adminapi/route/assignment.php b/niucloud/app/adminapi/route/assignment.php new file mode 100644 index 00000000..448d3e6d --- /dev/null +++ b/niucloud/app/adminapi/route/assignment.php @@ -0,0 +1,46 @@ +middleware([ + AdminCheckToken::class, + AdminCheckRole::class, + AdminLog::class +]); +// USER_CODE_END -- assignment diff --git a/niucloud/app/model/assignment/Assignment.php b/niucloud/app/model/assignment/Assignment.php index facc8ebc..4a87708d 100644 --- a/niucloud/app/model/assignment/Assignment.php +++ b/niucloud/app/model/assignment/Assignment.php @@ -15,12 +15,19 @@ use core\base\BaseModel; use think\model\concern\SoftDelete; use think\model\relation\HasMany; use think\model\relation\HasOne; + +use app\model\class_grade\ClassGrade; + +use app\model\course\Course; + +use app\model\personnel\Personnel; + use app\model\student\Student; -use app\model\customer_resources\CustomerResources; + /** - * 校区模型 - * Class Campus - * @package app\model\campus + * 作业管理模型 + * Class Assignment + * @package app\model\assignment */ class Assignment extends BaseModel { @@ -46,16 +53,90 @@ class Assignment extends BaseModel protected $deleteTime = 'deleted_at'; /** - * 定义软删除字段的默认值. - * @var int - */ + * 定义软删除字段的默认值. + * @var int + */ protected $defaultSoftDelete = 0; + /** + * 搜索器:作业管理班级 + * @param $value + * @param $data + */ + public function searchClassIdAttr($query, $value, $data) + { + if ($value) { + $query->where("class_id", $value); + } + } + + /** + * 搜索器:作业管理课程 + * @param $value + * @param $data + */ + public function searchCourseIdAttr($query, $value, $data) + { + if ($value) { + $query->where("course_id", $value); + } + } + + /** + * 搜索器:作业管理老师 + * @param $value + * @param $data + */ + public function searchPersonnelIdAttr($query, $value, $data) + { + if ($value) { + $query->where("personnel_id", $value); + } + } + + /** + * 搜索器:作业管理学员 + * @param $value + * @param $data + */ + public function searchStudentIdAttr($query, $value, $data) + { + if ($value) { + $query->where("student_id", $value); + } + } + + /** + * 搜索器:作业管理状态 + * @param $value + * @param $data + */ + public function searchStatusAttr($query, $value, $data) + { + if ($value) { + $query->where("status", $value); + } + } + + + + + + public function classGrade(){ + return $this->hasOne(ClassGrade::class, 'id', 'class_id')->joinType('left')->withField('class_name,id')->bind(['class_id_name'=>'class_name']); + } - public function student() - { - return $this->hasOne(Student::class, 'id', 'student_id'); + public function course(){ + return $this->hasOne(Course::class, 'id', 'course_id')->joinType('left')->withField('course_name,id')->bind(['course_id_name'=>'course_name']); + } + + public function personnel(){ + return $this->hasOne(Personnel::class, 'id', 'personnel_id')->joinType('left')->withField('name,id')->bind(['personnel_id_name'=>'name']); + } + + public function student(){ + return $this->hasOne(Student::class, 'id', 'student_id')->joinType('left')->withField('name,id')->bind(['student_id_name'=>'name']); } } diff --git a/niucloud/app/service/admin/assignment/AssignmentService.php b/niucloud/app/service/admin/assignment/AssignmentService.php new file mode 100644 index 00000000..4ae7b748 --- /dev/null +++ b/niucloud/app/service/admin/assignment/AssignmentService.php @@ -0,0 +1,123 @@ +model = new Assignment(); + } + + /** + * 获取作业管理列表 + * @param array $where + * @return array + */ + public function getPage(array $where = []) + { + $field = 'id,type,class_id,course_id,personnel_id,student_id,description,content_type,content_text,status,create_time,update_time,deleted_at'; + $order = 'id desc'; + + $search_model = $this->model->withSearch(["class_id","course_id","personnel_id","student_id","status"], $where)->with(['classGrade','course','personnel','student'])->field($field)->order($order); + $list = $this->pageQuery($search_model); + return $list; + } + + /** + * 获取作业管理信息 + * @param int $id + * @return array + */ + public function getInfo(int $id) + { + $field = 'id,type,class_id,course_id,personnel_id,student_id,description,content_type,content_text,status,create_time,update_time,deleted_at'; + + $info = $this->model->field($field)->where([['id', "=", $id]])->with(['classGrade','course','personnel','student'])->findOrEmpty()->toArray(); + return $info; + } + + /** + * 添加作业管理 + * @param array $data + * @return mixed + */ + public function add(array $data) + { + $res = $this->model->create($data); + return $res->id; + + } + + /** + * 作业管理编辑 + * @param int $id + * @param array $data + * @return bool + */ + public function edit(int $id, array $data) + { + + $this->model->where([['id', '=', $id]])->update($data); + return true; + } + + /** + * 删除作业管理 + * @param int $id + * @return bool + */ + public function del(int $id) + { + $model = $this->model->where([['id', '=', $id]])->find(); + $res = $model->delete(); + return $res; + } + + + public function getClassGradeAll(){ + $classGradeModel = new ClassGrade(); + return $classGradeModel->select()->toArray(); + } + + public function getCourseAll(){ + $courseModel = new Course(); + return $courseModel->select()->toArray(); + } + + public function getPersonnelAll(){ + $personnelModel = new Personnel(); + return $personnelModel->select()->toArray(); + } + + public function getStudentAll(){ + $studentModel = new Student(); + return $studentModel->select()->toArray(); + } + + +} diff --git a/niucloud/app/validate/assignment/Assignment.php b/niucloud/app/validate/assignment/Assignment.php new file mode 100644 index 00000000..23e612ce --- /dev/null +++ b/niucloud/app/validate/assignment/Assignment.php @@ -0,0 +1,43 @@ + 'require', + 'course_id' => 'require', + 'personnel_id' => 'require', + 'student_id' => 'require', + 'content_type' => 'require', + ]; + + protected $message = [ + 'class_id.require' => ['common_validate.require', ['class_id']], + 'course_id.require' => ['common_validate.require', ['course_id']], + 'personnel_id.require' => ['common_validate.require', ['personnel_id']], + 'student_id.require' => ['common_validate.require', ['student_id']], + 'content_type.require' => ['common_validate.require', ['content_type']], + ]; + + protected $scene = [ + "add" => ['class_id', 'course_id', 'personnel_id', 'student_id', 'description', 'content_type', 'content_text', 'status'], + "edit" => ['class_id', 'course_id', 'personnel_id', 'student_id', 'description', 'content_type', 'content_text', 'status'] + ]; + +}