From 68b8ed3b4b7ddbb5fe113c1d7df3aa909dc66fb6 Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期三, 03 七月 2024 18:37:29 +0800 Subject: [PATCH] feat:新增随机时间题目配置 --- src/views/exam/paper/edit.vue | 90 +++++++++++++++++++++++++------------------- 1 files changed, 51 insertions(+), 39 deletions(-) diff --git a/src/views/exam/paper/edit.vue b/src/views/exam/paper/edit.vue index d15ce0e..cbe9c5f 100644 --- a/src/views/exam/paper/edit.vue +++ b/src/views/exam/paper/edit.vue @@ -1,19 +1,21 @@ <template> <div class="app-container"> <el-form :model="form" ref="form" label-width="200px" v-loading="formLoading" :rules="rules"> - <el-form-item label="鑰冪敓锛�" prop="examineeList" required> - <el-select v-model="form.examineeList" :collapse-tags="true" multiple placeholder="璇烽�夋嫨" @focus="selectStudent" + <el-form-item label="鑰冪敓锛�" prop="userIds" required> + <el-select v-model="form.userIds" :collapse-tags="true" multiple placeholder="璇烽�夋嫨" @focus="selectStudent" popper-class="examinee-popper"> - </el-select> - </el-form-item> - <el-form-item label="璇剧洰锛�" prop="subjectId" required> - <el-select ref="subjectIdRef" v-model="form.subjectId" placeholder="璇剧洰" multiple collapse-tags> - <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name + ' '"></el-option> + <el-option v-for="item in form.examineeList" :value="item.id" :label="item.realName" + :key="item.id"></el-option> </el-select> </el-form-item> <el-form-item label="閮ㄩ棬锛�" prop="deptId" required> - <el-select v-model="form.deptId" collapse-tags 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-form-item> + <el-form-item label="璇剧洰锛�" prop="subjectId" required> + <el-select ref="subjectIdRef" v-model="form.subjectId" :disabled="! form.deptId" placeholder="璇剧洰" multiple collapse-tags> + <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name + ' '"></el-option> </el-select> </el-form-item> <el-form-item label="璇曞嵎绫诲瀷锛�" prop="paperType" required> @@ -155,7 +157,7 @@ <el-table-column prop="realName" label="瀛﹀憳" /> </el-table> <pagination v-show="total > 0" :total="total" :page.sync="student.pageIndex" :limit.sync="student.pageSize" - @pagination="selectStudent" /> + @pagination="getStudent" /> <span slot="footer" class="dialog-footer"> <el-button @click="studentDialog = false">鍙� 娑�</el-button> <el-button type="primary" @click="confirmStudentSelect">纭畾</el-button> @@ -169,6 +171,7 @@ import { mapGetters, mapState, mapActions } from 'vuex'; import Pagination from '@/components/Pagination'; import QuestionShow from '../question/components/Show'; +import subjectApi from '@/api/subject'; import examPaperApi from '@/api/examPaper'; import questionApi from '@/api/question'; import departmentApi from '@/api/department'; @@ -181,13 +184,17 @@ tags: [], depts: [], studentDialog: false, + + isFirstShow: true, + + student: { deptIds: [], pageIndex: 1, pageSize: 5, listLoading: true, multipleSelection: [], - excludeTagIds: [] + excludeTagIds: [], }, tableData: [], total: 0, @@ -213,13 +220,14 @@ titleItems: [], subjectSource: {}, questionTypeVMS: [], - examineeList: [] + examineeList: [], + userNames: [] }, subjectFilter: null, formLoading: false, rules: { - examineeList: [ - { required: true, message: '璇烽�夋嫨', trigger: 'change' } + userIds: [ + { required: true, message: '璇烽�夋嫨鑰冪敓', trigger: 'change' } ], subjectId: [ { required: true, message: '璇烽�夋嫨璇剧洰', trigger: 'change' } @@ -263,10 +271,15 @@ if (id && parseInt(id) !== 0) { _this.formLoading = true; examPaperApi.select(id).then(re => { + const { userIds, userNames } = re.response; + _this.form = re.response; - // _this.form.menuIds = JSON.parse(re.response.menuIds); - _this.examineeList = JSON.parse(re.response.userIds).map(item => item.realName); - console.log(_this.form); + _this.form.examineeList = userIds.map((item, index) => { + return { + id: item, + realName: userNames && userNames[index] ? userNames[index] : '' + }; + }); _this.formLoading = false; }); } @@ -280,6 +293,13 @@ }); }, methods: { + getSubject(deptId) { + // 鑾峰彇瀵瑰簲閮ㄩ棬鐨勮鐩� + subjectApi.selectByDeptId(deptId).then(res => { + this.form.subjectId = null + this.subjectFilter = res.response + }) + }, getTags() { userApi.tagList(null).then(data => { this.tags = data.response; @@ -289,21 +309,21 @@ this.getTags(); this.studentDialog = true; this.student.listLoading = true; + this.getStudent(); + }, + getStudent() { + this.student.listLoading = true; examPaperApi.selectStudent(this.student).then(res => { this.tableData = res.response.list; this.total = res.response.total; this.student.listLoading = false; - - this.$nextTick(() => { - this.tableData.map(data => { - if (this.form.userIds.find(item => item === data.id)) { - this.$refs.multipleTable.toggleRowSelection(data, true); - } else { - this.$refs.multipleTable.toggleRowSelection(data, false); - } + if (this.studentDialog && this.isFirstShow) { + this.isFirstShow = false; + this.form.examineeList.forEach(item => { + this.$refs.multipleTable.toggleRowSelection(item, true); }); - }); + } }); }, handleChange(val) { @@ -362,9 +382,6 @@ // } }); this.form.subjectSource = obj1; - - console.log(this.form.subjectSource); - console.log(this.form.questionTypeVMS); // this.form.paperType = 7 this.form.titleItems = []; } else { @@ -383,8 +400,8 @@ if (this.subjectIdList.length == 1) { tempForm.subjectId = tempForm.subjectId; }; - tempForm.userIds = tempForm.menuIds; - // tempForm.menuIds = JSON.stringify(tempForm.menuIds); + + tempForm.menuIds = tempForm.userIds.join(','); if (tempForm.questionTypeVMS == null) { tempForm.questionTypeVMS = []; @@ -414,7 +431,6 @@ }); }, addQuestion(titleItem) { - console.log('titleItem', titleItem); this.currentTitleItem = titleItem; this.questionPage.showDialog = true; this.search(); @@ -441,15 +457,15 @@ this.questionPage.showDialog = false; }, confirmStudentSelect() { - // this.form.menuIds = this.student.multipleSelection.map((item) => item.id); - this.form.userIds = this.student.multipleSelection.map((item) => { + this.form.userIds = this.student.multipleSelection.map((item) => item.id); + + this.form.examineeList = this.student.multipleSelection.map((item) => { return { id: item.id, realName: item.realName }; }); - this.form.examineeList = this.student.multipleSelection.map((item) => item.realName); - + this.student.multipleSelection = []; this.studentDialog = false; }, @@ -525,10 +541,6 @@ levelEnum: state => state.user.levelEnum }), ...mapState('exam', { subjects: state => state.subjects }), - - examineeFormat() { - return this.examineeList.map(item => item.realName); - } } }; </script> -- Gitblit v1.8.0