|
@@ -1,11 +1,13 @@
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
|
+import {useRouter} from "vue-router";
|
|
import {GradeList} from "@/api/grade/types";
|
|
import {GradeList} from "@/api/grade/types";
|
|
import {useUserStore} from "@/store/modules/user";
|
|
import {useUserStore} from "@/store/modules/user";
|
|
import {getGradeSelect} from "@/api/grade";
|
|
import {getGradeSelect} from "@/api/grade";
|
|
import {getStudentLists} from "@/api/student";
|
|
import {getStudentLists} from "@/api/student";
|
|
import {StudentItem, StudentParams} from "@/api/student/types";
|
|
import {StudentItem, StudentParams} from "@/api/student/types";
|
|
-import {trimInput} from "@/utils";
|
|
|
|
|
|
+import {getUrlParam, trimInput} from "@/utils";
|
|
|
|
|
|
|
|
+const router = useRouter();
|
|
const userStore = useUserStore();
|
|
const userStore = useUserStore();
|
|
defineOptions({
|
|
defineOptions({
|
|
name: "StudentIndex",
|
|
name: "StudentIndex",
|
|
@@ -32,7 +34,7 @@ async function getGradeData(schoolId: number) {
|
|
/**
|
|
/**
|
|
* 学生数据
|
|
* 学生数据
|
|
*/
|
|
*/
|
|
-const studentSearch: StudentParams = reactive({
|
|
|
|
|
|
+const pageParams: StudentParams = reactive({
|
|
school_id: userStore.schoolId,
|
|
school_id: userStore.schoolId,
|
|
grade_id: 0,
|
|
grade_id: 0,
|
|
search: "",
|
|
search: "",
|
|
@@ -43,15 +45,15 @@ const dataMessage = ref("加载中...");
|
|
const studentCount = ref(0);
|
|
const studentCount = ref(0);
|
|
const studentData = ref<StudentItem[]>();
|
|
const studentData = ref<StudentItem[]>();
|
|
async function getStudentData(schoolId: number) {
|
|
async function getStudentData(schoolId: number) {
|
|
- studentSearch.school_id = schoolId;
|
|
|
|
- getStudentLists(studentSearch)
|
|
|
|
|
|
+ pageParams.school_id = schoolId;
|
|
|
|
+ getStudentLists(pageParams)
|
|
.then(({data}) => {
|
|
.then(({data}) => {
|
|
const {count, lists} = data;
|
|
const {count, lists} = data;
|
|
studentCount.value = count;
|
|
studentCount.value = count;
|
|
studentData.value = lists;
|
|
studentData.value = lists;
|
|
if (!(count && count > 0 && lists.length > 0)) {
|
|
if (!(count && count > 0 && lists.length > 0)) {
|
|
dataMessage.value = "没有符合搜索条件的记录!";
|
|
dataMessage.value = "没有符合搜索条件的记录!";
|
|
- if (studentSearch.grade_id == 0 && studentSearch.search == "") {
|
|
|
|
|
|
+ if (pageParams.grade_id == 0 && pageParams.search == "") {
|
|
dataMessage.value = "暂时还没有任何学生绑定学校!";
|
|
dataMessage.value = "暂时还没有任何学生绑定学校!";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -62,41 +64,41 @@ async function getStudentData(schoolId: number) {
|
|
});
|
|
});
|
|
}
|
|
}
|
|
function getStudentSearch() {
|
|
function getStudentSearch() {
|
|
- getStudentData(userStore.schoolId);
|
|
|
|
|
|
+ const current = router.currentRoute.value.path;
|
|
|
|
+ router.push(current + "?page=" + pageParams.page + "&size=" + pageParams.page_size);
|
|
|
|
+ // getStudentData(userStore.schoolId);
|
|
}
|
|
}
|
|
function alertError() {
|
|
function alertError() {
|
|
ElMessage.error("该学生训练数据还不足以进行训练效果分析,请至少完成16次专注力训练后再来查看。");
|
|
ElMessage.error("该学生训练数据还不足以进行训练效果分析,请至少完成16次专注力训练后再来查看。");
|
|
}
|
|
}
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
|
+ let page_no = getUrlParam("page");
|
|
|
|
+ if (page_no && page_no > 0) {
|
|
|
|
+ pageParams.page = Number(page_no);
|
|
|
|
+ }
|
|
|
|
+ let page_size = getUrlParam("size");
|
|
|
|
+ if (page_size && page_size > 0) {
|
|
|
|
+ pageParams.page_size = Number(page_size);
|
|
|
|
+ }
|
|
// 获取班级
|
|
// 获取班级
|
|
getGradeData(userStore.schoolId);
|
|
getGradeData(userStore.schoolId);
|
|
// 获取学生数据
|
|
// 获取学生数据
|
|
getStudentData(userStore.schoolId);
|
|
getStudentData(userStore.schoolId);
|
|
});
|
|
});
|
|
-// watch(
|
|
|
|
-// () => userStore.schoolId,
|
|
|
|
-// (newValue) => {
|
|
|
|
-// // 学校切换后重新加载数据
|
|
|
|
-// studentSearch.grade_id = 0;
|
|
|
|
-// studentSearch.search = "";
|
|
|
|
-// getGradeData(newValue);
|
|
|
|
-// getStudentData(userStore.schoolId);
|
|
|
|
-// }
|
|
|
|
-// );
|
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<template>
|
|
<template>
|
|
<div class="student-container">
|
|
<div class="student-container">
|
|
<!-- 学生查找 -->
|
|
<!-- 学生查找 -->
|
|
<div class="student-search">
|
|
<div class="student-search">
|
|
- <el-select v-model="studentSearch.grade_id" placeholder="全部班级" size="large">
|
|
|
|
|
|
+ <el-select v-model="pageParams.grade_id" placeholder="全部班级" size="large">
|
|
<el-option v-for="item in gradeData" :key="item.id" :label="item.name" :value="item.id" />
|
|
<el-option v-for="item in gradeData" :key="item.id" :label="item.name" :value="item.id" />
|
|
</el-select>
|
|
</el-select>
|
|
<el-input
|
|
<el-input
|
|
- v-model="studentSearch.search"
|
|
|
|
|
|
+ v-model="pageParams.search"
|
|
placeholder="请输入学生名称或手机号码"
|
|
placeholder="请输入学生名称或手机号码"
|
|
size="large"
|
|
size="large"
|
|
- @input="(value:string) => (studentSearch.search = trimInput(value))" />
|
|
|
|
|
|
+ @input="(value:string) => (pageParams.search = trimInput(value))" />
|
|
<el-button size="large" type="primary" @click="getStudentSearch()">查找</el-button>
|
|
<el-button size="large" type="primary" @click="getStudentSearch()">查找</el-button>
|
|
<span
|
|
<span
|
|
>共<b>{{ studentCount }}</b
|
|
>共<b>{{ studentCount }}</b
|
|
@@ -131,8 +133,8 @@ onMounted(() => {
|
|
<pagination
|
|
<pagination
|
|
v-if="studentCount > 0"
|
|
v-if="studentCount > 0"
|
|
v-model:total="studentCount"
|
|
v-model:total="studentCount"
|
|
- v-model:page="studentSearch.page"
|
|
|
|
- v-model:limit="studentSearch.page_size"
|
|
|
|
|
|
+ v-model:page="pageParams.page"
|
|
|
|
+ v-model:limit="pageParams.page_size"
|
|
@pagination="getStudentSearch()" />
|
|
@pagination="getStudentSearch()" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -182,8 +184,6 @@ onMounted(() => {
|
|
}
|
|
}
|
|
|
|
|
|
/* 自定义 el-select 样式 */
|
|
/* 自定义 el-select 样式 */
|
|
-
|
|
|
|
-/* el-select 各种边框线隐藏 **/
|
|
|
|
:deep(.el-select) {
|
|
:deep(.el-select) {
|
|
--el-select-input-focus-border-color: none !important;
|
|
--el-select-input-focus-border-color: none !important;
|
|
}
|
|
}
|