From cd0f73e3061f32f706996b9fec0084f0c1f9c2ba Mon Sep 17 00:00:00 2001
From: wangzeyan <258785420@qq.com>
Date: Thu, 29 May 2025 13:27:26 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
admin/src/app/lang/zh-cn/course.course.json | 5 +--
.../views/course/components/course-edit.vue | 17 +++++++++
.../components/course-schedule-edit.vue | 9 +++--
admin/src/app/views/timetables/timetables.vue | 35 ++++++++++++++-----
.../app/adminapi/controller/course/Course.php | 2 ++
.../course_schedule/CourseScheduleService.php | 2 +-
.../PersonCourseScheduleService.php | 4 +--
node_modules/.yarn-integrity | 10 ++++++
yarn.lock | 4 +++
9 files changed, 70 insertions(+), 18 deletions(-)
create mode 100644 node_modules/.yarn-integrity
create mode 100644 yarn.lock
diff --git a/admin/src/app/lang/zh-cn/course.course.json b/admin/src/app/lang/zh-cn/course.course.json
index ddb6eb64..036d46bf 100644
--- a/admin/src/app/lang/zh-cn/course.course.json
+++ b/admin/src/app/lang/zh-cn/course.course.json
@@ -23,6 +23,7 @@
"updateCourse": "编辑课程",
"courseDeleteTips": "确定要删除该数据吗?",
"startDate": "请选择开始时间",
- "endDate": "请选择结束时间"
-
+ "endDate": "请选择结束时间",
+ "giftSessionCount": "赠送课时",
+ "giftSessionCountPlaceholder": "请输入赠送课时"
}
diff --git a/admin/src/app/views/course/components/course-edit.vue b/admin/src/app/views/course/components/course-edit.vue
index 9221ca72..6bdc07c0 100644
--- a/admin/src/app/views/course/components/course-edit.vue
+++ b/admin/src/app/views/course/components/course-edit.vue
@@ -55,6 +55,15 @@
/>
+
+
+
+
= reactive({ ...initialFormData })
@@ -166,6 +176,13 @@ const formRules = computed(() => {
trigger: 'blur',
},
],
+ gift_session_count: [
+ {
+ required: false,
+ message: t('giftSessionCountPlaceholder'),
+ trigger: 'blur',
+ },
+ ],
single_session_count: [
{
required: true,
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 4b106f05..95340eed 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
@@ -504,13 +504,12 @@ const numberVerify = (rule: any, value: any, callback: any) => {
// 禁用非当天日期
const disabledDate = (time: Date) => {
+ // 只允许选择明天及以后
const today = new Date()
today.setHours(0, 0, 0, 0)
- const currentDate = new Date(time)
- currentDate.setHours(0, 0, 0, 0)
-
- // 只允许选择今天及以后
- return today.getTime() > currentDate.getTime()
+ const tomorrow = new Date(today)
+ tomorrow.setDate(tomorrow.getDate() + 1)
+ return time.getTime() < tomorrow.getTime()
}
defineExpose({
diff --git a/admin/src/app/views/timetables/timetables.vue b/admin/src/app/views/timetables/timetables.vue
index 748d860a..d0b14cb7 100644
--- a/admin/src/app/views/timetables/timetables.vue
+++ b/admin/src/app/views/timetables/timetables.vue
@@ -468,25 +468,44 @@ const searchPerson = async () => {
}
try {
+ // 保存当前已选学员ID列表和完整信息列表
+ const currentSelectedIds = [...selectedStudentIds.value]
+ const currentSelectedStudents = [...selectedStudents.value]
+
+ // 保存之前的试课人员列表
+ const previousTrialStudents = [...trialStudents.value]
+
const response = await getResourceByNameOrPhone({
name: searchKeyword.value.trim()
})
if (response.data) {
- // 保存当前已选学员ID列表
- const currentSelectedIds = [...selectedStudentIds.value]
+ // 合并新搜索结果和之前的试课人员列表,避免覆盖
+ const newTrialStudents = response.data || []
- trialStudents.value = response.data || []
- students.value = trialStudents.value
+ // 使用Map去重,保留最新的数据
+ const studentMap = new Map()
- // 只有当学员的checked属性明确为true时才添加到已选列表中
- // 不再默认选中第一个学员
- const checkedStudents = students.value.filter(student => student.checked === true)
+ // 先添加之前的数据
+ previousTrialStudents.forEach(student => {
+ studentMap.set(student.id, student)
+ })
- // 重置选中列表,使用之前保存的选择
+ // 再添加新数据,会自动覆盖重复的id
+ newTrialStudents.forEach(student => {
+ studentMap.set(student.id, student)
+ })
+
+ // 转换回数组
+ trialStudents.value = Array.from(studentMap.values())
+ students.value = trialStudents.value
+
+ // 恢复已选中的项
selectedStudentIds.value = currentSelectedIds
+ selectedStudents.value = currentSelectedStudents
// 添加有checked标记但未选中的项
+ const checkedStudents = students.value.filter(student => student.checked === true)
if (checkedStudents.length > 0) {
checkedStudents.forEach(student => {
if (!selectedStudentIds.value.includes(student.id)) {
diff --git a/niucloud/app/adminapi/controller/course/Course.php b/niucloud/app/adminapi/controller/course/Course.php
index f3afae36..338da54c 100644
--- a/niucloud/app/adminapi/controller/course/Course.php
+++ b/niucloud/app/adminapi/controller/course/Course.php
@@ -68,6 +68,7 @@ class Course extends BaseAdminController
["internal_reminder", 0],
["customer_reminder", 0],
["remarks", ""],
+ ["gift_session_count ", ""],
]);
$this->validate($data, 'app\validate\course\Course.add');
@@ -93,6 +94,7 @@ class Course extends BaseAdminController
["customer_reminder", 0],
["remarks", ""],
["contract_id",""],
+ ["gift_session_count ",""],
]);
$this->validate($data, 'app\validate\course\Course.edit');
(new CourseService())->edit($id, $data);
diff --git a/niucloud/app/service/admin/course_schedule/CourseScheduleService.php b/niucloud/app/service/admin/course_schedule/CourseScheduleService.php
index 8544101f..701f9331 100644
--- a/niucloud/app/service/admin/course_schedule/CourseScheduleService.php
+++ b/niucloud/app/service/admin/course_schedule/CourseScheduleService.php
@@ -109,7 +109,7 @@ class CourseScheduleService extends BaseAdminService
'time_slot' => $data['time_slot'],
'course_id' => $data['course_id'],
'coach_id' => $data['coach_id'],
- 'auto_schedule' => $data['is_system_add']
+ 'auto_schedule' => $data['auto_schedule']
];
$status = $this->model->where([
['course_date', '=', $data['course_date']],
diff --git a/niucloud/app/service/admin/person_course_schedule/PersonCourseScheduleService.php b/niucloud/app/service/admin/person_course_schedule/PersonCourseScheduleService.php
index d61673ab..07207431 100644
--- a/niucloud/app/service/admin/person_course_schedule/PersonCourseScheduleService.php
+++ b/niucloud/app/service/admin/person_course_schedule/PersonCourseScheduleService.php
@@ -40,7 +40,7 @@ class PersonCourseScheduleService extends BaseAdminService
*/
public function getPage(array $where = [])
{
- $field = 'id,person_id,person_type,schedule_id,course_date,time_slot,created_at,updated_at,deleted_at';
+ $field = 'id,person_id,person_type,schedule_id,course_date,time_slot,created_at,updated_at';
$order = 'id desc';
$search_model = $this->model->withSearch(["id", "person_id", "person_type", "schedule_id", "course_date", "time_slot"], $where)->field($field)->order($order);
@@ -55,7 +55,7 @@ class PersonCourseScheduleService extends BaseAdminService
*/
public function getInfo(int $id)
{
- $field = 'id,person_id,person_type,schedule_id,course_date,time_slot,created_at,updated_at,deleted_at';
+ $field = 'id,person_id,person_type,schedule_id,course_date,time_slot,created_at,updated_at';
$info = $this->model->field($field)->where([['id', "=", $id]])->findOrEmpty()->toArray();
return $info;
diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity
new file mode 100644
index 00000000..56c28ed9
--- /dev/null
+++ b/node_modules/.yarn-integrity
@@ -0,0 +1,10 @@
+{
+ "systemParams": "win32-x64-108",
+ "modulesFolders": [],
+ "flags": [],
+ "linkedModules": [],
+ "topLevelPatterns": [],
+ "lockfileEntries": {},
+ "files": [],
+ "artifacts": {}
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 00000000..fb57ccd1
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,4 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+