Commit 58744c8c9a1d7b9750e3de5ecc67571bc1a6b87f

Authored by 梁保满
1 parent ce278878

即时测多班淡斑逻辑修改

public/static/试卷模板.docx
No preview for this file type
src/views/basic/test/index.vue
@@ -8,30 +8,64 @@ @@ -8,30 +8,64 @@
8 <div class="select-box"> 8 <div class="select-box">
9 <div class="sel-item sel-item2"> 9 <div class="sel-item sel-item2">
10 <span class="sel-label">班级:</span> 10 <span class="sel-label">班级:</span>
11 - <div class="sel-d"> 11 + <div class="sel-d" v-if="role == 'ROLE_JIAOSHI'">
12 <p class="p-all"> 12 <p class="p-all">
13 - <el-checkbox :indeterminate="isIndeterminateClass" v-model="allClass"  
14 - @change="handleCheckAllChangeClass">全选</el-checkbox> 13 + <el-checkbox
  14 + :indeterminate="isIndeterminateClass"
  15 + v-model="allClass"
  16 + @change="handleCheckAllChangeClass"
  17 + >全选</el-checkbox
  18 + >
15 </p> 19 </p>
16 <p class="sel-p"> 20 <p class="sel-p">
17 <el-checkbox-group v-model="query.classId" @change="changeclass"> 21 <el-checkbox-group v-model="query.classId" @change="changeclass">
18 - <el-checkbox v-for="item in classList" :label="item.value" :key="item.value">{{ item.label  
19 - }}</el-checkbox> 22 + <el-checkbox
  23 + v-for="item in classList"
  24 + :label="item.value"
  25 + :key="item.value"
  26 + >{{ item.label }}</el-checkbox
  27 + >
20 </el-checkbox-group> 28 </el-checkbox-group>
21 </p> 29 </p>
22 </div> 30 </div>
  31 + <el-select
  32 + v-if="role == 'ROLE_BANZHUREN'"
  33 + class="sel"
  34 + v-model="query.classId"
  35 + placeholder="选择班级"
  36 + @change="changeclass"
  37 + >
  38 + <el-option
  39 + v-for="item in classList"
  40 + :key="item.value"
  41 + :label="item.label"
  42 + :value="item.value"
  43 + >
  44 + </el-option>
  45 + </el-select>
23 </div> 46 </div>
24 <div class="sel-item sel-item2"> 47 <div class="sel-item sel-item2">
25 <span class="sel-label">科目:</span> 48 <span class="sel-label">科目:</span>
26 <div class="sel-d"> 49 <div class="sel-d">
27 <p class="p-all"> 50 <p class="p-all">
28 - <el-checkbox :indeterminate="isIndeterminateSub" v-model="allSubject"  
29 - @change="handleCheckAllChangeSub">全选</el-checkbox> 51 + <el-checkbox
  52 + :indeterminate="isIndeterminateSub"
  53 + v-model="allSubject"
  54 + @change="handleCheckAllChangeSub"
  55 + >全选</el-checkbox
  56 + >
30 </p> 57 </p>
31 <p class="sel-p"> 58 <p class="sel-p">
32 - <el-checkbox-group v-model="query.subjectNames" @change="CheckedSub">  
33 - <el-checkbox v-for="item in subjectList" :label="item" :key="item">{{ item  
34 - }}</el-checkbox> 59 + <el-checkbox-group
  60 + v-model="query.subjectNames"
  61 + @change="CheckedSub"
  62 + >
  63 + <el-checkbox
  64 + v-for="item in subjectList"
  65 + :label="item"
  66 + :key="item"
  67 + >{{ item }}</el-checkbox
  68 + >
35 </el-checkbox-group> 69 </el-checkbox-group>
36 </p> 70 </p>
37 </div> 71 </div>
@@ -39,18 +73,34 @@ @@ -39,18 +73,34 @@
39 <div class="sel-item"> 73 <div class="sel-item">
40 <span class="sel-label">日期:</span> 74 <span class="sel-label">日期:</span>
41 <div class="d1"> 75 <div class="d1">
42 - <el-date-picker v-model="query.startDay" type="date" @change="handleChangeTimeStart" placeholder="选择日期时间"  
43 - value-format="yyyy-MM-dd"> 76 + <el-date-picker
  77 + v-model="query.startDay"
  78 + type="date"
  79 + @change="handleChangeTimeStart"
  80 + placeholder="选择日期时间"
  81 + value-format="yyyy-MM-dd"
  82 + >
44 </el-date-picker> 83 </el-date-picker>
45 ~ 84 ~
46 - <el-date-picker v-model="query.endDay" type="date" placeholder="选择日期时间" @change="handleChangeTimeEnd"  
47 - value-format="yyyy-MM-dd"> 85 + <el-date-picker
  86 + v-model="query.endDay"
  87 + type="date"
  88 + placeholder="选择日期时间"
  89 + @change="handleChangeTimeEnd"
  90 + value-format="yyyy-MM-dd"
  91 + >
