From 2976c07084e59d50160a413d83c8c05e8c87c2d0 Mon Sep 17 00:00:00 2001 From: liutong <836164388@qq.com> Date: Tue, 27 May 2025 19:19:02 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat(model):=20=E6=96=B0=E5=A2=9E=E8=81=8A?= =?UTF-8?q?=E5=A4=A9=E5=A5=BD=E5=8F=8B=E5=92=8C=E8=81=8A=E5=A4=A9=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 ChatFriends 模型,用于员工与会员聊天好友关系 - 添加 ChatMessages 模型,用于员工与会员聊天记录 - 实现了软删除、搜索器等功能 --- .../app/model/chat_friends/ChatFriends.php | 91 +++++++++++++++++++ .../app/model/chat_messages/ChatMessages.php | 50 ++++++++++ 2 files changed, 141 insertions(+) create mode 100644 niucloud/app/model/chat_friends/ChatFriends.php create mode 100644 niucloud/app/model/chat_messages/ChatMessages.php diff --git a/niucloud/app/model/chat_friends/ChatFriends.php b/niucloud/app/model/chat_friends/ChatFriends.php new file mode 100644 index 00000000..bb68bf3e --- /dev/null +++ b/niucloud/app/model/chat_friends/ChatFriends.php @@ -0,0 +1,91 @@ +where("personnel_id", $value); + } + } + + /** + * 搜索器:学生资源表id + * @param $value + * @param $data + */ + public function searchCustomerResourcesIdAttr($query, $value, $data) + { + if ($value) { + $query->where("customer_resources_id", $value); + } + } + + + public function campus(){ + return $this->hasOne(CustomerResources::class, 'id', 'customer_resources_id')->joinType('left')->withField('name,id')->bind(['customer_resources_id'=>'name']); + } + + public function personnel(){ + return $this->hasOne(Personnel::class, 'id', 'personnel_id')->joinType('left')->withField('name,id')->bind(['personnel_id_name'=>'name']); + } + +} diff --git a/niucloud/app/model/chat_messages/ChatMessages.php b/niucloud/app/model/chat_messages/ChatMessages.php new file mode 100644 index 00000000..aaf46334 --- /dev/null +++ b/niucloud/app/model/chat_messages/ChatMessages.php @@ -0,0 +1,50 @@ + Date: Tue, 27 May 2025 20:08:03 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=92=E8=AF=BE?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/app/api/course.ts | 3 + admin/src/app/api/course_schedule.ts | 2 +- admin/src/app/api/customer_resources.ts | 4 + admin/src/app/lang/zh-cn/course.course.json | 10 +- .../course_schedule.course_schedule.json | 42 +- .../components/course-schedule-edit.vue | 390 ++++++++++++++---- .../views/course_schedule/course_schedule.vue | 184 ++++++--- .../timetables/components/schedule-add.vue | 288 ++++++++----- .../timetables/components/seat-selector.vue | 315 +++++++++++--- admin/src/app/views/timetables/timetables.vue | 23 +- admin/src/utils/timeslots.ts | 113 +++++ .../app/adminapi/controller/course/Course.php | 93 +++-- .../course_schedule/CourseSchedule.php | 101 ++--- .../customer_resources/CustomerResources.php | 195 +++++---- niucloud/app/adminapi/route/classroom.php | 2 +- niucloud/app/adminapi/route/course.php | 2 + .../app/adminapi/route/course_schedule.php | 2 + .../app/adminapi/route/customer_resources.php | 3 + .../model/course_schedule/CourseSchedule.php | 63 ++- niucloud/app/model/venue/Venue.php | 2 +- .../service/admin/course/CourseService.php | 10 +- .../course_schedule/CourseScheduleService.php | 172 ++++---- .../CustomerResourcesService.php | 139 ++++--- .../app/service/admin/venue/VenueService.php | 99 +++-- .../course_schedule/CourseSchedule.php | 6 +- 25 files changed, 1583 insertions(+), 680 deletions(-) create mode 100644 admin/src/utils/timeslots.ts diff --git a/admin/src/app/api/course.ts b/admin/src/app/api/course.ts index 09938cfd..d3bfcf95 100644 --- a/admin/src/app/api/course.ts +++ b/admin/src/app/api/course.ts @@ -56,4 +56,7 @@ export function deleteCourse(id: number) { }) } +export function getAllCourseList(params: Record) { + return request.get(`course/getAllCourseList`, { params }) +} // USER_CODE_END -- course diff --git a/admin/src/app/api/course_schedule.ts b/admin/src/app/api/course_schedule.ts index fc141be0..b9ab655b 100644 --- a/admin/src/app/api/course_schedule.ts +++ b/admin/src/app/api/course_schedule.ts @@ -62,7 +62,7 @@ export function deleteCourseSchedule(id: number) { * @returns */ export function getTimetables(params: Record) { - return request.get(`course_schedule/course_schedule/timetables`, { params }) + return request.get(`course_schedule/timetables`, { params }) } // USER_CODE_END -- course_schedule diff --git a/admin/src/app/api/customer_resources.ts b/admin/src/app/api/customer_resources.ts index bd5cba65..e43e8779 100644 --- a/admin/src/app/api/customer_resources.ts +++ b/admin/src/app/api/customer_resources.ts @@ -72,3 +72,7 @@ export function fpEdit(params: Record) { showSuccessMessage: true, }) } + +export function getWithCoachList(params: Record) { + return request.get('customer_resources/coach_person', { params }) +} diff --git a/admin/src/app/lang/zh-cn/course.course.json b/admin/src/app/lang/zh-cn/course.course.json index ee23f55d..1e9f94ba 100644 --- a/admin/src/app/lang/zh-cn/course.course.json +++ b/admin/src/app/lang/zh-cn/course.course.json @@ -23,5 +23,13 @@ "updateCourse": "编辑课程", "courseDeleteTips": "确定要删除该数据吗?", "startDate": "请选择开始时间", - "endDate": "请选择结束时间" + "endDate": "请选择结束时间", + "pending": "待开始", + "upcoming": "即将开始", + "ongoing": "进行中", + "completed": "已结束", + "autoSchedule": "自动排课", + "autoSchedulePlaceholder": "请选择是否自动排课", + "yes": "是", + "no": "否" } diff --git a/admin/src/app/lang/zh-cn/course_schedule.course_schedule.json b/admin/src/app/lang/zh-cn/course_schedule.course_schedule.json index 6b02e8a0..383fadd2 100644 --- a/admin/src/app/lang/zh-cn/course_schedule.course_schedule.json +++ b/admin/src/app/lang/zh-cn/course_schedule.course_schedule.json @@ -1,29 +1,37 @@ { "id": "课程安排编号", "idPlaceholder": "请输入课程安排编号", - "campusId": "校区ID", - "campusIdPlaceholder": "请输入校区ID", - "venueId": "场地ID", - "venueIdPlaceholder": "请输入场地ID", + "campusId": "校区", + "campusIdPlaceholder": "请选择校区", + "venueId": "场地", + "venueIdPlaceholder": "请选择场地", "courseDate": "上课日期", - "courseDatePlaceholder": "请输入上课日期", + "courseDatePlaceholder": "请选择上课日期", "timeSlot": "上课时段", - "timeSlotPlaceholder": "请输入上课时段", - "courseId": "课程ID", - "courseIdPlaceholder": "请输入课程ID", - "coachId": "上课教练ID", - "coachIdPlaceholder": "请输入上课教练ID", - "participants": "参与人员列表", - "participantsPlaceholder": "请输入参与人员列表", - "studentIds": "上课学生列表", - "studentIdsPlaceholder": "请输入上课学生列表", + "timeSlotPlaceholder": "请选择上课时段", + "courseId": "课程", + "courseIdPlaceholder": "请选择课程", + "coachId": "上课教练", + "coachIdPlaceholder": "请选择上课教练", + "participants": "参与人员", + "participantsPlaceholder": "请选择参与人员", + "studentIds": "参与学生", + "studentIdsPlaceholder": "请选择参与学生", "availableCapacity": "根据场地容量判断的可安排学员位置数量", "availableCapacityPlaceholder": "请输入根据场地容量判断的可安排学员位置数量", - "status": "课程状态:", - "statusPlaceholder": "请输入课程状态:", + "status": "课程状态", + "statusPlaceholder": "请选择课程状态", "addCourseSchedule": "添加课程安排", "updateCourseSchedule": "编辑课程安排", "courseScheduleDeleteTips": "确定要删除该数据吗?", "startDate": "请选择开始时间", - "endDate": "请选择结束时间" + "endDate": "请选择结束时间", + "pending": "待开始", + "upcoming": "即将开始", + "ongoing": "进行中", + "completed": "已结束", + "autoSchedule": "自动排课", + "autoSchedulePlaceholder": "请选择是否自动排课", + "yes": "是", + "no": "否" } diff --git a/admin/src/app/views/course_schedule/components/course-schedule-edit.vue b/admin/src/app/views/course_schedule/components/course-schedule-edit.vue index 8c7d63d8..4b106f05 100644 --- a/admin/src/app/views/course_schedule/components/course-schedule-edit.vue +++ b/admin/src/app/views/course_schedule/components/course-schedule-edit.vue @@ -15,93 +15,107 @@ v-loading="loading" > - + > + + - + > + + - - + style="width: 100%" + allow-create + filterable + > + + - + > + + - - - - - - - - - - - - - + > + + - - + + + {{ t('yes') }} + {{ t('no') }} + @@ -120,7 +134,7 @@ - + \ No newline at end of file diff --git a/admin/src/app/views/timetables/components/seat-selector.vue b/admin/src/app/views/timetables/components/seat-selector.vue index 6138f573..807367d0 100644 --- a/admin/src/app/views/timetables/components/seat-selector.vue +++ b/admin/src/app/views/timetables/components/seat-selector.vue @@ -1,20 +1,30 @@