86201e49
梁保满
即时测模块
|
1
2
3
|
<template>
<div class="table-box" ref="main" v-loading="loading">
<div id="print-content">
|
b0cd2598
梁保满
fix:测试问题
|
4
5
6
7
8
9
10
11
12
13
14
15
|
<el-table
:max-height="tableMaxHeight"
:data="tableData"
border
style="width: 100%"
>
<el-table-column
prop="studentCode"
label="学号"
align="center"
fixed
></el-table-column>
|
86201e49
梁保满
即时测模块
|
16
|
<el-table-column prop="studentName" label="姓名" fixed align="center">
|
7222c2eb
梁保满
汇总前置条件修改,教学,行政可汇总
|
17
18
19
|
<template slot-scope="scoped">
{{ scoped.row.studentName }}
</template></el-table-column
|
b0cd2598
梁保满
fix:测试问题
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
>
<el-table-column
align="center"
v-for="(item, index) in answerList"
:key="index"
:label="item.title"
>
<el-table-column
:prop="'score' + index"
:label="index == 0 ? '总分' : '成绩'"
align="center"
:class-name="index % 2 == 0 ? 'bg' : ''"
></el-table-column>
<el-table-column
:prop="'classRank' + index"
label="班名"
align="center"
sortable
:class-name="index % 2 == 0 ? 'bg' : ''"
></el-table-column>
|
86201e49
梁保满
即时测模块
|
40
41
42
|
</el-table-column>
<el-table-column label="查看折线图" align="center">
<template slot-scope="scoped">
|
b0cd2598
梁保满
fix:测试问题
|
43
44
45
46
47
48
49
|
<el-button
@click="openChart(scoped.row)"
type="primary"
size="mini"
circle
icon="el-icon-arrow-right"
></el-button>
|
86201e49
梁保满
即时测模块
|
50
51
52
53
54
|
</template>
</el-table-column>
</el-table>
</div>
<div class="down">
|
b0cd2598
梁保满
fix:测试问题
|
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
<el-button
@click="openDown"
type="primary"
plain
round
icon="fa fa-cloud-download"
>导出报表</el-button
>
<el-button
v-if="!this.$store.getters.code"
@click="print"
type="primary"
plain
round
icon="el-icon-printer"
>打印</el-button
>
|
86201e49
梁保满
即时测模块
|
72
|
</div>
|
b0cd2598
梁保满
fix:测试问题
|
73
74
75
76
77
78
|
<el-dialog
class="chart-dia"
:visible.sync="chartDia"
:title="chartTitle"
width="800"
>
|
86201e49
梁保满
即时测模块
|
79
|
<div class="chart-box">
|
b0cd2598
梁保满
fix:测试问题
|
80
81
82
83
84
85
|
<LineChart
id="lineChart"
:params="chartData"
:xAxis="xAxis"
:formatterYAxis="false"
/>
|
86201e49
梁保满
即时测模块
|
86
87
|
</div>
</el-dialog>
|
b0cd2598
梁保满
fix:测试问题
|
88
89
90
91
92
93
94
|
<ExportDia
:exportStudent="exportStudent"
:diaShow="diaShow"
@cancel="cancel"
@exportData="exportData"
lastLabel="总分"
/>
|
86201e49
梁保满
即时测模块
|
95
96
97
98
|
</div>
<!-- 单科多卷 -->
</template>
<script>
|
b0cd2598
梁保满
fix:测试问题
|
99
|
import LineChart from "@/components/charts/lineChart";
|
86201e49
梁保满
即时测模块
|
100
101
102
103
104
105
|
import { downloadFile, tablePrint } from "@/utils";
export default {
components: { LineChart },
props: {
role: "",
ids: Array,
|
7222c2eb
梁保满
汇总前置条件修改,教学,行政可汇总
|
106
|
classIds: Array,
|
86201e49
梁保满
即时测模块
|
107
108
109
110
111
112
113
114
115
116
117
118
119
|
subjectName: String,
},
data() {
return {
tableMaxHeight: null,
answerList: [], //设置多卷内容供tableStage表格数据用
tableData: [],
loading: false,
exportLoading: false,
chartDia: false,
studentName: "",
xAxis: [],
chartData: [],
|
e17ec739
梁保满
随堂问,即时测导出爆表修改
|
120
121
122
|
//导出相关
diaShow: false,
|
b0cd2598
梁保满
fix:测试问题
|
123
124
|
exportStudent: [],
};
|
86201e49
梁保满
即时测模块
|
125
126
127
|
},
computed: {
chartTitle: function () {
|
b0cd2598
梁保满
fix:测试问题
|
128
129
|
return `${this.studentName}-${this.subjectName}-多课时作答表现图`;
},
|
86201e49
梁保满
即时测模块
|
130
131
|
},
created() {
|
b0cd2598
梁保满
fix:测试问题
|
132
|
this.phaseExamReport();
|
86201e49
梁保满
即时测模块
|
133
134
135
136
137
138
|
},
mounted() {
this.tableMaxHeight = this.$refs.main.offsetHeight;
},
methods: {
print() {
|
b0cd2598
梁保满
fix:测试问题
|
139
|
tablePrint("print-content", this.subjectName + "汇总报表");
|
86201e49
梁保满
即时测模块
|
140
|
},
|
86201e49
梁保满
即时测模块
|
141
142
|
//查看折线图
openChart(obj) {
|
b0cd2598
梁保满
fix:测试问题
|
143
144
145
146
147
148
149
150
151
152
153
154
|
this.studentName = obj.studentName;
this.chartDia = true;
let score = [];
let classRank = [];
let avgScore = [];
const examList = obj.examList.slice(1, obj.examList.length);
this.xAxis = examList.map((item) => {
score.push(item.score);
classRank.push(item.classRank);
avgScore.push(item.avgScore);
return item.title;
});
|
86201e49
梁保满
即时测模块
|
155
156
|
this.chartData = [
{
|
22095aba
梁保满
接口联调
|
157
|
name: "班级排名",
|
b0cd2598
梁保满
fix:测试问题
|
158
|
value: classRank,
|
86201e49
梁保满
即时测模块
|
159
160
|
},
{
|
22095aba
梁保满
接口联调
|
161
|
name: "班平均分",
|
b0cd2598
梁保满
fix:测试问题
|
162
|
value: avgScore,
|
86201e49
梁保满
即时测模块
|
163
164
|
},
{
|
22095aba
梁保满
接口联调
|
165
|
name: "个人成绩",
|
b0cd2598
梁保满
fix:测试问题
|
166
|
value: score,
|
86201e49
梁保满
即时测模块
|
167
|
},
|
b0cd2598
梁保满
fix:测试问题
|
168
|
];
|
86201e49
梁保满
即时测模块
|
169
170
171
172
173
174
175
176
|
},
async phaseExamReport() {
this.loading = true;
const phaseExamReport =
this.role == "ROLE_PERSONAL"
? this.$request.pPhaseExamReport
: this.$request.phaseExamReport;
const { data, status, info } = await phaseExamReport({
|
7222c2eb
梁保满
汇总前置条件修改,教学,行政可汇总
|
177
|
classIds: this.classIds,
|
86201e49
梁保满
即时测模块
|
178
|
examIds: this.ids,
|
b0cd2598
梁保满
fix:测试问题
|
179
|
subjectName: this.subjectName,
|
86201e49
梁保满
即时测模块
|
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
|
});
this.loading = false;
if (status === 0) {
this.total = data.count;
let dataIdsList = [],
dataList = [];
data?.list.map((item) => {
item.examList.map((items) => {
if (!dataIdsList.includes(items.title)) {
dataIdsList.push(items.title);
dataList.push(items);
}
});
});
this.tableData = data?.list.map((item) => {
let params = {};
dataIdsList.map((ids, index) => {
params["score" + index] = "--";
params["classRank" + index] = "--";
item.examList.map((items) => {
if (items.title == ids) {
|
384a2a54
梁保满
请求头添加班主任信息,bug修改
|
201
|
params["score" + index] = Number(items.score);
|
86201e49
梁保满
即时测模块
|
202
203
204
205
206
207
208
209
210
211
|
params["classRank" + index] = items.classRank;
}
});
});
return {
...item,
...params,
};
});
this.answerList = dataList;
|
e17ec739
梁保满
随堂问,即时测导出爆表修改
|
212
|
|
b0cd2598
梁保满
fix:测试问题
|
213
|
this.exportStudent = [...this.tableData];
|
86201e49
梁保满
即时测模块
|
214
215
216
217
218
|
} else {
this.$message.error(info);
}
},
//导出
|
e17ec739
梁保满
随堂问,即时测导出爆表修改
|
219
220
221
222
223
224
225
|
openDown() {
this.diaShow = true;
},
cancel() {
this.diaShow = false;
},
async exportData(arr) {
|
86201e49
梁保满
即时测模块
|
226
227
|
if (this.exportLoading == true) return;
this.exportLoading = true;
|
b0cd2598
梁保满
fix:测试问题
|
228
|
let studentIds = arr;
|
e17ec739
梁保满
随堂问,即时测导出爆表修改
|
229
|
let query = {};
|
b0cd2598
梁保满
fix:测试问题
|
230
|
if (studentIds != null) {
|
ce278878
梁保满
2-2 bugfix
|
231
|
if (studentIds.length > 0) {
|
b0cd2598
梁保满
fix:测试问题
|
232
|
query.studentIds = studentIds;
|
ce278878
梁保满
2-2 bugfix
|
233
|
} else {
|
b0cd2598
梁保满
fix:测试问题
|
234
|
query.studentIds = [];
|
ce278878
梁保满
2-2 bugfix
|
235
|
}
|
e17ec739
梁保满
随堂问,即时测导出爆表修改
|
236
|
}
|
b0cd2598
梁保满
fix:测试问题
|
237
238
239
240
|
const exportPhaseExamReport =
this.role == "ROLE_PERSONAL"
? this.$request.pExportPhaseExamReport
: this.$request.exportPhaseExamReport;
|
86201e49
梁保满
即时测模块
|
241
|
const data = await exportPhaseExamReport({
|
7222c2eb
梁保满
汇总前置条件修改,教学,行政可汇总
|
242
|
classIds: this.classIds,
|
049db2b2
梁保满
接口联调
|
243
|
examIds: this.ids,
|
b0cd2598
梁保满
fix:测试问题
|
244
|
...query,
|
86201e49
梁保满
即时测模块
|
245
246
247
248
249
250
251
|
});
this.exportLoading = false;
if (data) {
let blob = new Blob([data], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
});
downloadFile("即时测-单科多卷报表.xlsx", blob);
|
f9916d4c
梁保满
导出摸板
|
252
|
this.$message.success("下载成功");
|
b0cd2598
梁保满
fix:测试问题
|
253
|
this.cancel();
|
86201e49
梁保满
即时测模块
|
254
255
256
257
|
} else {
this.$message.error("下载失败");
}
},
|
b0cd2598
梁保满
fix:测试问题
|
258
|
},
|
86201e49
梁保满
即时测模块
|
259
260
261
262
263
264
265
266
267
268
269
270
271
272
|
};
</script>
<style lang="scss" scoped>
.table-box {
padding: 20px;
}
.down {
padding-top: 20px;
width: 100%;
display: flex;
justify-content: space-between;
}
|
86201e49
梁保满
即时测模块
|
273
274
275
276
277
278
279
280
281
282
283
|
.chart-dia {
.chart-box {
width: 100%;
height: 300px;
}
:deep(.el-dialog__body) {
padding: 0 0 20px 0;
}
}
</style>
|