From 1406d5efe7b47d45e988fcb0a6092b3bb9dc0443 Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期一, 08 七月 2024 17:40:14 +0800 Subject: [PATCH] feat:部门树形结构 --- src/views/exam/paper/list.vue | 10 ++ src/views/exam/question/edit/single-choice.vue | 13 +++- src/views/answer/sheetStatistics.vue | 11 +++ src/views/exam/question/edit/true-false.vue | 12 +++- src/views/exam/personalRandomTemplate/edit.vue | 32 ++++++++-- src/views/education/subject/edit.vue | 12 +++- src/views/exam/question/edit/multiple-choice.vue | 13 +++- src/views/exam/paper/edit.vue | 21 +++++- src/views/user/student/edit.vue | 11 +++ 9 files changed, 107 insertions(+), 28 deletions(-) diff --git a/src/views/answer/sheetStatistics.vue b/src/views/answer/sheetStatistics.vue index 0a7ae90..80973e4 100644 --- a/src/views/answer/sheetStatistics.vue +++ b/src/views/answer/sheetStatistics.vue @@ -7,9 +7,16 @@ </el-select> </el-form-item> <el-form-item label="閮ㄩ棬锛�" v-if="admin"> - <el-select v-model="queryParam.departmentId" collapse-tags multiple filterable placeholder="閮ㄩ棬" clearable> + <!-- <el-select v-model="queryParam.departmentId" collapse-tags multiple filterable placeholder="閮ㄩ棬" clearable> <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value" /> - </el-select> + </el-select> --> + <el-cascader + clearable + filterable + v-model="queryParam.departmentId" + :options="levelEnum" + :props="{ multiple: true, emitPath: false, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">鏌ヨ</el-button> diff --git a/src/views/education/subject/edit.vue b/src/views/education/subject/edit.vue index d6f99d4..0b9b76c 100644 --- a/src/views/education/subject/edit.vue +++ b/src/views/education/subject/edit.vue @@ -3,9 +3,15 @@ <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading"> <el-form-item label="鎵�灞為儴闂細" prop="deptIds"> - <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable> + <!-- <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable> <el-option v-for="item in depart" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> + </el-select> --> + <el-cascader + clearable + v-model="form.deptIds" + :options="depart" + :props="{ multiple: true, emitPath: false, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item label="璇剧洰鍚嶇О锛�" required> <el-input v-model="form.name"></el-input> @@ -59,7 +65,7 @@ let that = this departmentApi.pageList(this.queryParam).then(res=>{ if (res.code == 1){ - that.depart = res.response.list + that.depart = res.response; } }) }, diff --git a/src/views/exam/paper/edit.vue b/src/views/exam/paper/edit.vue index cbe9c5f..a269634 100644 --- a/src/views/exam/paper/edit.vue +++ b/src/views/exam/paper/edit.vue @@ -9,9 +9,16 @@ </el-select> </el-form-item> <el-form-item label="閮ㄩ棬锛�" prop="deptId" required> - <el-select v-model="form.deptId" collapse-tags @change="getSubject" placeholder="閮ㄩ棬"> + <!-- <el-select v-model="form.deptId" collapse-tags @change="getSubject" placeholder="閮ㄩ棬"> <el-option v-for="item in depts" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> + </el-select> --> + <el-cascader + clearable + @change="getSubject" + v-model="form.deptId" + :options="depts" + :props="{ emitPath: false, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item label="璇剧洰锛�" prop="subjectId" required> <el-select ref="subjectIdRef" v-model="form.subjectId" :disabled="! form.deptId" placeholder="璇剧洰" multiple collapse-tags> @@ -143,9 +150,15 @@ </el-select> </el-form-item> <el-form-item label="閮ㄩ棬锛�"> - <el-select v-model="student.deptIds" clearable multiple> + <!-- <el-select v-model="student.deptIds" clearable multiple> <el-option v-for="item in depts" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> + </el-select> --> + <el-cascader + clearable + v-model="student.deptIds" + :options="depts" + :props="{ emitPath: false, multiple: true, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item> <el-button type="primary" @click="selectStudent">鏌ヨ</el-button> diff --git a/src/views/exam/paper/list.vue b/src/views/exam/paper/list.vue index 857a78e..356a7b1 100644 --- a/src/views/exam/paper/list.vue +++ b/src/views/exam/paper/list.vue @@ -3,9 +3,15 @@ <el-form :model="queryParam" ref="queryForm" :inline="true"> <el-form-item label="閮ㄩ棬锛�"> - <el-select v-model="queryParam.level" clearable placeholder="閮ㄩ棬"> + <!-- <el-select v-model="queryParam.level" clearable placeholder="閮ㄩ棬"> <el-option v-for="item in depts" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> + </el-select> --> + <el-cascader + clearable + v-model="queryParam.level" + :options="depts" + :props="{ emitPath: false, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item label="璇剧洰锛�" > <el-select v-model="queryParam.subjectId" clearable> diff --git a/src/views/exam/personalRandomTemplate/edit.vue b/src/views/exam/personalRandomTemplate/edit.vue index c92bf12..b559b0d 100644 --- a/src/views/exam/personalRandomTemplate/edit.vue +++ b/src/views/exam/personalRandomTemplate/edit.vue @@ -9,9 +9,15 @@ </el-select> </el-form-item> <el-form-item label="閮ㄩ棬锛�" prop="deptId" required> - <el-select v-model="form.deptId" collapse-tags @change="getSubject" placeholder="閮ㄩ棬"> + <!-- <el-select v-model="form.deptId" collapse-tags @change="getSubject" placeholder="閮ㄩ棬"> <el-option v-for="item in depts" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> + </el-select> --> + <el-cascader + clearable + v-model="form.deptId" + :options="depts" + :props="{ emitPath: false, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item label="璇剧洰锛�" prop="subjectId" required> <el-select ref="subjectIdRef" v-model="form.subjectId" :disabled="! form.deptId" placeholder="璇剧洰" multiple collapse-tags @@ -147,16 +153,22 @@ </el-select> </el-form-item> <el-form-item label="閮ㄩ棬锛�"> - <el-select v-model="student.deptIds" clearable multiple> + <!-- <el-select v-model="student.deptIds" clearable multiple> <el-option v-for="item in depts" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> + </el-select> --> + <el-cascader + clearable + v-model="student.deptIds" + :options="depts" + :props="{ multiple: true, emitPath: false, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item> <el-button type="primary" @click="selectStudent">鏌ヨ</el-button> </el-form-item> </el-form> <el-table ref="multipleTable" v-loading="student.listLoading" :data="tableData" border fit highlight-current-row - style="width: 100%" @selection-change="handleSelection" row-key="id"> + style="width: 100%" @selection-change="handleSelection" row-key="id" @select-all="selectAll"> <el-table-column type="selection" :reserve-selection="true"></el-table-column> <el-table-column prop="realName" label="瀛﹀憳" /> </el-table> @@ -271,7 +283,7 @@ questionType: null, subjectId: 1, pageIndex: 1, - pageSize: 5 + pageSize: 500000000 }, listLoading: true, tableData: [], @@ -337,8 +349,16 @@ }) }, handleSelection(val) { + console.log('val', val); this.student.multipleSelection = val; }, + selectAll() { + let param = { ...this.student }; + param.pageSize = 999999; + examPaperApi.selectStudent(param).then(res => { + this.handleSelection(res.response.list); + }); + }, confirmStudentSelect() { this.form.userIds = this.student.multipleSelection.map((item) => item.id); this.form.examineeList = this.student.multipleSelection.map((item) => { diff --git a/src/views/exam/question/edit/multiple-choice.vue b/src/views/exam/question/edit/multiple-choice.vue index 8b156c8..65e996c 100644 --- a/src/views/exam/question/edit/multiple-choice.vue +++ b/src/views/exam/question/edit/multiple-choice.vue @@ -2,9 +2,16 @@ <div class="app-container"> <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> <el-form-item label="鎵�灞為儴闂細" prop="deptIds"> - <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable> + <!-- <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable> <el-option v-for="item in depart" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> + </el-select> --> + <el-cascader + clearable + multiple + v-model="form.deptIds" + :options="depart" + :props="{ multiple : true, emitPath: false, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item label="璇剧洰锛�" prop="subjectIds" required> <el-select v-model="form.subjectIds" placeholder="璇剧洰" multiple @@ -154,7 +161,7 @@ departmentApi.pageList(this.queryParam).then(res=>{ console.log(res) if (res.code == 1){ - that.depart = res.response.list + that.depart = res.response } }) }, diff --git a/src/views/exam/question/edit/single-choice.vue b/src/views/exam/question/edit/single-choice.vue index dae935f..7a9e04e 100644 --- a/src/views/exam/question/edit/single-choice.vue +++ b/src/views/exam/question/edit/single-choice.vue @@ -2,9 +2,16 @@ <div class="app-container"> <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> <el-form-item label="鎵�灞為儴闂細" prop="deptIds"> - <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable> + <!-- <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable> <el-option v-for="item in depart" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> + </el-select> --> + <el-cascader + clearable + multiple + v-model="form.deptIds" + :options="depart" + :props="{ multiple : true, emitPath: false, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item label="璇剧洰锛�" prop="subjectIds" required> <el-select v-model="form.subjectIds" placeholder="璇剧洰" multiple @@ -154,7 +161,7 @@ departmentApi.pageList(this.queryParam).then(res=>{ console.log(res) if (res.code == 1){ - that.depart = res.response.list + that.depart = res.response } }) }, diff --git a/src/views/exam/question/edit/true-false.vue b/src/views/exam/question/edit/true-false.vue index 585a402..1239db4 100644 --- a/src/views/exam/question/edit/true-false.vue +++ b/src/views/exam/question/edit/true-false.vue @@ -2,9 +2,15 @@ <div class="app-container"> <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules"> <el-form-item label="鎵�灞為儴闂細" prop="deptIds"> - <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable> + <!-- <el-select v-model="form.deptIds" placeholder="鎵�灞為儴闂�" multiple filterable> <el-option v-for="item in depart" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> + </el-select> --> + <el-cascader + clearable + v-model="form.deptIds" + :options="depart" + :props="{ multiple : true, emitPath: false, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item label="璇剧洰锛�" prop="subjectIds" required> <el-select v-model="form.subjectIds" placeholder="璇剧洰" multiple collapse-tags> @@ -148,7 +154,7 @@ departmentApi.pageList(this.queryParam).then(res=>{ console.log(res) if (res.code == 1){ - that.depart = res.response.list + that.depart = res.response } }) }, diff --git a/src/views/user/student/edit.vue b/src/views/user/student/edit.vue index c79ccf1..ec30e33 100644 --- a/src/views/user/student/edit.vue +++ b/src/views/user/student/edit.vue @@ -26,9 +26,16 @@ <el-input v-model="form.phone"></el-input> </el-form-item> <el-form-item label="閮ㄩ棬锛�" prop="deptIds" required> - <el-select v-model="form.deptIds" multiple collapse-tags placeholder="閮ㄩ棬" :disabled="this.$route.query.id"> + <!-- <el-select v-model="form.deptIds" multiple collapse-tags placeholder="閮ㄩ棬" :disabled="this.$route.query.id"> <el-option v-for="item in depts" :key="item.id" :value="item.id" :label="item.name"></el-option> - </el-select> + </el-select> --> + <el-cascader + clearable + :disabled="this.$route.query.id" + v-model="form.deptIds" + :options="depts" + :props="{ emitPath: false, multiple: true, value: 'id', label: 'name', checkStrictly: true }" + ></el-cascader> </el-form-item> <el-form-item label="鏍囩锛�" prop="tagIds"> <el-select v-model="form.tagIds" multiple collapse-tags placeholder="鏍囩"> -- Gitblit v1.8.0