Blame view

src/views/basic/ask/analysis.vue 12.2 KB
4c4f7640   梁保满   路由表,路由前端文件
1
  <template>
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
2
3
4
    <div>
      <back-box>
        <template slot="title">
049db2b2   梁保满   接口联调
5
          <span>{{
696f2d42   梁保满   fix:报表导出问题
6
7
8
9
10
11
            types == 1
              ? "单课分析"
              : types == 2
              ? `${className}-${subjectNames[0]}汇总分析`
              : `${className}-多科汇总分析`
          }}</span>
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
12
13
        </template>
      </back-box>
ee6e7628   梁保满   备题组卷借口数据对接调整
14
15
      <div class="page-content">
        <div class="tab-box">
696f2d42   梁保满   fix:报表导出问题
16
17
18
19
20
21
22
23
          <span
            class="tab-item"
            v-for="(item, index) in tabList"
            :key="index"
            :class="type == item.value ? 'active' : ''"
            @click="setType(item.value)"
            >{{ item.name }}</span
          >
ee6e7628   梁保满   备题组卷借口数据对接调整
24
        </div>
9309dc5d   梁保满   任课老师接口完成
25
        <div v-loading="loading">
e371f2dc   梁保满   软件下载,学校,班级老师等报表导入...
26
          <div id="print-content">
d01c5799   梁保满   随堂问 报表开发
27
            <!-- 学生答题情况 -->
049db2b2   梁保满   接口联调
28
            <Detail v-if="type == 1" :types="types" :detail="detail" :id="id" />
d01c5799   梁保满   随堂问 报表开发
29
30
31
            <!-- 学生答题情况 -->
            <Example v-if="type == 1" :types="types" :tableData="tableData" />
            <!-- 学生问答 -->
696f2d42   梁保满   fix:报表导出问题
32
33
34
35
36
37
            <AnswerQustion
              v-if="type == 2"
              :types="types"
              :tableData="tableData"
              :subjectNames="subjectNames"
            />
d01c5799   梁保满   随堂问 报表开发
38
39
40
41
            <!-- 学生互动表现 -->
            <Interact v-if="type == 3" :types="types" :tableData="tableData" />
            <!-- 签到明细 -->
            <Report v-if="type == 4" :tableData="tableData" />
e371f2dc   梁保满   软件下载,学校,班级老师等报表导入...
42
          </div>
9309dc5d   梁保满   任课老师接口完成
43
          <div class="pagination-box" v-show="type == 1">
696f2d42   梁保满   fix:报表导出问题
44
45
46
47
48
49
50
51
52
            <el-pagination
              small=""
              layout="total,prev, pager, next"
              :hide-on-single-page="true"
              :total="total"
              @current-change="changePage"
              :current-page="page"
              :page-size="size"
            >
9309dc5d   梁保满   任课老师接口完成
53
54
55
            </el-pagination>
          </div>
          <p class="down">
696f2d42   梁保满   fix:报表导出问题
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
            <el-button
              v-if="types == 1"
              @click="exportData"
              type="primary"
              plain
              round
              icon="fa fa-cloud-download"
              >导出报表</el-button
            >
            <el-button
              v-else
              @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
            >
9309dc5d   梁保满   任课老师接口完成
83
84
          </p>
        </div>
696f2d42   梁保满   fix:报表导出问题
85
86
87
88
89
90
91
        <ExportDia
          :exportStudent="exportStudent"
          :diaShow="diaShow"
          @cancel="cancel"
          @exportData="exportData"
          :type="types == 3 ? '雷达图' : '折线图'"
        />
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
92
      </div>
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
93
    </div>
4c4f7640   梁保满   路由表,路由前端文件
94
95
96
  </template>
  
  <script>
3617eaad   梁保满   长水账号设置
97
  import { downloadFile, tablePrint } from "@/utils";
696f2d42   梁保满   fix:报表导出问题
98
99
100
101
102
  import Detail from "./components/detail.vue";
  import Example from "./components/example.vue";
  import AnswerQustion from "./components/answerQustion.vue";
  import Interact from "./components/interact.vue";
  import Report from "./components/report.vue";
