|
|
|
|
@ -20,9 +20,6 @@
|
|
|
|
|
<el-table-column label="班级名称" min-width="180">
|
|
|
|
|
<template #default="{ row }">{{ item(row).className }}</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="班级编号" min-width="140">
|
|
|
|
|
<template #default="{ row }">{{ item(row).classSn }}</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="所属专业" min-width="180">
|
|
|
|
|
<template #default="{ row }">{{ majorName(item(row).schoolMajorId) }}</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
@ -36,15 +33,19 @@
|
|
|
|
|
|
|
|
|
|
<el-pagination class="pager" layout="total, prev, pager, next, sizes" :total="total" v-model:current-page="query.index" v-model:page-size="query.size" @current-change="load" @size-change="load" />
|
|
|
|
|
|
|
|
|
|
<el-dialog v-model="dialogVisible" :title="form.schoolClassId ? '编辑班级' : '新增班级'" width="520px">
|
|
|
|
|
<el-dialog v-model="dialogVisible" :title="form.schoolClassId ? '编辑班级' : '新增班级'" width="520px" align-center append-to-body custom-class="admin-edit-dialog">
|
|
|
|
|
<el-form :model="form" label-width="96px">
|
|
|
|
|
<el-form-item label="所属院系">
|
|
|
|
|
<el-select v-model="form.schoolFacultyId" placeholder="请选择院系" style="width: 100%" @change="handleFacultyChange">
|
|
|
|
|
<el-option v-for="faculty in faculties" :key="faculty.schoolFacultyId" :label="faculty.schoolFacultyName" :value="faculty.schoolFacultyId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="所属专业">
|
|
|
|
|
<el-select v-model="form.schoolMajorId" placeholder="请选择专业" style="width: 100%">
|
|
|
|
|
<el-option v-for="major in majors" :key="major.schoolMajorId" :label="major.schoolMajorName" :value="major.schoolMajorId" />
|
|
|
|
|
<el-select v-model="form.schoolMajorId" placeholder="请选择专业" style="width: 100%" :disabled="!form.schoolFacultyId">
|
|
|
|
|
<el-option v-for="major in formMajors" :key="major.schoolMajorId" :label="major.schoolMajorName" :value="major.schoolMajorId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="班级名称"><el-input v-model="form.className" /></el-form-item>
|
|
|
|
|
<el-form-item label="班级编号"><el-input v-model="form.classSn" /></el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<template #footer>
|
|
|
|
|
<el-button @click="dialogVisible = false">取消</el-button>
|
|
|
|
|
@ -58,7 +59,7 @@
|
|
|
|
|
<script setup>
|
|
|
|
|
import "@/views/schoolAdmin/admin-theme.scss";
|
|
|
|
|
import { ElMessage, ElMessageBox } from "element-plus";
|
|
|
|
|
import { addAdminClass, deleteAdminClass, getAdminClasses, getAdminMajors, updateAdminClass } from "@/api/schoolAdmin";
|
|
|
|
|
import { addAdminClass, deleteAdminClass, getAdminClasses, getAdminFaculties, getAdminMajors, updateAdminClass } from "@/api/schoolAdmin";
|
|
|
|
|
|
|
|
|
|
const query = reactive({ index: 1, size: 10, className: "", schoolMajorId: "" });
|
|
|
|
|
const rows = ref([]);
|
|
|
|
|
@ -66,13 +67,24 @@ const total = ref(0);
|
|
|
|
|
const loading = ref(false);
|
|
|
|
|
const dialogVisible = ref(false);
|
|
|
|
|
const form = ref({});
|
|
|
|
|
const faculties = ref([]);
|
|
|
|
|
const majors = ref([]);
|
|
|
|
|
const item = (row) => row.schoolClass || row;
|
|
|
|
|
const majorName = (id) => majors.value.find((major) => major.schoolMajorId === id)?.schoolMajorName || "";
|
|
|
|
|
const majorFacultyId = (id) => majors.value.find((major) => major.schoolMajorId === id)?.schoolFacultyId || "";
|
|
|
|
|
const formMajors = computed(() => majors.value.filter((major) => major.schoolFacultyId === form.value.schoolFacultyId));
|
|
|
|
|
|
|
|
|
|
const loadFaculties = async () => {
|
|
|
|
|
const res = await getAdminFaculties({ index: 1, size: 1000 });
|
|
|
|
|
faculties.value = (res.data?.list || []).map((row) => row.schoolFaculty || row);
|
|
|
|
|
};
|
|
|
|
|
const loadMajors = async () => {
|
|
|
|
|
const res = await getAdminMajors({ index: 1, size: 1000 });
|
|
|
|
|
majors.value = (res.data?.list || []).map((row) => ({ ...(row.schoolMajor || row), schoolMajorId: row.schoolMajorId || row.schoolMajor?.schoolMajorId }));
|
|
|
|
|
majors.value = (res.data?.list || []).map((row) => ({
|
|
|
|
|
...(row.schoolMajor || row),
|
|
|
|
|
schoolFacultyId: row.schoolFacultyId || row.schoolMajor?.schoolFacultyId,
|
|
|
|
|
schoolMajorId: row.schoolMajorId || row.schoolMajor?.schoolMajorId,
|
|
|
|
|
}));
|
|
|
|
|
};
|
|
|
|
|
const load = async () => {
|
|
|
|
|
loading.value = true;
|
|
|
|
|
@ -91,18 +103,27 @@ const reset = () => {
|
|
|
|
|
load();
|
|
|
|
|
};
|
|
|
|
|
const openCreate = () => {
|
|
|
|
|
form.value = {};
|
|
|
|
|
form.value = { schoolFacultyId: "", schoolMajorId: "", className: "" };
|
|
|
|
|
dialogVisible.value = true;
|
|
|
|
|
};
|
|
|
|
|
const openEdit = (row) => {
|
|
|
|
|
form.value = { ...item(row) };
|
|
|
|
|
const current = { ...item(row) };
|
|
|
|
|
form.value = { ...current, schoolFacultyId: majorFacultyId(current.schoolMajorId) };
|
|
|
|
|
dialogVisible.value = true;
|
|
|
|
|
};
|
|
|
|
|
const handleFacultyChange = () => {
|
|
|
|
|
form.value.schoolMajorId = "";
|
|
|
|
|
};
|
|
|
|
|
const submit = async () => {
|
|
|
|
|
const payload = {
|
|
|
|
|
schoolClassId: form.value.schoolClassId,
|
|
|
|
|
schoolMajorId: form.value.schoolMajorId,
|
|
|
|
|
className: form.value.className,
|
|
|
|
|
};
|
|
|
|
|
if (form.value.schoolClassId) {
|
|
|
|
|
await updateAdminClass(form.value.schoolClassId, form.value);
|
|
|
|
|
await updateAdminClass(form.value.schoolClassId, payload);
|
|
|
|
|
} else {
|
|
|
|
|
await addAdminClass(form.value);
|
|
|
|
|
await addAdminClass(payload);
|
|
|
|
|
}
|
|
|
|
|
ElMessage.success("保存成功");
|
|
|
|
|
dialogVisible.value = false;
|
|
|
|
|
@ -116,6 +137,7 @@ const remove = async (row) => {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
loadFaculties();
|
|
|
|
|
loadMajors();
|
|
|
|
|
load();
|
|
|
|
|
});
|
|
|
|
|
|