|
@@ -5,6 +5,8 @@ import { Search } from '@element-plus/icons-vue';
|
|
|
import { ElMessage } from 'element-plus';
|
|
|
const router = useRouter();
|
|
|
|
|
|
+import { schoolTree, schoolAdd, schoolItem, schoolUpdate, schoolDelete } from "../../../../api/admin/school";
|
|
|
+
|
|
|
const props = defineProps({
|
|
|
|
|
|
configDb : {
|
|
@@ -68,39 +70,39 @@ let state = ref({
|
|
|
},
|
|
|
// 具体分页的数据
|
|
|
"list": [
|
|
|
- {
|
|
|
- "id": 661434193309765,
|
|
|
- "createTime": "2025-04-03 10:42:39",
|
|
|
- "name": "班级_1",
|
|
|
- },
|
|
|
- {
|
|
|
- "id": 661434193309766,
|
|
|
- "createTime": "2025-04-03 10:42:39",
|
|
|
- "name": "班级_2",
|
|
|
- },
|
|
|
- {
|
|
|
- "id": 661434193309767,
|
|
|
- "createTime": "2025-04-03 10:42:39",
|
|
|
- "name": "班级_3",
|
|
|
- },
|
|
|
- {
|
|
|
- "id": 661434193309768,
|
|
|
- "createTime": "2025-04-03 10:42:39",
|
|
|
- "name": "班级_4",
|
|
|
- },
|
|
|
- {
|
|
|
- "id": 661434193309769,
|
|
|
- "createTime": "2025-04-03 10:42:39",
|
|
|
- "name": "班级_5",
|
|
|
- },
|
|
|
- {
|
|
|
- "id": 661434193309770,
|
|
|
- "createTime": "2025-04-03 10:42:39",
|
|
|
- "name": "班级_6",
|
|
|
- },
|
|
|
+ // {
|
|
|
+ // "id": 661434193309765,
|
|
|
+ // "createTime": "2025-04-03 10:42:39",
|
|
|
+ // "name": "班级_1",
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "id": 661434193309766,
|
|
|
+ // "createTime": "2025-04-03 10:42:39",
|
|
|
+ // "name": "班级_2",
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "id": 661434193309767,
|
|
|
+ // "createTime": "2025-04-03 10:42:39",
|
|
|
+ // "name": "班级_3",
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "id": 661434193309768,
|
|
|
+ // "createTime": "2025-04-03 10:42:39",
|
|
|
+ // "name": "班级_4",
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "id": 661434193309769,
|
|
|
+ // "createTime": "2025-04-03 10:42:39",
|
|
|
+ // "name": "班级_5",
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // "id": 661434193309770,
|
|
|
+ // "createTime": "2025-04-03 10:42:39",
|
|
|
+ // "name": "班级_6",
|
|
|
+ // },
|
|
|
],
|
|
|
// 用户总数量
|
|
|
- "total": 6,
|
|
|
+ "total": 0,
|
|
|
// 是否弹出添加UI
|
|
|
"showDialog": false,
|
|
|
// 当前分页列表,多选的数据
|
|
@@ -119,21 +121,25 @@ let ruleFormRef = ref();
|
|
|
*/
|
|
|
let addParams = ref({
|
|
|
name: '',
|
|
|
+ remark: '',
|
|
|
});
|
|
|
|
|
|
+/**
|
|
|
+ * 初始化添加的数据
|
|
|
+ */
|
|
|
+const addParamsInit = () => {
|
|
|
+ addParams.value = {
|
|
|
+ name: '',
|
|
|
+ remark: '',
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* 添加,字段相关验证规则
|
|
|
*/
|
|
|
let addRules = ref({
|
|
|
name: [{ required: true, message: '请填写班级', trigger: 'blur' }],
|
|
|
- // username: [{ required: true, message: '请填写学号', trigger: 'blur' }],
|
|
|
- // orgId: [
|
|
|
- // {
|
|
|
- // required: true,
|
|
|
- // message: '请选择班级',
|
|
|
- // trigger: 'change',
|
|
|
- // },
|
|
|
- // ],
|
|
|
+ remark: [{ required: true, message: '请填写备注', trigger: 'blur' }],
|
|
|
});
|
|
|
|
|
|
|
|
@@ -141,23 +147,150 @@ let addRules = ref({
|
|
|
* 详情数据
|
|
|
*/
|
|
|
let detailsDb = ref({
|
|
|
- name: '',
|
|
|
+ "id": null,
|
|
|
+ "name": null,
|
|
|
+ "type": null,
|
|
|
+ "remark": null,
|
|
|
+ "parentId": null,
|
|
|
+ "schoolId": null
|
|
|
});
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 因为这里的接口返回的不是分页的接口,是全部数据,所以这里就记录全部数据
|
|
|
+ * 后面通过逻辑,来控制分页的显示
|
|
|
+ */
|
|
|
+let pageDb = [];
|
|
|
+
|
|
|
/**
|
|
|
* 查找分页数据
|
|
|
*/
|
|
|
const pageUpdateEvent = () => {
|
|
|
- console.log(
|
|
|
- "查找分页数据 pageUpdateEvent", state.value.listParams
|
|
|
- );
|
|
|
+
|
|
|
+ // console.log(
|
|
|
+ // "查找分页数据 pageUpdateEvent", state.value.listParams
|
|
|
+ // );
|
|
|
+
|
|
|
+ let keyword = state.value.listParams.keyword;
|
|
|
+
|
|
|
+ let submit = {
|
|
|
+ // 默认优先去顶级所有,传 0 。 否则你要看到 学院, 专业 ,班级 的列表,这里固定就传 学院这个的id值
|
|
|
+ "schoolId" : props.configDb.school.id,
|
|
|
+ };
|
|
|
+
|
|
|
+ schoolTree(submit)
|
|
|
+ .then(response => {
|
|
|
+
|
|
|
+ // 找到对应学校的,学院
|
|
|
+ let dataOld = response?.data?.data;
|
|
|
+ // console.log(
|
|
|
+ // "schoolTreeEvent response", response, data
|
|
|
+ // );
|
|
|
+
|
|
|
+ let data = [];
|
|
|
+ data = idGetList(dataOld, props.configDb.school.id);
|
|
|
+ data = idGetList(data, props.configDb.college.id);
|
|
|
+ data = idGetList(data, props.configDb.major.id);
|
|
|
+
|
|
|
+ pageDb = [];
|
|
|
+
|
|
|
+ // 重新拼接合理要展示的分页数据
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
+ let thisData = data[i];
|
|
|
+ if (typeof keyword == 'string' && keyword != '' && keyword != ' ') {
|
|
|
+ if (typeof thisData.name == 'string' && thisData.name.indexOf(keyword) >= 0) {
|
|
|
+ pageDb.push(thisData);
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ pageDb.push(thisData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ pageDbUpdateEvent();
|
|
|
+
|
|
|
+ }).catch(error => {
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/**
|
|
|
+ * 找到对应id的children数据
|
|
|
+ * threeArray 当前树结构的数组
|
|
|
+ * id 找到指定id的值
|
|
|
+ * 成功返回数组结构,否则返回空数组
|
|
|
+ */
|
|
|
+const idGetList = (threeArray, id) => {
|
|
|
+
|
|
|
+ let retArray = [];
|
|
|
+
|
|
|
+ if (threeArray == null || threeArray == undefined || threeArray.length <= 0) {
|
|
|
+ return retArray;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (let i = 0; i < threeArray.length; i++) {
|
|
|
+ let thisThreeArray = threeArray[i];
|
|
|
+ if (thisThreeArray.id == id) {
|
|
|
+
|
|
|
+ if (thisThreeArray["children"] != null && thisThreeArray["children"] != undefined) {
|
|
|
+ let children = thisThreeArray["children"];
|
|
|
+ return children;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return retArray;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * 因为接口不是标准的分页接口,是直接返回所有数据的
|
|
|
+ * 这里进行单独处理,来展示第几页的数据
|
|
|
+ */
|
|
|
+const pageDbUpdateEvent = () => {
|
|
|
+
|
|
|
+ // console.log(
|
|
|
+ // "查找分页数据 pageDbUpdateEvent", state.value.listParams, pageDb
|
|
|
+ // );
|
|
|
+
|
|
|
+ state.value.total = pageDb.length;
|
|
|
+ state.value.list = [];
|
|
|
+
|
|
|
+ let page = state.value.listParams.page;
|
|
|
+ let limit = state.value.listParams.limit;
|
|
|
+ let keyword = state.value.listParams.keyword;
|
|
|
+
|
|
|
+ // 从第几个数组下标开始
|
|
|
+ let indexStart = (page - 1) * limit;
|
|
|
+ // 到第几个数组下标结束
|
|
|
+ let indexEnd = indexStart + limit - 1;
|
|
|
+
|
|
|
+ for (let i = 0; i < pageDb.length; i++) {
|
|
|
+
|
|
|
+ // 在范围内
|
|
|
+ if (i >= indexStart && i <= indexEnd) {
|
|
|
+ let thisPageDb = pageDb[i];
|
|
|
+ state.value.list.push(thisPageDb);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 弹出添加UI
|
|
|
*/
|
|
|
const btnAddStudent = (formEl) => {
|
|
|
-
|
|
|
+
|
|
|
+ addParamsInit();
|
|
|
state.value.showDialog = true;
|
|
|
if (!formEl) {
|
|
|
return;
|
|
@@ -300,6 +433,11 @@ const btnDetail = (res) => {
|
|
|
}
|
|
|
|
|
|
|
|
|
+onMounted(function() {
|
|
|
+ pageUpdateEvent();
|
|
|
+});
|
|
|
+
|
|
|
+
|
|
|
</script>
|
|
|
|
|
|
<template>
|