ee6e7628   梁保满   备题组卷借口数据对接调整
103
  export default {
d01c5799   梁保满   随堂问 报表开发
104
    components: {
696f2d42   梁保满   fix:报表导出问题
105
106
107
108
109
      Detail,
      Example,
      AnswerQustion,
      Interact,
      Report,
d01c5799   梁保满   随堂问 报表开发
110
    },
ee6e7628   梁保满   备题组卷借口数据对接调整
111
112
    data() {
      return {
d01c5799   梁保满   随堂问 报表开发
113
        role: "",
9309dc5d   梁保满   任课老师接口完成
114
        loading: false,
7222c2eb   梁保满   汇总前置条件修改,教学,行政可汇总
115
        classIds: [],
049db2b2   梁保满   接口联调
116
        className: "",
22095aba   梁保满   接口联调
117
        subjectNames: "",
d01c5799   梁保满   随堂问 报表开发
118
        id: [],
ee6e7628   梁保满   备题组卷借口数据对接调整
119
        type: 1,
d01c5799   梁保满   随堂问 报表开发
120
        tabList: [],
9309dc5d   梁保满   任课老师接口完成
121
122
        detail: {},
        tableData: [],
9309dc5d   梁保满   任课老师接口完成
123
124
125
        page: 1,
        size: 20,
        total: 0,
e5e4a3e6   梁保满   v1.3
126
        status: 0,
e17ec739   梁保满   随堂问,即时测导出爆表修改
127
128
        //导出相关
        diaShow: false,
9865dde4   梁保满   数据同步
129
        exportStudent: [],
ee6e7628   梁保满   备题组卷借口数据对接调整
130
131
132
      };
    },
    created() {
d01c5799   梁保满   随堂问 报表开发
133
134
135
      this.role =
        this.$store.getters.info.showRole ||
        this.$store.getters.info.permissions[0].role;
696f2d42   梁保满   fix:报表导出问题
136
      this.types = Number(this.$route.query.types);
109a6161   梁保满   班主任汇总选择问题
137
      // this.className = this.$route.query.className;
696f2d42   梁保满   fix:报表导出问题
138
      const queryData = JSON.parse(this.$route.query.params);
7222c2eb   梁保满   汇总前置条件修改,教学,行政可汇总
139
      this.classIds = this.$route.query.classIds;
696f2d42   梁保满   fix:报表导出问题
140
141
      console.log(this.$route.query);
      this.subjectNames = this.$route.query.subjectNames.split(",");
d01c5799   梁保满   随堂问 报表开发
142
      if (this.types == 1) {
696f2d42   梁保满   fix:报表导出问题
143
144
145
146
147
148
        this.tabList = [
          { name: "答题表现", value: 1 },
          { name: "学生问答表现", value: 2 },
          { name: "学生互动表现", value: 3 },
          { name: "签到明细", value: 4 },
        ];
d01c5799   梁保满   随堂问 报表开发
149
      } else if (this.types == 2) {
696f2d42   梁保满   fix:报表导出问题
150
151
152
153
154
        this.tabList = [
          { name: "答题表现", value: 1 },
          { name: "学生问答表现", value: 2 },
          { name: "学生互动表现", value: 3 },
        ];
d01c5799   梁保满   随堂问 报表开发
155
156
157
      } else if (this.types == 3) {
        this.tabList = [
          { name: "学生问答表现", value: 2 },
696f2d42   梁保满   fix:报表导出问题
158
159
          { name: "学生互动表现", value: 3 },
        ];
d01c5799   梁保满   随堂问 报表开发
160
      }
696f2d42   梁保满   fix:报表导出问题
161
162
      this.type = this.tabList[0].value;
      this.id = JSON.parse(this.$route.query.id);
e5e4a3e6   梁保满   v1.3
163
      this.status = this.$route.query.status ? this.$route.query.status : 0;
9309dc5d   梁保满   任课老师接口完成
164
      this._QueryData();
696f2d42   梁保满   fix:报表导出问题
165
      this.types != 1 ? this._QueryDataQuestionRank() : "";
109a6161   梁保满   班主任汇总选择问题
166
167
      // this.types != 3 ? this.periodDetail() : "";
      this.periodDetail();
ee6e7628   梁保满   备题组卷借口数据对接调整
168
169
    },
    methods: {
e371f2dc   梁保满   软件下载,学校,班级老师等报表导入...
170
      print() {
ddcd75d7   梁保满   教师二次管理数据问题
171
        let title = this.detail.title || this.subjectNames.join();
c410e3c4   梁保满   init
172
173
174
175
176
177
        let name = "";
        this.tabList.map((item) => {
          if (item.value == this.type) {
            name = item.name;
          }
        });
ddcd75d7   梁保满   教师二次管理数据问题
178
179
180
181
        if (this.types == 2) {
          title = this.subjectNames.join();
        }
        tablePrint("print-content", this.className + title + "_" + name);
e371f2dc   梁保满   软件下载,学校,班级老师等报表导入...
182
      },
9309dc5d   梁保满   任课老师接口完成
183
184
185
186
      setType(type) {
        this.type = type;
        this.page = 1;
        this._QueryData();
9309dc5d   梁保满   任课老师接口完成
187
      },
e371f2dc   梁保满   软件下载,学校,班级老师等报表导入...
188
189
190
191
      setDuration(times) {
        let m = parseInt(times / 1000 / 60);
        let s = parseInt((times / 1000) % 60);
        let ms = times;
503b6063   梁保满   判断题答案选项
192
        let aTime;
e371f2dc   梁保满   软件下载,学校,班级老师等报表导入...
193
194
195
196
197
198
199
200
201
        if (times == 0) {
          aTime = `0`;
        } else {
          if (m == 0 && s == 0) {
            aTime = `${ms}毫秒`;
          } else if (m == 0 && s != 0) {
            aTime = `${s}秒`;
          } else if (m != 0 && s != 0) {
            aTime = `${m}分${s}秒`;
503b6063   梁保满   判断题答案选项
202
203
          }
        }
e371f2dc   梁保满   软件下载,学校,班级老师等报表导入...
204
        return aTime;
d32e461c   梁保满   备题组卷
205
      },
9309dc5d   梁保满   任课老师接口完成
206
207
208
209
210
      changePage(page) {
        this.page = page;
        this._QueryData();
      },
      async periodDetail() {
696f2d42   梁保满   fix:报表导出问题
211
212
213
214
        const periodDetail =
          this.role == "ROLE_PERSONAL"
            ? this.$request.pPeriodDetail
            : this.$request.periodDetail;
d01c5799   梁保满   随堂问 报表开发
215
        let { data, info, status } = await periodDetail({
22095aba   梁保满   接口联调
216
          periodIds: this.id,
9309dc5d   梁保满   任课老师接口完成
217
218
        });
        if (status == 0) {
109a6161   梁保满   班主任汇总选择问题
219
          this.className = data.className || "";
9309dc5d   梁保满   任课老师接口完成
220
          this.detail = { ...data };
255e2506   梁保满   飞书bug及优化
221
222
223
224
225
226
          this.detail.duration = this.detail.duration
            ? (this.detail.duration / 60).toFixed(2)
            : 0;
          this.detail.consumingDuration = this.detail.consumingDuration
            ? (this.detail.consumingDuration / 60).toFixed(2)
            : 0;
9309dc5d   梁保满   任课老师接口完成
227
228
229
230
        } else {
          this.$message.error(info);
        }
      },
ee6e7628   梁保满   备题组卷借口数据对接调整
231
      async _QueryData() {
d01c5799   梁保满   随堂问 报表开发
232
        let queryData;
9309dc5d   梁保满   任课老师接口完成
233
        let query = {};
d01c5799   梁保满   随堂问 报表开发
234
235
        if (this.role == "ROLE_PERSONAL") {
          if (this.types == 1) {
696f2d42   梁保满   fix:报表导出问题
236
237
238
239
240
241
242
243
244
245
246
247
248
            query.page = this.page;
            query.size = this.size;
            queryData =
              this.type == 1
                ? this.$request.pPeriodQuestionReport
                : this.$request.pPeriodStudentReport;
          } else if (this.types == 2) {
            queryData =
              this.type == 1
                ? this.$request.pPeriodQuestionReport
                : this.type == 2
                ? this.$request.phaseAnswerReport
                : this.$request.phaseInteractiveReport;
d01c5799   梁保满   随堂问 报表开发
249
          } else if (this.types == 3) {
696f2d42   梁保满   fix:报表导出问题
250
251
252
253
            queryData =
              this.type == 2
                ? this.$request.pPhaseAnswerReport
                : this.$request.pPhaseInteractiveReport;
d01c5799   梁保满   随堂问 报表开发
254
255
256
          }
        } else {
          if (this.types == 1) {
696f2d42   梁保满   fix:报表导出问题
257
258
259
260
261
262
            query.page = this.page;
            query.size = this.size;
            queryData =
              this.type == 1
                ? this.$request.periodQuestionReport
                : this.$request.periodStudentReport;
d01c5799   梁保满   随堂问 报表开发
263
          } else if (this.types == 2) {
696f2d42   梁保满   fix:报表导出问题
264
265
266
267
268
269
            queryData =
              this.type == 1
                ? this.$request.periodQuestionReport
                : this.type == 2
                ? this.$request.phaseAnswerReport
                : this.$request.phaseInteractiveReport;
d01c5799   梁保满   随堂问 报表开发
270
          } else if (this.types == 3) {
696f2d42   梁保满   fix:报表导出问题
271
272
273
274
            queryData =
              this.type == 2
                ? this.$request.cTPhaseAnswerReport
                : this.$request.cTPhaseInteractiveReport;
d01c5799   梁保满   随堂问 报表开发
275
276
          }
        }
d01c5799   梁保满   随堂问 报表开发
277
        if (this.types == 1) {
696f2d42   梁保满   fix:报表导出问题
278
279
          query.periodId = this.id[0];
          query.type = this.type - 1;
049db2b2   梁保满   接口联调
280
        } else {
696f2d42   梁保满   fix:报表导出问题
281
          query.periodIds = this.id;
7222c2eb   梁保满   汇总前置条件修改,教学,行政可汇总
282
          query.classIds = this.classIds;
049db2b2   梁保满   接口联调
283
          if (this.types == 3) {
696f2d42   梁保满   fix:报表导出问题
284
            query.subjectNames = this.subjectNames;
049db2b2   梁保满   接口联调
285
          }
9309dc5d   梁保满   任课老师接口完成
286
287
288
        }
        this.loading = true;
        let { data, info, status } = await queryData({
9309dc5d   梁保满   任课老师接口完成
289
          ...query,
ee6e7628   梁保满   备题组卷借口数据对接调整
290
        });
9309dc5d   梁保满   任课老师接口完成
291
292
        this.loading = false;
        if (status === 0) {
696f2d42   梁保满   fix:报表导出问题
293
          this.tableData = data?.list || [];
9309dc5d   梁保满   任课老师接口完成
294
295
296
297
298
          this.total = data.count;
        } else {
          this.$message.error(info);
        }
      },
d01c5799   梁保满   随堂问 报表开发
299
300
      async _QueryDataQuestionRank() {
        let queryData;
22095aba   梁保满   接口联调
301
        let query = {};
696f2d42   梁保满   fix:报表导出问题
302
303
304
305
306
307
308
  
        query.periodIds = this.id;
        if (this.types == 2) {
          queryData = this.$request.phaseAnswerReport;
        } else if (this.types == 3) {
          queryData = this.$request.cTPhaseAnswerReport;
        }
22095aba   梁保满   接口联调
309
        if (this.types != 1) {
7222c2eb   梁保满   汇总前置条件修改,教学,行政可汇总
310
          query.classIds = this.classIds;
d01c5799   梁保满   随堂问 报表开发
311
312
313
        }
        this.loading = true;
        let { data, info, status } = await queryData({
d01c5799   梁保满   随堂问 报表开发
314
315
316
317
          onlyRate: true,
          ...query,
        });
        this.loading = false;
696f2d42   梁保满   fix:报表导出问题
318
        console.log(data);
d01c5799   梁保满   随堂问 报表开发
319
        if (status === 0) {
696f2d42   梁保满   fix:报表导出问题
320
          this.exportStudent = (data?.list && [...data?.list]) || [];
d01c5799   梁保满   随堂问 报表开发
321
322
323
324
325
        } else {
          this.$message.error(info);
        }
      },
  
696f2d42   梁保满   fix:报表导出问题
326
      //导出
d01c5799   梁保满   随堂问 报表开发
327
      openDown() {
e17ec739   梁保满   随堂问,即时测导出爆表修改
328
        this.diaShow = true;
d01c5799   梁保满   随堂问 报表开发
329
330
      },
      cancel() {
e17ec739   梁保满   随堂问,即时测导出爆表修改
331
        this.diaShow = false;
d01c5799   梁保满   随堂问 报表开发
332
      },
e17ec739   梁保满   随堂问,即时测导出爆表修改
333
      async exportData(arr) {
255e2506   梁保满   飞书bug及优化
334
        if (this.exportLoading == true) return;
9309dc5d   梁保满   任课老师接口完成
335
        this.exportLoading = true;
696f2d42   梁保满   fix:报表导出问题
336
        let studentIds = arr;
9865dde4   梁保满   数据同步
337
        let query = {};
696f2d42   梁保满   fix:报表导出问题
338
        if (studentIds != null) {
ce278878   梁保满   2-2 bugfix
339
          if (studentIds.length > 0) {
696f2d42   梁保满   fix:报表导出问题
340
            query.studentIds = studentIds;
ce278878   梁保满   2-2 bugfix
341
          } else {
696f2d42   梁保满   fix:报表导出问题
342
            query.studentIds = [];
ce278878   梁保满   2-2 bugfix
343
          }
9865dde4   梁保满   数据同步
344
        }
696f2d42   梁保满   fix:报表导出问题
345
        let exportPeriodReport = "";
ce278878   梁保满   2-2 bugfix
346
        if (this.types == 1) {
696f2d42   梁保满   fix:报表导出问题
347
348
349
350
351
352
353
          query.periodId = this.id[0];
          exportPeriodReport =
            this.role == "ROLE_PERSONAL"
              ? this.$request.pExportPeriodReport
              : this.$request.exportPeriodReport;
        } else if (this.types == 2) {
          query.periodIds = this.id;
7222c2eb   梁保满   汇总前置条件修改,教学,行政可汇总
354
          query.classIds = this.classIds;
696f2d42   梁保满   fix:报表导出问题
355
356
357
358
359
360
          exportPeriodReport =
            this.role == "ROLE_PERSONAL"
              ? this.$request.pExportPhaseAnswerReport
              : this.$request.exportPhaseAnswerReport;
        } else {
          query.periodIds = this.id;
7222c2eb   梁保满   汇总前置条件修改,教学,行政可汇总
361
          query.classIds = this.classIds;
696f2d42   梁保满   fix:报表导出问题
362
          exportPeriodReport = this.$request.cTExportPhaseAnswerReport;
049db2b2   梁保满   接口联调
363
364
        }
        const data = await exportPeriodReport({
696f2d42   梁保满   fix:报表导出问题
365
          ...query,
255e2506   梁保满   飞书bug及优化
366
        });
9309dc5d   梁保满   任课老师接口完成
367
368
        this.exportLoading = false;
        if (data) {
696f2d42   梁保满   fix:报表导出问题
369
          this.cancel();
255e2506   梁保满   飞书bug及优化
370
371
372
          let blob = new Blob([data], {
            type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
          });
696f2d42   梁保满   fix:报表导出问题
373
374
375
376
377
378
          let name =
            this.types == 1
              ? "随堂问-单课时报表.xlsx"
              : this.types == 2
              ? `随堂问-${this.className}-${this.subjectNames[0]}汇总分析报表.xlsx`
              : `随堂问-${this.className}-多科汇总分析报表.xlsx`;
f9916d4c   梁保满   导出摸板
379
          downloadFile(this.status ? "随堂问-已归档单课时报表.xlsx" : name, blob);
9309dc5d   梁保满   任课老师接口完成
380
        } else {
236b1f0e   梁保满   周末-飞书bug
381
          this.$message.error("下载失败");
9309dc5d   梁保满   任课老师接口完成
382
        }
ee6e7628   梁保满   备题组卷借口数据对接调整
383
384
385
      },
    },
  };