48 </el-date-picker> 92 </el-date-picker>
49 </div> 93 </div>
50 <p class="p1"> 94 <p class="p1">
51 - <span @click="setDate(1)" :class="[date == 1 ? 'active' : '', 's1']">本周</span>  
52 - <span @click="setDate(2)" :class="[date == 2 ? 'active' : '', 's1']">本月</span>  
53 - <span @click="setDate(3)" :class="[date == 3 ? 'active' : '', 's1']">本季度</span> 95 + <span @click="setDate(1)" :class="[date == 1 ? 'active' : '', 's1']"
  96 + >本周</span
  97 + >
  98 + <span @click="setDate(2)" :class="[date == 2 ? 'active' : '', 's1']"
  99 + >本月</span
  100 + >
  101 + <span @click="setDate(3)" :class="[date == 3 ? 'active' : '', 's1']"
  102 + >本季度</span
  103 + >
54 </p> 104 </p>
55 </div> 105 </div>
56 </div> 106 </div>
@@ -80,10 +130,10 @@ export default { @@ -80,10 +130,10 @@ export default {
80 classList: [], //班级 130 classList: [], //班级
81 subjectList: [], //科目 131 subjectList: [], //科目
82 132
83 - isIndeterminateClass: true,//全选样式  
84 - allClass: false,//全选状态  
85 - isIndeterminateSub: true,//全选样式  
86 - allSubject: false,//全选状态 133 + isIndeterminateClass: true, //全选样式
  134 + allClass: false, //全选状态
  135 + isIndeterminateSub: true, //全选样式
  136 + allSubject: false, //全选状态
87 }; 137 };
88 }, 138 },
89 async created() { 139 async created() {
@@ -107,24 +157,30 @@ export default { @@ -107,24 +157,30 @@ export default {
107 157
108 methods: { 158 methods: {
109 handleCheckAllChangeClass(val) { 159 handleCheckAllChangeClass(val) {
110 - this.isIndeterminateClass = false  
111 - this.query.classId = val ? this.classList.map(item => item.value) : []; 160 + this.isIndeterminateClass = false;
  161 + this.query.classId = val ? this.classList.map((item) => item.value) : [];
112 }, 162 },
113 changeclass(value) { 163 changeclass(value) {
114 - console.log(value)  
115 - let checkedCount = value.length;  
116 - this.allClass = checkedCount === this.classList.length;  
117 - this.isIndeterminateClass = checkedCount > 0 && checkedCount < this.classList.length; 164 + console.log(value);
  165 + if (this.role == "ROLE_BANZHUREN") {
  166 + this._QuerySubjectList();
  167 + } else {
  168 + let checkedCount = value.length;
  169 + this.allClass = checkedCount === this.classList.length;
  170 + this.isIndeterminateClass =
  171 + checkedCount > 0 && checkedCount < this.classList.length;
  172 + }
118 }, 173 },
119 handleCheckAllChangeSub(val) { 174 handleCheckAllChangeSub(val) {
120 - this.isIndeterminate = false 175 + this.isIndeterminate = false;
121 this.query.subjectNames = val ? this.subjectList : []; 176 this.query.subjectNames = val ? this.subjectList : [];
122 }, 177 },
123 CheckedSub(value) { 178 CheckedSub(value) {
124 - console.log(value) 179 + console.log(value);
125 let checkedCount = value.length; 180 let checkedCount = value.length;
126 this.allSubject = checkedCount === this.subjectList.length; 181 this.allSubject = checkedCount === this.subjectList.length;
127 - this.isIndeterminate = checkedCount > 0 && checkedCount < this.subjectList.length; 182 + this.isIndeterminate =
  183 + checkedCount > 0 && checkedCount < this.subjectList.length;
128 }, 184 },
129 setDate(index) { 185 setDate(index) {
130 const that = this; 186 const that = this;
@@ -189,10 +245,10 @@ export default { @@ -189,10 +245,10 @@ export default {
189 async _QueryClassList() { 245 async _QueryClassList() {
190 const fetchClassList = 246 const fetchClassList =
191 this.role == "ROLE_BANZHUREN" 247 this.role == "ROLE_BANZHUREN"
192 - ? this.$request.cTClassList :  
193 - this.role == "ROLE_PERSONAL"  
194 - ? this.$request.pClassList  
195 - : this.$request.tClassList; 248 + ? this.$request.cTClassList
  249 + : this.role == "ROLE_PERSONAL"
  250 + ? this.$request.pClassList
  251 + : this.$request.tClassList;
196 const { data, status, info } = await fetchClassList(); 252 const { data, status, info } = await fetchClassList();
197 if (status === 0) { 253 if (status === 0) {
198 this.classList = data.list.map((item) => { 254 this.classList = data.list.map((item) => {
@@ -201,7 +257,15 @@ export default { @@ -201,7 +257,15 @@ export default {
201 label: item.className, 257 label: item.className,
202 }; 258 };
203 }); 259 });
204 - this.classList.length ? this.query.classId.push(this.classList[0].value) : ""; 260 + if (this.role == "ROLE_BANZHUREN") {
  261 + this.query.classId = this.classList.length
  262 + ? this.classList[0].value
  263 + : "";
  264 + } else {
  265 + this.classList.length
  266 + ? this.query.classId.push(this.classList[0].value)
  267 + : "";
  268 + }
205 } else { 269 } else {
206 this.$message.error(info); 270 this.$message.error(info);
207 } 271 }
@@ -209,22 +273,20 @@ export default { @@ -209,22 +273,20 @@ export default {
209 async _QuerySubjectList() { 273 async _QuerySubjectList() {
210 const fetchSubjectList = 274 const fetchSubjectList =
211 this.role == "ROLE_BANZHUREN" 275 this.role == "ROLE_BANZHUREN"
212 - ? this.$request.cTSubjectList :  
213 - this.role == "ROLE_PERSONAL"  
214 - ? this.$request.pSubjectList  
215 - : this.$request.tSubjectList; 276 + ? this.$request.cTSubjectList
  277 + : this.role == "ROLE_PERSONAL"
  278 + ? this.$request.pSubjectList
  279 + : this.$request.tSubjectList;
216 280
217 - const classIds = this.classList.map(item => item.value) || [] 281 + let classIds = this.query.classId;
218 const { data, status, info } = await fetchSubjectList({ 282 const { data, status, info } = await fetchSubjectList({
219 classIds: classIds, 283 classIds: classIds,
220 }); 284 });
221 if (status === 0) { 285 if (status === 0) {
222 this.subjectList = data.subjectNames || []; 286 this.subjectList = data.subjectNames || [];
223 - // if (this.role == "ROLE_BANZHUREN") {  
224 - // this.query.subjectNames = this.subjectList  
225 - // } else {  
226 - this.subjectList.length ? this.query.subjectNames.push(this.subjectList[0]) : "";  
227 - // } 287 + this.subjectList.length
  288 + ? this.query.subjectNames.push(this.subjectList[0])
  289 + : "";
228 } else { 290 } else {
229 this.$message.error(info); 291 this.$message.error(info);
230 } 292 }
@@ -233,26 +295,30 @@ export default { @@ -233,26 +295,30 @@ export default {
233 //回主页 295 //回主页
234 goHome() { 296 goHome() {
235 this.$router.push({ 297 this.$router.push({
236 - path: '/index'  
237 - }) 298 + path: "/index",
  299 + });
238 }, 300 },
239 //去列表 301 //去列表
240 goList() { 302 goList() {
241 - if(this.query.classId.length == 0){  
242 - this.$message.warning("请选择班级!")  
243 - return 303 + if (this.query.classId.length == 0) {
  304 + this.$message.warning("请选择班级!");
  305 + return;
244 } 306 }
245 - if(this.query.subjectNames.length == 0){  
246 - this.$message.warning("请选择科目!")  
247 - return 307 + if (this.query.subjectNames.length == 0) {
  308 + this.$message.warning("请选择科目!");
  309 + return;
  310 + }
  311 + let query = { ...this.query };
  312 + if (this.role == "ROLE_BANZHUREN") {
  313 + query.classId = [query.classId];
248 } 314 }
249 this.$router.push({ 315 this.$router.push({
250 - path: '/testList', 316 + path: "/testList",
251 query: { 317 query: {
252 - params: JSON.stringify(this.query)  
253 - }  
254 - })  
255 - } 318 + params: JSON.stringify(query),
  319 + },
  320 + });
  321 + },
256 }, 322 },
257 }; 323 };
258 </script> 324 </script>
@@ -270,7 +336,7 @@ div::-webkit-scrollbar-thumb { @@ -270,7 +336,7 @@ div::-webkit-scrollbar-thumb {
270 <style lang="scss" scoped> 336 <style lang="scss" scoped>
271 .main { 337 .main {
272 height: 100%; 338 height: 100%;
273 - background: rgba($color: #000000, $alpha: .3); 339 + background: rgba($color: #000000, $alpha: 0.3);
274 display: flex; 340 display: flex;
275 justify-content: center; 341 justify-content: center;
276 } 342 }
src/views/basic/test/list.vue
@@ -5,83 +5,217 @@ @@ -5,83 +5,217 @@
5 <span>即时测-数据报表</span> 5 <span>即时测-数据报表</span>
6 </template> 6 </template>
7 <template slot="btns"> 7 <template slot="btns">
8 - <el-tooltip v-if="!code && gdClass" effect="dark" content="已归档试卷" placement="bottom">  
9 - <el-button type="primary" icon="fa fa-archive" size="mini" plain circle @click="toArchiving"></el-button> 8 + <el-tooltip
  9 + v-if="!code && gdClass"
  10 + effect="dark"
  11 + content="已归档试卷"
  12 + placement="bottom"
  13 + >
  14 + <el-button
  15 + type="primary"
  16 + icon="fa fa-archive"
  17 + size="mini"
  18 + plain
  19 + circle
  20 + @click="toArchiving"
  21 + ></el-button>
10 </el-tooltip> 22 </el-tooltip>
11 </template> 23 </template>
12 </back-box> 24 </back-box>
13 <div v-show="!isDetail" class="table-box" v-loading="loading"> 25 <div v-show="!isDetail" class="table-box" v-loading="loading">
14 <div v-if="!isMultipleClass"> 26 <div v-if="!isMultipleClass">
15 <p class="btn-box"> 27 <p class="btn-box">
16 - <el-button type="primary" round @click="linkToDetail2">查看汇总报表</el-button> 28 + <el-button type="primary" round @click="linkToDetail2"
  29 + >查看汇总报表</el-button
  30 + >
17 </p> 31 </p>
18 - <el-table :data="tableData" :max-height="tableMaxHeight" border style="width: 100%"  
19 - @selection-change="handleSelectionChange">  
20 - <el-table-column type="selection" width="40"></el-table-column>  
21 - <el-table-column prop="subjectName" label="科目" align="center"></el-table-column>  
22 - <el-table-column prop="className" label="班级" align="center"></el-table-column>  
23 - <el-table-column prop="title" label="试卷名称" align="center"></el-table-column>  
24 - <el-table-column prop="examPaperScore" label="卷面分" align="center"></el-table-column> 32 + <el-table
  33 + :data="tableData"
  34 + :max-height="tableMaxHeight"
  35 + border
  36 + style="width: 100%"
  37 + @selection-change="handleSelectionChange"
  38 + >
  39 + <el-table-column width="40" v-if="role == 'ROLE_BANZHUREN'">
  40 + <template slot-scope="scope">
  41 + <el-checkbox
  42 + v-model="multipleSelection"
  43 + :label="scope.row.id"
  44 + ></el-checkbox>
  45 + </template>
  46 + </el-table-column>
  47 + <el-table-column type="selection" width="40" v-else></el-table-column>
  48 + <el-table-column
  49 + prop="subjectName"
  50 + label="科目"
  51 + align="center"
  52 + ></el-table-column>
  53 + <el-table-column
  54 + prop="className"
  55 + label="班级"
  56 + align="center"
  57 + ></el-table-column>
  58 + <el-table-column
  59 + prop="title"
  60 + label="试卷名称"
  61 + align="center"
  62 + ></el-table-column>
  63 + <el-table-column
  64 + prop="examPaperScore"
  65 + label="卷面分"
  66 + align="center"
  67 + ></el-table-column>
25 <el-table-column label="测验人数/班级人数" align="center"> 68 <el-table-column label="测验人数/班级人数" align="center">
26 - <template slot-scope="scoped">{{ `${scoped.row.answeredNum}/${scoped.row.classPersonNum}` }}</template> 69 + <template slot-scope="scoped">{{
  70 + `${scoped.row.answeredNum}/${scoped.row.classPersonNum}`
  71 + }}</template>
27 </el-table-column> 72 </el-table-column>
28 - <el-table-column prop="examStartTime" label="测验开始时间" align="center"></el-table-column> 73 + <el-table-column
  74 + prop="examStartTime"
  75 + label="测验开始时间"
  76 + align="center"
  77 + ></el-table-column>
29 <el-table-column label="操作" align="center"> 78 <el-table-column label="操作" align="center">
30 <template slot-scope="scoped"> 79 <template slot-scope="scoped">
31 - <el-tooltip v-if="scoped.row.answerNum != 0 || scoped.row.recordStatus != 0  
32 - " effect="dark" content="详情" placement="top">  
33 - <el-button type="primary" circle size="mini" icon="fa fa-arrow-right"  
34 - @click="linkTo(scoped.row)"></el-button> 80 + <el-tooltip
  81 + v-if="scoped.row.answerNum != 0 || scoped.row.recordStatus != 0"
  82 + effect="dark"
  83 + content="详情"
  84 + placement="top"
  85 + >
  86 + <el-button
  87 + type="primary"
  88 + circle
  89 + size="mini"
  90 + icon="fa fa-arrow-right"
  91 + @click="linkTo(scoped.row)"
  92 + ></el-button>
35 </el-tooltip> 93 </el-tooltip>
36 <template v-if="scoped.row.answerNum == 0"> 94 <template v-if="scoped.row.answerNum == 0">
37 - <el-tooltip v-if="role != 'ROLE_BANZHUREN'" effect="dark" content="设置答案" placement="top">  
38 - <el-button type="primary" circle size="mini" icon="fa fa-file-text"  
39 - @click="edit(scoped.row)"></el-button> 95 + <el-tooltip
  96 + v-if="role != 'ROLE_BANZHUREN'"
  97 + effect="dark"
  98 + content="设置答案"
  99 + placement="top"
  100 + >
  101 + <el-button
  102 + type="primary"
  103 + circle
  104 + size="mini"
  105 + icon="fa fa-file-text"
  106 + @click="edit(scoped.row)"
  107 + ></el-button>
40 </el-tooltip> 108 </el-tooltip>
41 <template v-else>未设置答案</template> 109 <template v-else>未设置答案</template>
42 </template> 110 </template>
43 <!-- <el-tooltip v-else effect="dark" content="答卷录分" placement="top"> 111 <!-- <el-tooltip v-else effect="dark" content="答卷录分" placement="top">
44 <el-button type="primary" circle size="mini" @click="openScoreSet(scoped.row)">分</el-button> 112 <el-button type="primary" circle size="mini" @click="openScoreSet(scoped.row)">分</el-button>
45 </el-tooltip> --> 113 </el-tooltip> -->
46 - <el-tooltip v-else effect="dark" content="答卷录分" placement="top">  
47 - <el-button type="primary" circle size="mini" @click="openScoreSet(scoped.row)">分</el-button> 114 + <el-tooltip
  115 + v-else
  116 + effect="dark"
  117 + content="答卷录分"
  118 + placement="top"
  119 + >
  120 + <el-button
  121 + type="primary"
  122 + circle
  123 + size="mini"
  124 + @click="openScoreSet(scoped.row)"
  125 + >分</el-button
  126 + >
48 </el-tooltip> 127 </el-tooltip>
49 - <el-popconfirm v-if="role != 'ROLE_BANZHUREN'" title="确定删除吗?"  
50 - @confirm="removeReport(scoped.row, scoped.$index)">  
51 - <el-button class="remove-test" slot="reference" type="danger" circle size="mini" icon="el-icon-delete"  
52 - :loading="scoped.row.loading"></el-button> 128 + <el-popconfirm
  129 + v-if="role != 'ROLE_BANZHUREN'"
  130 + title="确定删除吗?"
  131 + @confirm="removeReport(scoped.row, scoped.$index)"
  132 + >
  133 + <el-button
  134 + class="remove-test"
  135 + slot="reference"
  136 + type="danger"
  137 + circle
  138 + size="mini"
  139 + icon="el-icon-delete"
  140 + :loading="scoped.row.loading"
  141 + ></el-button>
53 </el-popconfirm> 142 </el-popconfirm>
54 </template> 143 </template>
55 </el-table-column> 144 </el-table-column>
56 </el-table> 145 </el-table>
57 <div class="pagination-box"> 146 <div class="pagination-box">
58 - <el-pagination small="" layout="total,prev, pager, next" :hide-on-single-page="true" :total="total"  
59 - @current-change="changePage" :current-page="page" :page-size="size"> 147 + <el-pagination
  148 + small=""
  149 + layout="total,prev, pager, next"
  150 + :hide-on-single-page="true"
  151 + :total="total"
  152 + @current-change="changePage"
  153 + :current-page="page"
  154 + :page-size="size"
  155 + >
60 </el-pagination> 156 </el-pagination>
61 </div> 157 </div>
62 - <ScoreSet v-show="diaScoreSet" :diaScoreSet="diaScoreSet" :role="role" :id="examId" :title="examTitlt"  
63 - :examScore="examScore" @closeScoreSet="closeScoreSet" /> 158 + <ScoreSet
  159 + v-show="diaScoreSet"
  160 + :diaScoreSet="diaScoreSet"
  161 + :role="role"
  162 + :id="examId"
  163 + :title="examTitlt"
  164 + :examScore="examScore"
  165 + @closeScoreSet="closeScoreSet"
  166 + />
64 </div> 167 </div>
65 <div v-else> 168 <div v-else>
66 - <el-table :data="tableData" :max-height="tableMaxHeight" border style="width: 100%">  
67 - <el-table-column prop="subjectName" label="科目" align="center"></el-table-column> 169 + <el-table
  170 + :data="tableData"
  171 + :max-height="tableMaxHeight"
  172 + border
  173 + style="width: 100%"
  174 + >
  175 + <el-table-column
  176 + prop="subjectName"
  177 + label="科目"
  178 + align="center"
  179 + ></el-table-column>
68 <el-table-column prop="classList" label="班级" align="center"> 180 <el-table-column prop="classList" label="班级" align="center">
69 <template slot-scope="scoped"> 181 <template slot-scope="scoped">
70 - <span v-for="(item, index) in scoped.row.classNames">{{ `${index == 0 ? '' : '/'}` + item }}</span> 182 + <span v-for="(item, index) in scoped.row.classNames">{{
  183 + `${index == 0 ? "" : "/"}` + item
  184 + }}</span>
71 </template> 185 </template>
72 </el-table-column> 186 </el-table-column>
73 - <el-table-column prop="title" label="试卷名称" align="center"></el-table-column>  
74 - <el-table-column prop="examPaperScore" label="卷面分" align="center"></el-table-column> 187 + <el-table-column
  188 + prop="title"
  189 + label="试卷名称"
  190 + align="center"
  191 + ></el-table-column>
  192 + <el-table-column
  193 + prop="examPaperScore"
  194 + label="卷面分"
  195 + align="center"
  196 + ></el-table-column>
75 <el-table-column label="操作" align="center"> 197 <el-table-column label="操作" align="center">
76 <template slot-scope="scoped"> 198 <template slot-scope="scoped">
77 - <el-button type="primary" circle size="mini" icon="el-icon-arrow-right"  
78 - @click="linkContrast(scoped.row)"></el-button> 199 + <el-button
  200 + type="primary"
  201 + circle
  202 + size="mini"
  203 + icon="el-icon-arrow-right"
  204 + @click="linkContrast(scoped.row)"
  205 + ></el-button>
79 </template> 206 </template>
80 </el-table-column> 207 </el-table-column>
81 </el-table> 208 </el-table>
82 <div class="pagination-box"> 209 <div class="pagination-box">
83 - <el-pagination small="" layout="total,prev, pager, next" :hide-on-single-page="true" :total="total"  
84 - @current-change="changePage" :current-page="page" :page-size="size"> 210 + <el-pagination
  211 + small=""
  212 + layout="total,prev, pager, next"
  213 + :hide-on-single-page="true"
  214 + :total="total"
  215 + @current-change="changePage"
  216 + :current-page="page"
  217 + :page-size="size"
  218 + >
85 </el-pagination> 219 </el-pagination>
86 </div> 220 </div>
87 </div> 221 </div>
@@ -91,10 +225,10 @@ @@ -91,10 +225,10 @@
91 </template> 225 </template>
92 226
93 <script> 227 <script>
94 -import ScoreSet from "./components/scoreSet.vue" 228 +import ScoreSet from "./components/scoreSet.vue";
95 export default { 229 export default {
96 components: { 230 components: {
97 - ScoreSet 231 + ScoreSet,
98 }, 232 },
99 data() { 233 data() {
100 return { 234 return {
@@ -104,9 +238,9 @@ export default { @@ -104,9 +238,9 @@ export default {
104 role: "", 238 role: "",
105 loading: false, 239 loading: false,
106 diaScoreSet: false, 240 diaScoreSet: false,
107 - examId: "",//当前操作试卷  
108 - examTitlt: "",//当前操作试卷名称  
109 - examScore: 0,//当前操作试卷卷面总分 241 + examId: "", //当前操作试卷
  242 + examTitlt: "", //当前操作试卷名称
  243 + examScore: 0, //当前操作试卷卷面总分
110 query: { 244 query: {
111 //搜索条件 245 //搜索条件
112 classId: [], 246 classId: [],
@@ -124,13 +258,13 @@ export default { @@ -124,13 +258,13 @@ export default {
124 }, 258 },
125 computed: { 259 computed: {
126 isDetail: function () { 260 isDetail: function () {
127 - let bol = (this.$route.name == "即时测报表分析") ? true : false  
128 - return bol  
129 - } 261 + let bol = this.$route.name == "即时测报表分析" ? true : false;
  262 + return bol;
  263 + },
130 }, 264 },
131 async created() { 265 async created() {
132 this.code = this.$store.getters.csCode; 266 this.code = this.$store.getters.csCode;
133 - this.init() 267 + this.init();
134 }, 268 },
135 mounted() { 269 mounted() {
136 this.tableMaxHeight = this.$refs.main.offsetHeight; 270 this.tableMaxHeight = this.$refs.main.offsetHeight;
@@ -139,30 +273,30 @@ export default { @@ -139,30 +273,30 @@ export default {
139 "$route.query.params": function (nVal) { 273 "$route.query.params": function (nVal) {
140 let isFromTestDetail = sessionStorage.getItem("isFromTestDetail"); 274 let isFromTestDetail = sessionStorage.getItem("isFromTestDetail");
141 if (!isFromTestDetail && nVal) { 275 if (!isFromTestDetail && nVal) {
142 - this.init() 276 + this.init();
143 } 277 }
144 - } 278 + },
145 }, 279 },
146 methods: { 280 methods: {
147 //初始化 281 //初始化
148 init() { 282 init() {
149 - const queryData = this.$route.query.params  
150 - queryData ? this.query = { ...this.query, ...JSON.parse(queryData) } : ''  
151 - console.log(this.query)  
152 - this.$store.commit('setClasses', this.query.classId.join(','))  
153 - if (this.query.classId.length > 1) {  
154 - this.isMultipleClass = true  
155 - } 283 + const queryData = this.$route.query.params;
  284 + queryData
  285 + ? (this.query = { ...this.query, ...JSON.parse(queryData) })
  286 + : "";
  287 + console.log(this.query);
  288 + this.$store.commit("setClasses", this.query.classId.join(","));
  289 + this.isMultipleClass = false;
156 this.role = 290 this.role =
157 this.$store.getters.info.showRole || 291 this.$store.getters.info.showRole ||
158 this.$store.getters.info.permissions[0].role; 292 this.$store.getters.info.permissions[0].role;
159 if (this.role != "ROLE_PERSONAL") { 293 if (this.role != "ROLE_PERSONAL") {
160 - this._QueryGdClass() 294 + this._QueryGdClass();
161 } 295 }
162 - this.page = 1  
163 - this.total = 0  
164 - this.tableData = []  
165 - this._QueryData() 296 + this.page = 1;
  297 + this.total = 0;
  298 + this.tableData = [];
  299 + this._QueryData();
166 }, 300 },
167 //归档列表 301 //归档列表
168 toArchiving() { 302 toArchiving() {
@@ -182,23 +316,23 @@ export default { @@ -182,23 +316,23 @@ export default {
182 type: 1, 316 type: 1,
183 subjectName: obj.subjectName, 317 subjectName: obj.subjectName,
184 classId: this.query.classId[0], 318 classId: this.query.classId[0],
185 - params: this.$route.query.params 319 + params: this.$route.query.params,
186 }, 320 },
187 }); 321 });
188 }, 322 },
189 //汇总跳转-多卷 323 //汇总跳转-多卷
190 linkToDetail2() { 324 linkToDetail2() {
191 if (this.multipleSelection.length == 0) { 325 if (this.multipleSelection.length == 0) {
192 - this.$message.warning("请选择试卷!")  
193 - return  
194 - };  
195 - let subjectArr = []  
196 - const ids = this.multipleSelection.map(item => {  
197 - subjectArr.push(item.subjectName)  
198 - return item.id  
199 - })  
200 - subjectArr = [...new Set(subjectArr)]  
201 - console.log(subjectArr) 326 + this.$message.warning("请选择试卷!");
  327 + return;
  328 + }
  329 + let subjectArr = [];
  330 + const ids = this.multipleSelection.map((item) => {
  331 + subjectArr.push(item.subjectName);
  332 + return item.id;
  333 + });
  334 + subjectArr = [...new Set(subjectArr)];
  335 + console.log(subjectArr);
202 if (ids.length == 1) { 336 if (ids.length == 1) {
203 this.$router.push({ 337 this.$router.push({
204 path: "/testAnalysis", 338 path: "/testAnalysis",
@@ -209,7 +343,7 @@ export default { @@ -209,7 +343,7 @@ export default {
209 type: 1, 343 type: 1,
210 subjectName: subjectArr.join(), 344 subjectName: subjectArr.join(),
211 classId: this.query.classId[0], 345 classId: this.query.classId[0],
212 - params: this.$route.query.params 346 + params: this.$route.query.params,
213 }, 347 },
214 }); 348 });
215 } else { 349 } else {
@@ -221,24 +355,24 @@ export default { @@ -221,24 +355,24 @@ export default {
221 classId: this.query.classId[0], 355 classId: this.query.classId[0],
222 type: subjectArr.length == 1 ? 2 : 3, 356 type: subjectArr.length == 1 ? 2 : 3,
223 subjectName: subjectArr.join(), 357 subjectName: subjectArr.join(),
224 - params: this.$route.query.params 358 + params: this.$route.query.params,
225 }, 359 },
226 }); 360 });
227 } 361 }
228 }, 362 },
229 // 多班对比 363 // 多班对比
230 linkContrast(obj) { 364 linkContrast(obj) {
231 - console.log(obj) 365 + console.log(obj);
232 this.$router.push({ 366 this.$router.push({
233 path: "/testAnalysis", 367 path: "/testAnalysis",
234 query: { 368 query: {
235 - ids: obj.ids.join(','),  
236 - classId: obj.classIds.join(','), 369 + ids: obj.ids.join(","),
  370 + classId: obj.classIds.join(","),
237 subjectName: obj.subjectName, 371 subjectName: obj.subjectName,
238 title: obj.title, 372 title: obj.title,
239 type: 4, 373 type: 4,
240 examPaperScore: obj.examPaperScore, 374 examPaperScore: obj.examPaperScore,
241 - params: this.$route.query.params 375 + params: this.$route.query.params,
242 }, 376 },
243 }); 377 });
244 }, 378 },
@@ -247,7 +381,7 @@ export default { @@ -247,7 +381,7 @@ export default {
247 }, 381 },
248 //打开答卷录分 382 //打开答卷录分
249 openScoreSet(obj) { 383 openScoreSet(obj) {
250 - console.log(obj) 384 + console.log(obj);
251 this.examId = String(obj.id); 385 this.examId = String(obj.id);
252 this.examTitlt = obj.title; 386 this.examTitlt = obj.title;
253 this.examScore = obj.examPaperScore; 387 this.examScore = obj.examPaperScore;
@@ -255,7 +389,7 @@ export default { @@ -255,7 +389,7 @@ export default {
255 }, 389 },
256 //关闭设置分数 390 //关闭设置分数
257 closeScoreSet() { 391 closeScoreSet() {
258 - this.diaScoreSet = false 392 + this.diaScoreSet = false;
259 }, 393 },
260 //修改答案 394 //修改答案
261 edit(item) { 395 edit(item) {
@@ -303,19 +437,21 @@ export default { @@ -303,19 +437,21 @@ export default {
303 let query = {}; 437 let query = {};
304 for (let key in this.query) { 438 for (let key in this.query) {
305 if (this.query[key] != "") { 439 if (this.query[key] != "") {
306 - if (key == 'classId') { 440 + if (key == "classId") {
307 if (this.query.classId?.length == 1) { 441 if (this.query.classId?.length == 1) {
308 - query.classId = this.query[key][0] 442 + query.classId = this.query[key][0];
309 } else { 443 } else {
310 - query.classIds = [...this.query[key]] 444 + query.classIds = [...this.query[key]];
311 } 445 }
312 } else { 446 } else {
313 query[key] = this.query[key]; 447 query[key] = this.query[key];
314 } 448 }
315 } 449 }
316 } 450 }
317 - const examReportList = this.role == "ROLE_PERSONAL" ?  
318 - this.$request.pExamReportList : this.$request.examReportList 451 + const examReportList =
  452 + this.role == "ROLE_PERSONAL"
  453 + ? this.$request.pExamReportList
  454 + : this.$request.examReportList;
319 const { data, status, info } = await examReportList({ 455 const { data, status, info } = await examReportList({
320 ...query, 456 ...query,
321 page: this.page, 457 page: this.page,
@@ -323,44 +459,60 @@ export default { @@ -323,44 +459,60 @@ export default {
323 }); 459 });
324 this.loading = false; 460 this.loading = false;
325 if (status === 0) { 461 if (status === 0) {
326 - if (this.query.classId.length > 1) {  
327 - //多班级  
328 - let tableObj = {}; 462 + if (this.role == "ROLE_BANZHUREN") {
  463 + this.tableData = (data?.list && [...data?.list]) || [];
  464 + this.total = data?.count || 0;
  465 + } else {
  466 + this.isMultipleClass = true;
  467 + let classArr = [];
329 data?.list?.map((item) => { 468 data?.list?.map((item) => {
330 - if (tableObj[item.examPaperId]) {  
331 - // 没有班级考试的添加  
332 - if (!tableObj[item.examPaperId].classIds.includes(item.classId)) {  
333 - tableObj[item.examPaperId].ids.push(item.id)  
334 - tableObj[item.examPaperId].classIds.push(item.classId)  
335 - tableObj[item.examPaperId].classNames.push(item.className)  
336 - } else {  
337 - //已经考过班级的新的替换老的  
338 - let idx = tableObj[item.examPaperId].classIds.indexOf(item.classId)  
339 - if (tableObj[item.examPaperId].ids[idx] < item.id) {  
340 - tableObj[item.examPaperId].ids[idx] = [item.id]  
341 - tableObj[item.examPaperId].title = item.title 469 + if (!classArr.includes(item.classId)) {
  470 + classArr.push(item.classId);
  471 + }
  472 + });
  473 + if (classArr.length > 1) {
  474 + //多班级
  475 + let tableObj = {};
  476 + data?.list?.map((item) => {
  477 + if (tableObj[item.examPaperId]) {
  478 + // 没有班级考试的添加
  479 + if (
  480 + !tableObj[item.examPaperId].classIds.includes(item.classId)
  481 + ) {
  482 + tableObj[item.examPaperId].ids.push(item.id);
  483 + tableObj[item.examPaperId].classIds.push(item.classId);
  484 + tableObj[item.examPaperId].classNames.push(item.className);
  485 + } else {
  486 + //已经考过班级的新的替换老的
  487 + let idx = tableObj[item.examPaperId].classIds.indexOf(
  488 + item.classId
  489 + );
  490 + if (tableObj[item.examPaperId].ids[idx] < item.id) {
  491 + tableObj[item.examPaperId].ids[idx] = [item.id];
  492 + tableObj[item.examPaperId].title = item.title;
  493 + }
342 } 494 }
  495 + } else {
  496 + tableObj[item.examPaperId] = {
  497 + ids: [item.id],
  498 + examPaperId: item.examPaperId,
  499 + classIds: [item.classId],
  500 + classNames: [item.className],
  501 + title: item.title,
  502 + examPaperScore: item.examPaperScore,
  503 + subjectName: item.subjectName,
  504 + };
343 } 505 }
344 - } else {  
345 - tableObj[item.examPaperId] = {  
346 - ids: [item.id],  
347 - examPaperId: item.examPaperId,  
348 - classIds: [item.classId],  
349 - classNames: [item.className],  
350 - title: item.title,  
351 - examPaperScore: item.examPaperScore,  
352 - subjectName: item.subjectName 506 + });
  507 + Object.keys(tableObj).map((keys) => {
  508 + if (tableObj[keys].classIds.length > 1) {
  509 + this.tableData.push(tableObj[keys]);
353 } 510 }
354 - }  
355 - });  
356 - Object.keys(tableObj).map(keys => {  
357 - if (tableObj[keys].classIds.length > 1) {  
358 - this.tableData.push(tableObj[keys])  
359 - }  
360 - })  
361 - } else {  
362 - this.tableData = (data?.list && [...data?.list]) || [];  
363 - this.total = data?.count || 0; 511 + });
  512 + } else {
  513 + this.tableData = (data?.list && [...data?.list]) || [];
  514 + this.total = data?.count || 0;
  515 + }
364 } 516 }
365 } else { 517 } else {
366 this.$message.error(info); 518 this.$message.error(info);