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>
 
 |