4c4f7640   梁保满   路由表,路由前端文件
386
  </script>
dbbfc6c5   梁保满   飞书优化及bug
387
388
389
390
391
  <style>
  div::-webkit-scrollbar {
    width: 3px;
    height: 10px;
  }
d01c5799   梁保满   随堂问 报表开发
392
  
dbbfc6c5   梁保满   飞书优化及bug
393
394
395
396
397
  div::-webkit-scrollbar-thumb {
    border-radius: 10px;
    background-color: #ccc;
  }
  </style>
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
398
  <style lang="scss" scoped>
9309dc5d   梁保满   任课老师接口完成
399
400
401
402
403
404
  .down {
    padding-top: 20px;
    width: 100%;
    display: flex;
    justify-content: space-between;
  }
d01c5799   梁保满   随堂问 报表开发
405
  
e371f2dc   梁保满   软件下载,学校,班级老师等报表导入...
406
407
408
  .red {
    color: #f30;
  }
d01c5799   梁保满   随堂问 报表开发
409
  
ee6e7628   梁保满   备题组卷借口数据对接调整
410
411
412
  .page-content {
    padding: 20px 20px 0;
  }
d01c5799   梁保满   随堂问 报表开发
413
  
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
414
415
  .tab-box {
    width: 800px;
ee6e7628   梁保满   备题组卷借口数据对接调整
416
    margin: 0 auto 12px;
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
417
418
419
    background: #f8f8f8;
    border-radius: 20px;
    display: flex;
d01c5799   梁保满   随堂问 报表开发
420
  
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
421
422
423
424
425
426
427
428
429
430
    .tab-item {
      flex: 1;
      height: 40px;
      line-height: 40px;
      text-align: center;
      font-size: 16px;
      color: #666;
      font-weight: 500;
      background: transparent;
      border-radius: 20px;
ee6e7628   梁保满   备题组卷借口数据对接调整
431
      cursor: pointer;
d01c5799   梁保满   随堂问 报表开发
432
  
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
433
434
435
436
437
438
      &.active {
        background: #667ffd;
        color: #fff;
      }
    }
  }
d01c5799   梁保满   随堂问 报表开发
439
  
9865dde4   梁保满   数据同步
440
441
442
443
  :deep(.el-dialog__body) {
    padding-top: 0;
  }
  
d01c5799   梁保满   随堂问 报表开发
444
  .el-dialog {
d01c5799   梁保满   随堂问 报表开发
445
446
447
448
449
450
451
452
    .down-item {
      font-size: 15px;
      margin-bottom: 10px;
  
      .tit {
        line-height: 18px;
        padding: 10px 0;
      }
ee6e7628   梁保满   备题组卷借口数据对接调整
453
    }
9865dde4   梁保满   数据同步
454
455
456
457
458
459
  
    .export-tit {
      text-align: center;
      font-size: 16px;
      padding-bottom: 10px;
    }
ee6e7628   梁保满   备题组卷借口数据对接调整
460
  }
d01c5799   梁保满   随堂问 报表开发
461
462
463
464
  
  .dialog-footer {
    text-align: center;
  }
4c4f7640   梁保满   路由表,路由前端文件
465
  </style>