diff --git a/gym-manage-uniapp/api/groupCourse.js b/gym-manage-uniapp/api/groupCourse.js index 8fb0d6e..d4f2b8d 100644 --- a/gym-manage-uniapp/api/groupCourse.js +++ b/gym-manage-uniapp/api/groupCourse.js @@ -45,6 +45,40 @@ export function getTypeLabels(typeId, options = { cache: true, cacheTime: 5 * 60 return request.get(`/groupCourse/types/${typeId}/labels`, {}, options) } +export function searchGroupCourse(params = {}, options = {}) { + const { + courseName, + courseType, + startDate, + endDate, + timePeriod, + priceSort, + remainingMost, + page = 0, + size = 10 + } = params + + const requestBody = { page, size } + + if (courseName) requestBody.courseName = courseName + if (courseType) requestBody.courseType = courseType + if (startDate) requestBody.startDate = formatDateTime(startDate) + if (endDate) requestBody.endDate = formatDateTime(endDate, true) + if (timePeriod) requestBody.timePeriod = timePeriod + if (priceSort) requestBody.priceSort = priceSort + if (remainingMost !== undefined) requestBody.remainingMost = remainingMost + + return request.post('/groupCourse/search', requestBody, options) +} + +function formatDateTime(dateStr, isEnd = false) { + if (!dateStr) return dateStr + if (dateStr.includes('T')) return dateStr + return isEnd + ? `${dateStr}T23:59:59` + : `${dateStr}T00:00:00` +} + export function bookGroupCourse(params) { return request.post('/groupCourse/book', params) } @@ -60,6 +94,7 @@ export function getMemberBookings(memberId, options = {}) { export default { getGroupCourseList, getGroupCoursePage, + searchGroupCourse, getGroupCourseById, getGroupCourseDetail, createGroupCourse, diff --git a/gym-manage-uniapp/components/groupCourse/FilterSection.vue b/gym-manage-uniapp/components/groupCourse/FilterSection.vue index d97595d..c81cbf6 100644 --- a/gym-manage-uniapp/components/groupCourse/FilterSection.vue +++ b/gym-manage-uniapp/components/groupCourse/FilterSection.vue @@ -1,5 +1,20 @@