完善了搜索功能
This commit is contained in:
parent
d92732dfe6
commit
cc404e0ec4
@ -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">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user