完善了搜索功能

This commit is contained in:
Chester.X 2024-07-05 14:02:48 +08:00
parent d92732dfe6
commit cc404e0ec4

View File

@ -8,7 +8,7 @@ import Course from "@views/course-management/Course.vue";
const router = useRouter(); const router = useRouter();
const store = useStore(); const store = useStore();
const token = store.getters['authentication/token'] const token = store.getters['authentication/token'];
const searchTitle = ref(''); const searchTitle = ref('');
const searchAuthor = ref(''); const searchAuthor = ref('');
@ -24,6 +24,7 @@ const coursesCount = ref(0);
const firstTimeLoad = ref(true); const firstTimeLoad = ref(true);
const selections = ref([]); const selections = ref([]);
const loadCourses = async (forceReload = false) => { const loadCourses = async (forceReload = false) => {
if (forceReload) { if (forceReload) {
firstTimeLoad.value = true; firstTimeLoad.value = true;
@ -35,26 +36,46 @@ const loadCourses = async (forceReload = false) => {
token: token, token: token,
start: allCoursesData.value.length, start: allCoursesData.value.length,
end: allCoursesData.value.length + pageSize.value * 2 end: allCoursesData.value.length + pageSize.value * 2
} };
try { try {
const response = await axios.get('/api/courses', { params }) const response = await axios.get('/api/courses', { params });
const data = response.data const data = response.data;
coursesCount.value = data.courseCount; coursesCount.value = data.courseCount;
allCoursesData.value.push(...data.courseList); allCoursesData.value.push(...data.courseList);
} catch (e) { } catch (e) {
console.log(e) console.log(e);
} }
firstTimeLoad.value = false; 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(() => { onMounted(() => {
loadCourses(); 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 = () => { const handleReset = () => {
@ -66,8 +87,8 @@ const handleReset = () => {
const handleEditButton = () => { const handleEditButton = () => {
selections.value.forEach(selection => { selections.value.forEach(selection => {
router.push({ name: 'Course', params: { id: selection.id } }) router.push({ name: 'Course', params: { id: selection.id } });
}) });
}; };
const handleDeleteButton = async () => { const handleDeleteButton = async () => {
@ -90,8 +111,8 @@ const handleDeleteButton = async () => {
}; };
const handleSelectionChange = (newSelections) => { const handleSelectionChange = (newSelections) => {
selections.value = newSelections selections.value = newSelections;
} };
const handleEditInTable = (index) => { const handleEditInTable = (index) => {
router.push({ name: 'Course', query: { mode: 'edit', id: coursesData.value[index].id } }); router.push({ name: 'Course', query: { mode: 'edit', id: coursesData.value[index].id } });
@ -99,14 +120,14 @@ const handleEditInTable = (index) => {
const handleDeleteInTable = async (index) => { const handleDeleteInTable = async (index) => {
try { 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); coursesData.value.splice(index, 1);
allCoursesData.value.splice(index, 1); allCoursesData.value.splice(index, 1);
coursesCount.value--; coursesCount.value--;
await loadCourses(true); // await loadCourses(true); //
} catch (e) { } catch (e) {
ElMessage.error('删除失败') ElMessage.error('删除失败');
console.error(e) console.error(e);
} }
}; };
</script> </script>
@ -140,7 +161,6 @@ const handleDeleteInTable = async (index) => {
<el-button type="success" @click="router.push('/course?mode=create')">新增</el-button> <el-button type="success" @click="router.push('/course?mode=create')">新增</el-button>
<el-button type="warning" @click="handleEditButton">修改</el-button> <el-button type="warning" @click="handleEditButton">修改</el-button>
<el-button type="danger" @click="handleDeleteButton">删除</el-button> <el-button type="danger" @click="handleDeleteButton">删除</el-button>
<el-button type="info">导出</el-button>
</div> </div>
<el-table :data="coursesData" style="width: 100%;" @selection-change="handleSelectionChange"> <el-table :data="coursesData" style="width: 100%;" @selection-change="handleSelectionChange">