diff --git a/src/views/course-management/CourseList.vue b/src/views/course-management/CourseList.vue index af4728a..7c2e91d 100644 --- a/src/views/course-management/CourseList.vue +++ b/src/views/course-management/CourseList.vue @@ -8,7 +8,7 @@ import Course from "@views/course-management/Course.vue"; const router = useRouter(); const store = useStore(); -const token = store.getters['authentication/token'] +const token = store.getters['authentication/token']; const searchTitle = ref(''); const searchAuthor = ref(''); @@ -24,6 +24,7 @@ const coursesCount = ref(0); const firstTimeLoad = ref(true); const selections = ref([]); + const loadCourses = async (forceReload = false) => { if (forceReload) { firstTimeLoad.value = true; @@ -35,26 +36,46 @@ const loadCourses = async (forceReload = false) => { token: token, start: allCoursesData.value.length, end: allCoursesData.value.length + pageSize.value * 2 - } + }; try { - const response = await axios.get('/api/courses', { params }) - const data = response.data + const response = await axios.get('/api/courses', { params }); + const data = response.data; coursesCount.value = data.courseCount; allCoursesData.value.push(...data.courseList); } catch (e) { - console.log(e) + console.log(e); } firstTimeLoad.value = false; } - coursesData.value = allCoursesData.value.slice((currentPage.value - 1) * pageSize.value, currentPage.value * pageSize.value) + coursesData.value = allCoursesData.value.slice((currentPage.value - 1) * pageSize.value, currentPage.value * pageSize.value); }; onMounted(() => { loadCourses(); -}) +}); -const handleSearch = () => { - // 搜索逻辑 +const handleSearch = async () => { + try { + const response = await axios.get('/api/courses/search', { + params: { + token: token, + title: searchTitle.value || '', // 如果为空则传递空字符串 + author: searchAuthor.value || '', + description: searchDescription.value || '', + sortOrder: sortOrder.value || '', + start: 0, + end: pageSize.value + } + }); + const data = response.data; + coursesCount.value = data.courseCount; + allCoursesData.value = data.courseList; + coursesData.value = allCoursesData.value.slice(0, pageSize.value); + currentPage.value = 1; + firstTimeLoad.value = false; + } catch (e) { + console.error(e); + } }; const handleReset = () => { @@ -66,8 +87,8 @@ const handleReset = () => { const handleEditButton = () => { selections.value.forEach(selection => { - router.push({ name: 'Course', params: { id: selection.id } }) - }) + router.push({ name: 'Course', params: { id: selection.id } }); + }); }; const handleDeleteButton = async () => { @@ -90,8 +111,8 @@ const handleDeleteButton = async () => { }; const handleSelectionChange = (newSelections) => { - selections.value = newSelections -} + selections.value = newSelections; +}; const handleEditInTable = (index) => { router.push({ name: 'Course', query: { mode: 'edit', id: coursesData.value[index].id } }); @@ -99,14 +120,14 @@ const handleEditInTable = (index) => { const handleDeleteInTable = async (index) => { try { - await axios.delete(`/api/courses/${coursesData.value[index].id}`, { params: { token: token } }) + await axios.delete(`/api/courses/${coursesData.value[index].id}`, { params: { token: token } }); coursesData.value.splice(index, 1); allCoursesData.value.splice(index, 1); coursesCount.value--; await loadCourses(true); // 强制重新加载课程数据 } catch (e) { - ElMessage.error('删除失败') - console.error(e) + ElMessage.error('删除失败'); + console.error(e); } }; @@ -140,7 +161,6 @@ const handleDeleteInTable = async (index) => { 新增 修改 删除 - 导出