Blame view

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