Browse Source

报告导出

zhangjie 1 year ago
parent
commit
6a66d5cb38

+ 44 - 144
src/assets/styles/report.css

@@ -65,43 +65,41 @@ img {
   padding: 150px 30px;
 }
 
-.mb-20 {
-  margin-bottom: 20px;
+.mb-15 {
+  margin-bottom: 15px;
 }
 
 /* report-page */
 .report-page {
-  width: 1160px;
-  height: 1639px;
+  width: 793px;
+  height: 1122px;
   margin: 0 auto;
   position: relative;
-  padding: 37px 58px 70px;
+  padding: 27px 40px 72px;
   page-break-after: always;
-  font-size: 18px;
+  font-size: 15px;
   color: #666;
   font-family: "PingFang SC", Tahoma, Helvetica, Arial, sans-serif;
 }
 
 .report-page .page-body {
   background: #fff;
-  height: 1530px;
+  height: 1023px;
   overflow: hidden;
 }
 
 .report-page .page-content {
-  margin-top: 39px;
-  height: 1400px;
+  margin-top: 20px;
   position: relative;
-  overflow: hidden;
 }
 
 .report-page .page-foot {
   position: absolute;
   width: 100%;
-  height: 70px;
+  height: 72px;
   bottom: 0;
   left: 0;
-  padding: 5px 58px;
+  padding: 27px 40px;
   color: #999;
 }
 
@@ -111,10 +109,26 @@ img {
 
 .report-page .page-foot .foot-right {
   float: right;
-  padding-right: 180px;
+  height: 18px;
+  padding-right: 120px;
+  position: relative;
+}
+
+.report-page .page-foot .page-num {
+  display: block;
+  line-height: 18px;
+  font-size: 14px;
+}
+
+.report-page .page-foot .foot-num-bg {
+  position: absolute;
+  width: 110px;
+  height: 4px;
+  top: 7px;
+  right: 0;
   background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKQAAAAGCAYAAABNYTWkAAAAj0lEQVRYR2N0Duj4z0BFsHdDBSOycdPjnlLV/MxF0ijm2y74T1XzDycwophvcPo0Vc2/YGqKYr736RKqmr/VtAfF/F9XXKhqPpvOHhTzb968SVXzGUcTJGpuHE2Q+Eun0QSJFj6jJST+BDNaQqKFz2iVjT/BjFbZ+MNntMpGC5/RKnu0yiapSzVaZQ/vKhsAs/ylQ4nC3o8AAAAASUVORK5CYII=);
+  background-size: 100% 100%;
   background-repeat: no-repeat;
-  background-position: right 10px;
 }
 
 .report-page .page-chart {
@@ -122,89 +136,18 @@ img {
   max-height: 100%;
 }
 
-.report-page .page-table {
-  margin: 0 39px;
-  padding: 1px;
-}
-
-.report-page .page-table.teacher-table {
-  padding-top: 30px;
-}
-
-.report-page .page-table.page-table-pad {
-  padding-top: 100px;
-}
-
-.report-page .page-table.level-table {
-  padding-top: 100px;
-}
-
-.report-page .page-table.level-table th,
-.report-page .page-table.level-table td {
-  font-size: 16px;
-  padding: 7px 3px;
-}
-
-.report-page .page-table.level-table td[rowspan] {
-  padding: 7px 10px;
-  width: 60px;
-  background-color: #fafafa;
-  word-break: break-all;
-}
-
-.report-page .page-table.level-table td.td-group-name-1 {
-  padding: 0px 2px;
-  font-size: 15px;
-  line-height: 1;
-}
-
-.report-page .page-table.level-table td.td-group-name-1 p {
-  text-align: center;
-  margin: 0 auto;
-  width: 60px;
-  max-height: 30px;
-  overflow: hidden;
-}
-
-.report-page .page-table.level-table td.td-group-name-2 {
-  padding: 0px 2px;
-  font-size: 16px;
-  line-height: 1.25;
-}
-
-.report-page .page-table.level-table td.td-group-name-2 p {
-  text-align: center;
-  margin: 0 auto;
-  width: 50px;
-  max-height: 60px;
-  overflow: hidden;
-}
-
-.report-page .page-table.level-table td.td-name {
-  width: 130px;
-}
-
-.report-page .page-table.level-table td.td-name p {
-  text-align: center;
-  margin: 0 auto;
-  width: 120px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
 .report-page .page-title-1 {
-  font-size: 39px;
+  font-size: 27px;
   font-weight: 600;
   color: #435088;
-  line-height: 70px;
+  line-height: 48px;
 }
 
 .report-page .page-title-2 {
-  font-size: 27px;
+  font-size: 19px;
   font-weight: 600;
   color: #435088;
-  line-height: 39px;
+  line-height: 27px;
 }
 
 /* table */
@@ -216,16 +159,16 @@ img {
 }
 
 .report-table th {
-  padding: 8px 6px;
+  padding: 5px 3px;
   background-color: #3da0ff;
   color: #fff;
-  line-height: 27px;
+  line-height: 19px;
 }
 
 .report-table td {
-  padding: 8px 6px;
+  padding: 5px 3px;
   color: #555;
-  line-height: 27px;
+  line-height: 19px;
 }
 
 .report-table-border th {
@@ -236,51 +179,8 @@ img {
   border: 1px solid #e9e9e9;
 }
 
-.cover-page {
-  color: #333;
-  font-size: 29px;
-}
-
-.cover-title {
-  position: absolute;
-  width: 745px;
-  height: 117px;
-  left: 160px;
-  top: 263px;
-  font-size: 117px;
-  line-height: 1;
-  color: #fff;
-}
-
-.cover-footer {
-  position: absolute;
-  width: 1000px;
-  left: 58px;
-  bottom: 156px;
-  padding-left: 98px;
-  line-height: 58px;
-}
-
-.cover-footer p {
-  overflow: hidden;
-}
-
-.cover-footer p span:first-child {
-  float: left;
-}
-
-.cover-footer p span:last-child {
-  display: block;
-  margin-left: 87px;
-}
-
-.cover-footer p:first-child span:last-child {
-  display: block;
-  margin-left: 145px;
-}
-
 .report-summary .summary-chart {
-  height: 340px;
+  height: 260px;
 }
 
 .report-summary .page-title-1 {
@@ -292,24 +192,24 @@ img {
 }
 
 .report-summary .report-title {
-  font-size: 39px;
+  font-size: 27px;
   font-weight: 600;
   color: #435088;
-  line-height: 70px;
+  line-height: 48px;
   text-align: center;
 }
 
 .report-summary .report-sub-title {
-  font-size: 27px;
+  text-align: center;
+  margin-bottom: 30px;
+  font-size: 19px;
   font-weight: 600;
   color: #435088;
-  line-height: 39px;
-  text-align: center;
-  margin-bottom: 40px;
+  line-height: 27px;
 }
 
 .college-chart {
-  height: 340px;
+  height: 234px;
 }
 
 .classes-table td.td-class-name {

+ 44 - 135
src/assets/styles/report.scss

@@ -81,131 +81,82 @@ img {
   padding: 150px 30px;
 }
 
-.mb-20 {
-  margin-bottom: 20px;
+.mb-15 {
+  margin-bottom: 15px;
 }
 
 /* report-page */
 .report-page {
-  width: 1160px;
-  height: 1639px;
+  width: 793px;
+  height: 1122px;
   margin: 0 auto;
   position: relative;
-  padding: 37px 58px 70px;
+  padding: 27px 40px 72px;
   page-break-after: always;
-  font-size: 18px;
+  font-size: 15px;
   color: $midDark;
   font-family: "PingFang SC", Tahoma, Helvetica, Arial, sans-serif;
 
   .page-body {
     background: #fff;
-    height: 1530px;
+    height: 1023px;
     overflow: hidden;
   }
   .page-content {
-    margin-top: 39px;
-    height: 1400px;
+    margin-top: 20px;
     position: relative;
-    overflow: hidden;
   }
   .page-foot {
     position: absolute;
     width: 100%;
-    height: 70px;
+    height: 72px;
     bottom: 0;
     left: 0;
-    padding: 5px 58px;
+    padding: 27px 40px;
     color: $gray;
+
     .foot-left {
       float: left;
     }
     .foot-right {
       float: right;
-      padding-right: 180px;
+      height: 18px;
+      padding-right: 120px;
+
+      position: relative;
+    }
+    .page-num {
+      display: block;
+      line-height: 18px;
+      font-size: 14px;
+    }
+    .foot-num-bg {
+      position: absolute;
+      width: 110px;
+      height: 4px;
+      top: 7px;
+      right: 0;
       background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKQAAAAGCAYAAABNYTWkAAAAj0lEQVRYR2N0Duj4z0BFsHdDBSOycdPjnlLV/MxF0ijm2y74T1XzDycwophvcPo0Vc2/YGqKYr736RKqmr/VtAfF/F9XXKhqPpvOHhTzb968SVXzGUcTJGpuHE2Q+Eun0QSJFj6jJST+BDNaQqKFz2iVjT/BjFbZ+MNntMpGC5/RKnu0yiapSzVaZQ/vKhsAs/ylQ4nC3o8AAAAASUVORK5CYII=);
+      background-size: 100% 100%;
       background-repeat: no-repeat;
-      background-position: right 10px;
     }
   }
   .page-chart {
     min-height: 200px;
     max-height: 100%;
   }
-  .page-table {
-    margin: 0 39px;
-    padding: 1px;
-
-    &.teacher-table {
-      padding-top: 30px;
-    }
-    &.page-table-pad {
-      padding-top: 100px;
-    }
-    &.level-table {
-      padding-top: 100px;
-
-      th,
-      td {
-        font-size: 16px;
-        padding: 7px 3px;
-      }
-      td[rowspan] {
-        padding: 7px 10px;
-        width: 60px;
-        background-color: $lightBackground;
-        word-break: break-all;
-      }
-      td.td-group-name-1 {
-        padding: 0px 2px;
-        font-size: 15px;
-        line-height: 1;
-        p {
-          text-align: center;
-          margin: 0 auto;
-          width: 60px;
-          max-height: 30px;
-          overflow: hidden;
-        }
-      }
-
-      td.td-group-name-2 {
-        padding: 0px 2px;
-        font-size: 16px;
-        line-height: 1.25;
-        p {
-          text-align: center;
-          margin: 0 auto;
-          width: 50px;
-          max-height: 60px;
-          overflow: hidden;
-        }
-      }
-      td.td-name {
-        width: 130px;
-        p {
-          text-align: center;
-          margin: 0 auto;
-          width: 120px;
-          white-space: nowrap;
-          overflow: hidden;
-          text-overflow: ellipsis;
-        }
-      }
-    }
-  }
-
   // page-title
   .page-title-1 {
-    font-size: 39px;
+    font-size: 27px;
     font-weight: 600;
     color: $mainColor;
-    line-height: 70px;
+    line-height: 48px;
   }
   .page-title-2 {
-    font-size: 27px;
+    font-size: 19px;
     font-weight: 600;
     color: $mainColor;
-    line-height: 39px;
+    line-height: 27px;
   }
 }
 
@@ -217,15 +168,15 @@ img {
   text-align: center;
 
   th {
-    padding: 8px 6px;
+    padding: 5px 3px;
     background-color: $blue;
     color: #fff;
-    line-height: 27px;
+    line-height: 19px;
   }
   td {
-    padding: 8px 6px;
+    padding: 5px 3px;
     color: $dark;
-    line-height: 27px;
+    line-height: 19px;
   }
 
   &-border {
@@ -238,52 +189,10 @@ img {
   }
 }
 
-// .cover
-.cover {
-  &-page {
-    color: #333;
-    font-size: 29px;
-  }
-  &-title {
-    position: absolute;
-    width: 745px;
-    height: 117px;
-    left: 160px;
-    top: 263px;
-    font-size: 117px;
-    line-height: 1;
-    color: #fff;
-  }
-  &-footer {
-    position: absolute;
-    width: 1000px;
-    left: 58px;
-    bottom: 156px;
-    padding-left: 98px;
-    line-height: 58px;
-    p {
-      overflow: hidden;
-      span:first-child {
-        float: left;
-      }
-      span:last-child {
-        display: block;
-        margin-left: 87px;
-      }
-
-      &:first-child {
-        span:last-child {
-          display: block;
-          margin-left: 145px;
-        }
-      }
-    }
-  }
-}
 // summary
 .report-summary {
   .summary-chart {
-    height: 340px;
+    height: 260px;
   }
   .page-title-1 {
     display: none;
@@ -292,24 +201,24 @@ img {
     margin: 0;
   }
   .report-title {
-    font-size: 39px;
+    font-size: 27px;
     font-weight: 600;
     color: $mainColor;
-    line-height: 70px;
+    line-height: 48px;
     text-align: center;
   }
   .report-sub-title {
-    font-size: 27px;
+    text-align: center;
+    margin-bottom: 30px;
+    font-size: 19px;
     font-weight: 600;
     color: $mainColor;
-    line-height: 39px;
-    text-align: center;
-    margin-bottom: 40px;
+    line-height: 27px;
   }
 }
 // college
 .college-chart {
-  height: 340px;
+  height: 234px;
 }
 
 .classes-table {

+ 0 - 3
src/modules/base/views/ApproveRecordManage.vue

@@ -201,9 +201,6 @@ export default {
       pickerOptions,
     };
   },
-  mounted() {
-    this.toPage(1);
-  },
   methods: {
     async getList() {
       if (!this.checkPrivilege("list", "list")) return;

+ 0 - 1
src/modules/exam/views/DataTaskManage.vue

@@ -267,7 +267,6 @@ export default {
       this.filter.type = this.taskType;
       this.typeDisabled = true;
     }
-    this.toPage(1);
   },
   methods: {
     checkPriv(type, field) {

+ 0 - 3
src/modules/exam/views/DownloadManage.vue

@@ -158,9 +158,6 @@ export default {
       );
     },
   },
-  mounted() {
-    this.getList();
-  },
   methods: {
     async getList() {
       if (!this.checkPrivilege("list", "list")) return;

+ 0 - 1
src/modules/exam/views/ExamTaskManage.vue

@@ -273,7 +273,6 @@ export default {
       pickerOptions,
     };
   },
-  mounted() {},
   methods: {
     ...mapActions("exam", ["updateWaitTaskCount"]),
     async getList() {

+ 0 - 3
src/modules/exam/views/TaskReviewManage.vue

@@ -313,9 +313,6 @@ export default {
       return this.auditStatus === "AUDITED";
     },
   },
-  mounted() {
-    // this.toPage(1);
-  },
   methods: {
     ...mapActions("exam", ["updateWaitTaskCount"]),
     async getList() {

+ 4 - 3
src/modules/mark/components/ScoreReportPreview.vue

@@ -58,13 +58,14 @@ export default {
       if (this.downloading) return;
       this.downloading = true;
 
+      const filename = `${this.instance.courseName}(${this.instance.courseCode}).pdf`;
       const res = await downloadByApi(() => {
         return scoreReportExport({
-          examId: this.instance.examId,
-          paperNumber: this.instance.paperNumber,
+          // examId: this.instance.examId,
+          // paperNumber: this.instance.paperNumber,
           htmlContent: this.$refs.reportRef.getTemp(),
         });
-      }).catch((e) => {
+      }, filename).catch((e) => {
         this.$message.error(e || "下载失败,请重新尝试!");
       });
       this.downloading = false;

+ 9 - 3
src/modules/mark/components/report/Report.vue

@@ -1,7 +1,6 @@
 <template>
   <div class="report">
     <template v-if="dataReady">
-      <!-- <report-cover></report-cover> -->
       <report-summary></report-summary>
       <report-college></report-college>
       <report-class></report-class>
@@ -15,7 +14,6 @@
 <script>
 import reportData from "./data";
 import { mapMutations } from "vuex";
-// import ReportCover from "./ReportCover.vue";
 import ReportSummary from "./ReportSummary.vue";
 import ReportCollege from "./ReportCollege.vue";
 import ReportClass from "./ReportClass.vue";
@@ -35,7 +33,6 @@ export default {
     },
   },
   components: {
-    // ReportCover,
     ReportSummary,
     ReportCollege,
     ReportClass,
@@ -49,6 +46,9 @@ export default {
   },
   mounted() {
     this.initData();
+    this.$nextTick(() => {
+      this.fillCatalogNum();
+    });
   },
   methods: {
     ...mapMutations("report", ["setData", "resetData"]),
@@ -81,6 +81,12 @@ export default {
       });
       this.dataReady = true;
     },
+    fillCatalogNum() {
+      document.querySelectorAll(".foot-right").forEach((item, index) => {
+        const pno = index + 1;
+        item.innerHTML = `<span class="page-num">PAGE ${pno}</span><span class="foot-num-bg"></span>`;
+      });
+    },
     getTemp() {
       return previewTemp(this.$el.outerHTML);
     },

+ 1 - 0
src/modules/mark/components/report/ReportBox.vue

@@ -12,6 +12,7 @@
       </div>
       <div class="foot-right">
         <span class="page-num">PAGE</span>
+        <span class="foot-num-bg"></span>
       </div>
     </div>
   </div>

+ 2 - 2
src/modules/mark/components/report/ReportQuestion.vue

@@ -86,9 +86,9 @@ export default {
       this.questionTables = sectionArr(question, this.chartSplitRange);
     },
     getChartStyle(count) {
-      const labelHeight = 42;
+      const labelHeight = 28;
       return {
-        height: `${130 + count * labelHeight}px`,
+        height: `${100 + count * labelHeight}px`,
       };
     },
   },

+ 4 - 4
src/modules/mark/components/report/ReportSummary.vue

@@ -5,8 +5,8 @@
         {{ baseinfo.semesterName }}{{ baseinfo.examName }}
       </h1>
       <h1 class="report-sub-title">{{ baseinfo.courseName }} | 成绩报告</h1>
-      <h2 class="page-title-2 mb-20">考试概况</h2>
-      <table class="report-table report-table-border mb-20">
+      <h2 class="page-title-2 mb-15">考试概况</h2>
+      <table class="report-table report-table-border mb-15">
         <tr>
           <th>总考生数</th>
           <th>实考</th>
@@ -34,8 +34,8 @@
           <td>{{ overview.excellentRate }}</td>
         </tr>
       </table>
-      <h2 class="page-title-2 mb-20">成绩分数段分析</h2>
-      <div class="summary-chart mb-20">
+      <h2 class="page-title-2 mb-15">成绩分数段分析</h2>
+      <div class="summary-chart mb-15">
         <v-chart
           v-if="scoreRangeChart"
           :option="scoreRangeChart"

+ 34 - 494
src/modules/mark/components/report/chart.js

@@ -27,7 +27,7 @@ export function getScoreBarOptions(dataObj) {
     {
       type: "bar",
       data: dataObj.map((item) => item.studentCount),
-      barWidth: 16,
+      barWidth: 12,
     },
   ];
 
@@ -36,10 +36,10 @@ export function getScoreBarOptions(dataObj) {
     textStyle: textStyle,
     color: colors,
     grid: {
-      left: 50,
-      top: 40,
-      bottom: 50,
-      right: 50,
+      left: 40,
+      top: 20,
+      bottom: 30,
+      right: 40,
       show: true,
       borderColor: "rgba(230,230,230,1)",
     },
@@ -63,7 +63,7 @@ export function getScoreBarOptions(dataObj) {
           },
         },
         axisLabel: {
-          fontSize: 18,
+          fontSize: 14,
         },
       },
     ],
@@ -88,8 +88,8 @@ export function getScoreBarOptions(dataObj) {
           },
         },
         axisLabel: {
-          fontSize: 17,
-          margin: 20,
+          fontSize: 14,
+          margin: 10,
           formatter: function (value) {
             let str = value.split("#");
             if (str[0].length > 10) str[0] = str[0].substr(0, 10) + "...";
@@ -116,14 +116,14 @@ export function getBarsOptions(dataObj) {
       itemWidth: 14,
       bottom: 10,
       textStyle: {
-        fontSize: 16,
+        fontSize: 14,
       },
     },
     grid: {
-      top: 30,
-      bottom: 90,
-      left: 50,
-      right: 50,
+      top: 15,
+      bottom: 70,
+      left: 40,
+      right: 40,
       show: true,
       borderColor: "rgba(230,230,230,1)",
     },
@@ -147,7 +147,7 @@ export function getBarsOptions(dataObj) {
       },
       axisLabel: {
         fontSize: 14,
-        margin: 8,
+        margin: 10,
         interval: 0,
         formatter: function (value) {
           if (value.length > 6) {
@@ -191,19 +191,19 @@ export function getBarsOptions(dataObj) {
         type: "bar",
         data: avgDatas,
         name: "平均分",
-        barWidth: 16,
+        barWidth: 12,
       },
       {
         type: "bar",
         data: maxDatas,
         name: "最高分",
-        barWidth: 16,
+        barWidth: 12,
       },
       {
         type: "bar",
         data: minDatas,
         name: "最低分",
-        barWidth: 16,
+        barWidth: 12,
       },
     ],
   };
@@ -261,17 +261,17 @@ export function getBarPointTopicOptions(dataObj) {
       data: legendData,
       itemGap: 30,
       itemWidth: 14,
-      bottom: 20,
+      bottom: 10,
       textStyle: {
-        fontSize: 19,
+        fontSize: 14,
       },
     },
     grid: [
       {
         left: "20%",
-        top: 40,
+        top: 30,
         width: "66%",
-        bottom: 90,
+        bottom: 70,
         show: true,
         borderColor: "rgba(230,230,230,1)",
       },
@@ -298,7 +298,7 @@ export function getBarPointTopicOptions(dataObj) {
           },
         },
         axisLabel: {
-          fontSize: 18,
+          fontSize: 14,
           formatter: function (value, index) {
             if (!index) return "0";
             return value.toFixed(2);
@@ -326,7 +326,7 @@ export function getBarPointTopicOptions(dataObj) {
           },
         },
         axisLabel: {
-          fontSize: 18,
+          fontSize: 14,
           formatter: function (value, index) {
             if (!index) return "0";
             return parseInt(value * 100) + "%";
@@ -361,8 +361,8 @@ export function getBarPointTopicOptions(dataObj) {
           },
         },
         axisLabel: {
-          fontSize: 17,
-          margin: 20,
+          fontSize: 14,
+          margin: 10,
           formatter: function (value) {
             let str = value.split("#");
             if (str[0].length > 10) str[0] = str[0].substr(0, 10) + "...";
@@ -404,7 +404,7 @@ export function getBarTeachersOptions(datas) {
         item.avgScore,
         // item.relativeAvgScore,
       ],
-      barWidth: 16,
+      barWidth: 12,
       name: item.name,
     };
   });
@@ -420,15 +420,15 @@ export function getBarTeachersOptions(datas) {
       itemGap: 20,
       itemWidth: 14,
       textStyle: {
-        fontSize: 19,
+        fontSize: 14,
       },
     },
     grid: {
       show: true,
-      top: 30,
-      bottom: 90,
-      left: 50,
-      right: 50,
+      top: 15,
+      bottom: 70,
+      left: 40,
+      right: 40,
       borderColor: "rgba(230,230,230,1)",
     },
     xAxis: {
@@ -450,8 +450,8 @@ export function getBarTeachersOptions(datas) {
         },
       },
       axisLabel: {
-        fontSize: 18,
-        margin: 12,
+        fontSize: 14,
+        margin: 10,
         interval: 0,
       },
     },
@@ -473,470 +473,10 @@ export function getBarTeachersOptions(datas) {
         },
       },
       axisLabel: {
-        fontSize: 16,
+        fontSize: 14,
         color: "#555",
       },
     },
     series: series,
   };
 }
-
-// other
-export function getBarPointGradeOptions(dataObj) {
-  let datas = dataObj.datas;
-  let xAxisTopMax = dataObj.xAxisTopMax;
-
-  let yAxisLabels = datas.map(function (item) {
-    return item.name;
-  });
-  let avgDatas = datas.map(function (item) {
-    return item.avgScore;
-  });
-  let maxDatas = datas.map(function (item) {
-    return item.maxScore;
-  });
-  let minDatas = datas.map(function (item) {
-    return item.minScore;
-  });
-  let passRateDatas = datas.map(function (item) {
-    return Math.round(item.passRate * 100);
-  });
-  let excellentRateDatas = datas.map(function (item) {
-    return Math.round(item.excellentRate * 100);
-  });
-
-  return {
-    animation: animationIsOpen,
-    textStyle: textStyle,
-    legend: {
-      data: ["平均分", "最高分", "最低分", "及格率", "优秀率"],
-      itemGap: 30,
-      itemWidth: 14,
-      bottom: 20,
-      textStyle: {
-        fontSize: 19,
-      },
-    },
-    grid: [
-      {
-        left: "20%",
-        top: 120,
-        width: "66%",
-        bottom: 100,
-        show: true,
-        borderColor: "rgba(230,230,230,1)",
-      },
-    ],
-    xAxis: [
-      {
-        type: "value",
-        position: "top",
-        min: 0,
-        max: xAxisTopMax,
-        interval: xAxisTopMax / 10,
-        axisTick: {
-          show: false,
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            color: "rgba(233,233,233,1)",
-          },
-        },
-        axisLine: {
-          lineStyle: {
-            color: "rgba(233,233,233,1)",
-          },
-        },
-        axisLabel: {
-          fontSize: 18,
-          color: "#555",
-          formatter: function (value, index) {
-            if (!index) return "0";
-            return value;
-          },
-        },
-      },
-      {
-        type: "value",
-        min: 0,
-        max: 100,
-        interval: 10,
-        position: "bottom",
-        axisTick: {
-          show: false,
-        },
-        axisLine: {
-          lineStyle: {
-            color: "rgba(233,233,233,1)",
-          },
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            color: "rgba(233,233,233,1)",
-          },
-        },
-        axisLabel: {
-          fontSize: 18,
-          color: "#555",
-          formatter: function (value, index) {
-            if (!index) return "0";
-            return value + "%";
-          },
-        },
-      },
-    ],
-    yAxis: [
-      {
-        type: "category",
-        gridIndex: 0,
-        data: yAxisLabels,
-        inverse: true,
-        axisTick: {
-          show: false,
-        },
-        splitArea: {
-          show: true,
-          areaStyle: {
-            color: ["rgba(250,250,250,1)", "rgba(255,255,255,1)"],
-          },
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            color: "rgba(233,233,233,1)",
-          },
-        },
-        axisLabel: {
-          fontSize: 19,
-          margin: 30,
-          formatter: function (value) {
-            if (value.length > 8) {
-              return [value.substring(0, 8), value.substring(8)].join("\n");
-            }
-            return value;
-          },
-        },
-      },
-    ],
-    series: [
-      {
-        type: "bar",
-        data: avgDatas,
-        barWidth: 6,
-        barGap: "50%",
-        name: "平均分",
-        xAxisIndex: 0,
-        itemStyle: {
-          color: "rgba(61, 160, 255, 0.8)",
-        },
-      },
-      {
-        type: "bar",
-        data: maxDatas,
-        barWidth: 6,
-        barGap: "50%",
-        name: "最高分",
-        xAxisIndex: 0,
-        itemStyle: {
-          color: "rgba(151, 94, 229, 0.8)",
-        },
-      },
-      {
-        type: "bar",
-        data: minDatas,
-        barWidth: 6,
-        barGap: "50%",
-        name: "最低分",
-        xAxisIndex: 0,
-        itemStyle: {
-          color: "rgba(217, 217, 217, 0.8)",
-        },
-      },
-      {
-        type: "line",
-        data: passRateDatas,
-        symbol: "circle",
-        symbolSize: 8,
-        name: "及格率",
-        xAxisIndex: 1,
-        itemStyle: {
-          color: "rgba(67, 80, 136, 0.8)",
-        },
-      },
-      {
-        type: "line",
-        data: excellentRateDatas,
-        symbol: "circle",
-        symbolSize: 8,
-        name: "优秀率",
-        xAxisIndex: 1,
-        itemStyle: {
-          color: "rgba(250, 212, 68, 0.8)",
-        },
-      },
-    ],
-  };
-}
-
-export function getBarTeacherGradeOptions(datas) {
-  let title = datas.name + "_任课班级成绩分析";
-  let symbolCircle =
-    "path://M16,9.2c-3.8,0-6.8,3.1-6.8,6.8s3.1,6.8,6.8,6.8s6.8-3.1,6.8-6.8S19.8,9.2,16,9.2z M29.7,16  c0,7.6-6.1,13.7-13.7,13.7S2.3,23.6,2.3,16S8.4,2.3,16,2.3S29.7,8.4,29.7,16z";
-  let classes = datas.classes;
-  let xAxisData = classes.map(function (item) {
-    return item.name;
-  });
-  let avgDatas = classes.map(function (item) {
-    return item.avgScore;
-  });
-  let relateAvgDatas = classes.map(function (item) {
-    return item.relativeAvgScore;
-  });
-  let maxDatas = classes.map(function (item) {
-    return item.maxScore;
-  });
-  let minDatas = classes.map(function (item) {
-    return item.minScore;
-  });
-  let passRateDatas = classes.map(function (item) {
-    return item.passRate;
-  });
-  let excellentRateDatas = classes.map(function (item) {
-    return item.excellentRate;
-  });
-
-  return {
-    animation: animationIsOpen,
-    textStyle: textStyle,
-    color: [
-      "rgba(61, 160, 255, 0.8)",
-      "#4bcb74",
-      "rgba(151, 94, 229, 0.8)",
-      "#999999",
-      "rgba(67, 80, 136, 0.8)",
-      "rgba(250, 212, 68, 0.8)",
-    ],
-    title: {
-      text: "▲  " + title,
-      left: "center",
-      bottom: 0,
-      textStyle: {
-        color: "rgba(67, 80, 136, 0.8)",
-      },
-    },
-    grid: {
-      top: 50,
-      bottom: 90,
-      show: true,
-      borderColor: "rgba(230,230,230,1)",
-    },
-    xAxis: {
-      type: "category",
-      data: xAxisData,
-      axisTick: {
-        show: false,
-      },
-      splitArea: {
-        show: true,
-        areaStyle: {
-          color: ["rgba(255,255,255,1)", "rgba(250,250,250,1)"],
-        },
-      },
-      splitLine: {
-        show: true,
-        lineStyle: {
-          color: "rgba(233,233,233,1)",
-        },
-      },
-      axisLabel: {
-        fontSize: 16,
-        margin: 12,
-        interval: 0,
-        formatter: function (value) {
-          if (value.length > 6) {
-            return [value.substring(0, 6), value.substring(6)].join("\n");
-          }
-          return value;
-        },
-      },
-      axisLine: {
-        lineStyle: {
-          color: "rgba(233,233,233,1)",
-        },
-      },
-    },
-    yAxis: [
-      {
-        type: "value",
-        z: 1,
-        position: "left",
-        axisTick: {
-          show: false,
-        },
-        axisLine: {
-          lineStyle: {
-            color: "rgba(233,233,233,1)",
-          },
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            color: "rgba(233,233,233,1)",
-          },
-        },
-        axisLabel: {
-          fontSize: 16,
-          color: "#555",
-        },
-      },
-      {
-        type: "value",
-        min: 0,
-        max: 1,
-        position: "right",
-        axisTick: {
-          show: false,
-        },
-        axisLine: {
-          lineStyle: {
-            color: "rgba(233,233,233,1)",
-          },
-        },
-        axisLabel: {
-          fontSize: 16,
-          color: "#555",
-          formatter: function (value) {
-            if (!value) return "0";
-            return value.toFixed(1);
-          },
-        },
-      },
-    ],
-    series: [
-      {
-        type: "bar",
-        data: avgDatas,
-        name: "平均分",
-        barWidth: 12,
-      },
-      {
-        type: "bar",
-        data: relateAvgDatas,
-        name: "相对平均分",
-        barWidth: 12,
-      },
-      {
-        type: "bar",
-        data: maxDatas,
-        name: "最高分",
-        barWidth: 12,
-      },
-      {
-        type: "bar",
-        data: minDatas,
-        name: "最低分",
-        barWidth: 12,
-      },
-      {
-        type: "scatter",
-        data: passRateDatas,
-        yAxisIndex: 1,
-        symbol: symbolCircle,
-        symbolSize: 10,
-        name: "及格率",
-      },
-      {
-        type: "scatter",
-        data: excellentRateDatas,
-        yAxisIndex: 1,
-        symbol: symbolCircle,
-        symbolSize: 10,
-        name: "优秀率",
-      },
-    ],
-  };
-}
-
-export function getLineSmoothOptions(datainfo) {
-  let lineColors = colors.slice(0, -1);
-  let datas = datainfo.dataList;
-  let lineColor = lineColors[datainfo.index % colors.length];
-  let xAxisData = datas.map(function (item) {
-    return item.score;
-  });
-  let levelDatas = datas.map(function (item) {
-    return item.rangeRate;
-  });
-
-  return {
-    animation: animationIsOpen,
-    textStyle: textStyle,
-    grid: {
-      top: 110,
-      bottom: 80,
-      show: true,
-      borderColor: "rgba(230,230,230,1)",
-    },
-    xAxis: {
-      type: "category",
-      data: xAxisData,
-      boundaryGap: false,
-      inverse: true,
-      splitLine: {
-        show: false,
-      },
-      axisLabel: {
-        fontSize: 19,
-        margin: 20,
-        interval: xAxisData.length <= 16 ? 0 : "auto",
-        formatter: function (value) {
-          return value + "-";
-        },
-      },
-      axisLine: {
-        lineStyle: {
-          color: "rgba(233,233,233,1)",
-        },
-      },
-    },
-    yAxis: {
-      type: "value",
-      axisTick: {
-        show: false,
-      },
-      axisLine: {
-        lineStyle: {
-          color: "rgba(233,233,233,1)",
-        },
-      },
-      splitLine: {
-        show: true,
-        lineStyle: {
-          color: "rgba(233,233,233,1)",
-        },
-      },
-      axisLabel: {
-        fontSize: 19,
-        margin: 20,
-        formatter: function (value, index) {
-          return value.toFixed(2);
-        },
-      },
-    },
-    series: [
-      {
-        type: "line",
-        data: levelDatas,
-        symbol: "none",
-        smooth: true,
-        smoothMonotone: "none",
-        lineStyle: {
-          color: lineColor,
-          width: 3,
-        },
-      },
-    ],
-  };
-}

+ 3 - 3
src/modules/mark/components/report/data.js

@@ -27,7 +27,7 @@ for (let i = 0; i < scoreCount; i++) {
 
 // 学院
 let college = [];
-let collegeCount = 15;
+let collegeCount = 32;
 for (let i = 0; i < collegeCount; i++) {
   college.push({
     college: "学院" + (i + 1),
@@ -58,7 +58,7 @@ for (let i = 0; i < classCount; i++) {
 
 // 教师
 let teacher = [];
-let teacherCount = 10;
+let teacherCount = 30;
 let teacherClass = [];
 for (let i = 0; i < teacherCount; i++) {
   teacher.push({
@@ -125,7 +125,7 @@ const data = {
   overview,
   scoreRange,
   college,
-  class: classList,
+  classData: classList,
   teacher,
   teacherClass,
   objective,

File diff suppressed because it is too large
+ 0 - 0
src/modules/mark/components/report/previewTemp.js


+ 0 - 3
src/modules/print/views/PrintPlanManage.vue

@@ -230,9 +230,6 @@ export default {
       pickerOptions,
     };
   },
-  mounted() {
-    // this.search();
-  },
   methods: {
     async getList() {
       if (!this.checkPrivilege("list", "list")) return;

+ 0 - 1
src/modules/stmms/views/SyncManage.vue

@@ -213,7 +213,6 @@ export default {
     }
     this.getSyncTypes();
     this.getSyncStatus();
-    this.getList();
   },
   methods: {
     checkPriv(type, field) {

Some files were not shown because too many files changed in this diff