Explorar o código

目标达成度报告接口调整

zhangjie hai 1 ano
pai
achega
f89c2715a0

+ 346 - 180
src/modules/course/components/TargetReportDetail.vue

@@ -30,13 +30,13 @@
       <table class="table table-tiny">
         <tr>
           <td>课程编码</td>
-          <td>{{ baseInfo.courseCode }}</td>
+          <td>{{ commonInfo.courseCode }}</td>
           <td>课程名称</td>
-          <td>{{ baseInfo.courseName }}</td>
+          <td>{{ commonInfo.courseName }}</td>
           <td>课程类别</td>
           <td>
             <el-input
-              v-model="baseInfo.courseType"
+              v-model="courseBasicInfo.courseType"
               placeholder="请填写课程类别"
               size="small"
             ></el-input>
@@ -44,7 +44,7 @@
           <td>学分</td>
           <td>
             <el-input-number
-              v-model="baseInfo.stdScore"
+              v-model="courseBasicInfo.credit"
               placeholder="请录入学分"
               size="small"
               :min="0"
@@ -58,19 +58,19 @@
           <td>考核方式</td>
           <td>
             <el-input
-              v-model="baseInfo.examType"
+              v-model="courseBasicInfo.evaluationMode"
               placeholder="请填写考核方式"
               size="small"
             ></el-input>
           </td>
           <td>开课时间</td>
-          <td>{{ baseInfo.courseStartTime }}</td>
+          <td>{{ courseBasicInfo.openTime }}</td>
           <td>授课对象</td>
-          <td>{{ baseInfo.teachClazz }}</td>
+          <td>{{ courseBasicInfo.teachingObject }}</td>
           <td>学时</td>
           <td>
             <el-input-number
-              v-model="baseInfo.teachHours"
+              v-model="courseBasicInfo.period"
               placeholder="请录入学时"
               :min="0"
               :max="999"
@@ -84,7 +84,7 @@
           <td>选课人数</td>
           <td>
             <el-input-number
-              v-model="baseInfo.studentCount"
+              v-model="courseBasicInfo.selectionCount"
               placeholder="请录入选课人数"
               :min="0"
               :max="999"
@@ -94,11 +94,11 @@
             ></el-input-number>
           </td>
           <td>参评人数</td>
-          <td>{{ baseInfo.commentCount }}</td>
+          <td>{{ courseBasicInfo.participantCount }}</td>
           <td>课程目标达成度期望值</td>
           <td colspan="3">
             <el-select
-              v-model="baseInfo.courseTarget"
+              v-model="courseBasicInfo.courseDegree"
               size="small"
               style="width: 100%"
             >
@@ -113,11 +113,11 @@
         </tr>
         <tr>
           <td>任课老师</td>
-          <td>{{ baseInfo.teachTeacher }}</td>
+          <td>{{ courseBasicInfo.teacher }}</td>
           <td>评价负责人</td>
           <td>
             <el-input
-              v-model="baseInfo.commentManager"
+              v-model="courseBasicInfo.director"
               placeholder="请填写评价负责人姓名"
               size="small"
             ></el-input>
@@ -125,7 +125,7 @@
           <td>评价参与人</td>
           <td colspan="3">
             <el-input
-              v-model="baseInfo.commentUsers"
+              v-model="courseBasicInfo.participant"
               placeholder="请填写评价人姓名"
               size="small"
             ></el-input>
@@ -153,7 +153,7 @@
       </h2>
     </div>
     <div class="part-box part-box-pad">
-      <el-table :data="distributionTable">
+      <el-table :data="questionInfoTable">
         <el-table-column
           label="试题号"
           prop="name"
@@ -178,7 +178,7 @@
             v-for="subNumber in struct.subNumbers"
             :key="subNumber"
             :label="subNumber"
-            :prop="`${struct.mainNumber}-${subNumber}`"
+            :prop="`${struct.mainNumber}_${subNumber}`"
             align="center"
           >
           </el-table-column>
@@ -186,8 +186,8 @@
       </el-table>
       <div class="chart-box" style="height: 300px; margin-top: 20px">
         <v-chart
-          v-if="scoreDistributionChartOption"
-          :option="scoreDistributionChartOption"
+          v-if="questionInfoChartOption"
+          :option="questionInfoChartOption"
         ></v-chart>
       </div>
     </div>
@@ -230,27 +230,38 @@
         </tr>
 
         <template v-for="item in courseTargetList">
-          <tr v-for="(step, sind) in item.steps" :key="`${item.name}-${sind}`">
-            <td v-if="!sind" :rowspan="item.steps.length" style="width: 240px">
-              {{ item.name }}
+          <tr
+            v-for="(evaluation, eindex) in item.evaluationList"
+            :key="`${item.targetId}-${eindex}`"
+          >
+            <td
+              v-if="!eindex"
+              :rowspan="item.evaluationList.length"
+              style="width: 240px"
+            >
+              {{ item.targetName }}
             </td>
-            <td v-if="!sind" :rowspan="item.steps.length">
-              <p v-for="item in item.indicator.split('\n')" :key="item">
-                {{ item }}
+            <td v-if="!eindex" :rowspan="item.evaluationList.length">
+              <p v-for="edesc in item.evaluationDesc.split('\n')" :key="edesc">
+                {{ edesc }}
               </p>
             </td>
-            <td style="width: 140px">{{ step.name }}</td>
-            <td style="width: 80px">{{ step.rate }}</td>
-            <td style="width: 100px">{{ step.score }}</td>
-            <td style="width: 100px">{{ step.aveScore }}</td>
-            <td v-if="!sind" :rowspan="item.steps.length" style="width: 140px">
-              {{ item.getVal }}
+            <td style="width: 140px">{{ evaluation.name }}</td>
+            <td style="width: 80px">{{ evaluation.weight }}</td>
+            <td style="width: 100px">{{ evaluation.score }}</td>
+            <td style="width: 100px">{{ evaluation.avg }}</td>
+            <td
+              v-if="!eindex"
+              :rowspan="item.evaluationList.length"
+              style="width: 140px"
+            >
+              {{ item.evaluationValue }}
             </td>
           </tr>
         </template>
         <tr>
           <td colspan="6">课程总目标</td>
-          <td>{{ totalGetVal }}</td>
+          <td>{{ courseTargetValue }}</td>
         </tr>
       </table>
 
@@ -273,7 +284,7 @@
         ></el-table-column>
         <el-table-column
           label="学号"
-          prop="code"
+          prop="studentCode"
           width="100"
           align="center"
           fixed="left"
@@ -286,13 +297,13 @@
         >
           <el-table-column min-width="120" align="center">
             <template slot="header">
-              {{ target.endExam }}({{ target.endRate }})
+              期末考试({{ target.finalWeight }})
             </template>
             <el-table-column
-              v-for="dimension in target.endDimensions"
-              :key="`${target.name}${dimension}`"
+              v-for="dimension in target.finalDimensions"
+              :key="`${target.targetId}${dimension}`"
               :label="dimension"
-              :prop="`${target.name}-${target.endExam}-${dimension}`"
+              :prop="`${target.targetId}-final-${dimension}`"
               min-width="60"
               align="center"
             >
@@ -300,13 +311,13 @@
           </el-table-column>
           <el-table-column min-width="120" align="center">
             <template slot="header">
-              {{ target.normalExam }}({{ target.normalRate }})
+              平时考试({{ target.usualWeight }})
             </template>
             <el-table-column
-              v-for="work in target.normalWorks"
-              :key="`${target.name}${work}`"
+              v-for="work in target.usualWorks"
+              :key="`${target.targetId}${work}`"
               :label="work"
-              :prop="`${target.name}-${target.normalExam}-${work}`"
+              :prop="`${target.targetId}-usual-${work}`"
               min-width="60"
               align="center"
             >
@@ -315,11 +326,18 @@
         </el-table-column>
         <el-table-column
           label="学生成绩"
-          prop="totalScore"
+          prop="score"
           align="center"
           width="100"
         ></el-table-column>
       </el-table>
+
+      <div class="chart-box" style="height: 400px; margin-top: 20px">
+        <v-chart
+          v-if="studentScoreChartOption"
+          :option="studentScoreChartOption"
+        ></v-chart>
+      </div>
     </div>
 
     <div slot="footer"></div>
@@ -328,8 +346,9 @@
 
 <script>
 import { reportData } from "./data";
-import { exportTargetReport } from "../api";
+import { targetReportDetail, exportTargetReport } from "../api";
 import { downloadByApi } from "@/plugins/download";
+import { calcSum } from "@/plugins/utils";
 
 export default {
   name: "target-report-detail",
@@ -343,24 +362,27 @@ export default {
   },
   data() {
     return {
-      modalIsShow: false,
-      baseInfo: {},
-      courseTargetList: [],
-      totalGetVal: 0.67,
-      distributionTable: [],
-      scoreDistribution: [],
-      studentScoreTable: [],
+      modalIsShow: true,
       expectancyList: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],
-      scoreDistributionChartOption: null,
-      courseTargetListChartOption: null,
+      commonInfo: {},
+      courseBasicInfo: {},
       paperStructs: [],
+      questionInfoTable: [],
+      courseTargetList: [],
+      courseTargetValue: 0.67,
+      questionInfoChartOption: null,
+      courseTargetListChartOption: null,
+
       courseTargets: [],
       targetColumnCounts: [],
+      studentScoreTable: [],
+      studentScoreChartOption: null,
       downloading: false,
     };
   },
   mounted() {
-    this.initData();
+    // this.initData();
+    this.buildData(reportData);
   },
   methods: {
     cancel() {
@@ -369,27 +391,46 @@ export default {
     open() {
       this.modalIsShow = true;
     },
-    initData() {
-      this.baseInfo = reportData.baseInfo;
-      this.courseTargetList = reportData.courseTargetList;
-      this.scoreDistribution = reportData.scoreDistribution;
-      this.parsePaperStructs(reportData.distributionList);
-      this.parseDistributionTable(reportData.distributionList);
+    buildData(data) {
+      this.commonInfo = data.commonInfo;
+      this.courseBasicInfo = data.courseBasicInfo;
 
-      this.parseCourseTargets(reportData.studentScores);
-      this.parseStudentScoreTable(reportData.studentScores);
+      this.courseTargetValue = data.courseEvaluationResult.targetValue;
+      this.courseTargetList = data.courseEvaluationResult.targetList;
 
-      this.scoreDistributionChartOption =
-        this.getScoreDistributionChartOption();
+      const {
+        courseEvaluationSpread: { questionInfo, scoreList },
+      } = data;
+      this.parsePaperStructs(questionInfo);
+      this.parseQuestionInfoTable(questionInfo);
+      this.questionInfoChartOption = this.getQuestionInfoChartOption(scoreList);
       this.courseTargetListChartOption = this.getCourseTargetListChartOption();
+
+      const {
+        courseEvaluationResultDetail: {
+          examStudentList,
+          courseTargetList: examStudentTargets,
+        },
+      } = data;
+
+      this.parseCourseTargets(examStudentList);
+      this.parseStudentScoreTable(examStudentList);
+      this.studentScoreChartOption =
+        this.parseStudentScoreChartOption(examStudentTargets);
+    },
+    async initData() {
+      const data = await targetReportDetail({
+        examId: this.course.examId,
+        courseCode: this.course.courseCode,
+        paperNumber: this.course.paperNumber,
+      });
+      this.buildData(data);
     },
-    parsePaperStructs(distributionList) {
-      if (!distributionList || !distributionList.length) return;
+    parsePaperStructs(questionInfo) {
+      if (!questionInfo || !questionInfo.length) return;
 
-      const scores = distributionList[0].scores;
       const structMap = {};
-
-      scores.forEach((item) => {
+      questionInfo.forEach((item) => {
         if (!structMap[item.mainNumber]) {
           structMap[item.mainNumber] = [];
         }
@@ -402,123 +443,47 @@ export default {
         };
       });
     },
-    parseDistributionTable(distributionList) {
-      this.distributionTable = distributionList.map((item) => {
-        const data = {
-          name: item.name,
-          totalScore: item.totalScore,
-        };
-
-        item.scores.forEach((elem) => {
-          data[`${elem.mainNumber}-${elem.subNumber}`] = elem.score;
-        });
-
-        return data;
-      });
-    },
-    parseCourseTargets(studentScores) {
-      if (!studentScores || !studentScores.length) return;
+    parseQuestionInfoTable(questionInfo) {
+      const targetMap = {};
+      const tData = {
+        name: "目标分值",
+        totalScore: calcSum(questionInfo.map((item) => item.score || 0)),
+      };
+      questionInfo.forEach((question) => {
+        const qno = `${question.mainNumber}_${question.subNumber}`;
+        tData[qno] = question.score;
 
-      const targets = studentScores[0].courseTargets;
+        question.targetList.forEach((target) => {
+          if (!targetMap[target.targetId]) {
+            targetMap[target.targetId] = {
+              name: target.targetName,
+              totalScore: 0,
+            };
+          }
 
-      let tColumnCounts = [];
-      this.courseTargets = targets.map((target) => {
-        const ntarget = { ...target };
-        ntarget.endDimensions = target.endDimensions.map((item) => item.name);
-        ntarget.normalWorks = target.normalWorks.map((item) => item.name);
-        tColumnCounts.push(
-          ntarget.endDimensions.length + ntarget.normalWorks.length
-        );
-        return ntarget;
+          if (target.dimensionList.length) {
+            targetMap[target.targetId][qno] = question.score;
+            targetMap[target.targetId].totalScore += question.score;
+          } else {
+            targetMap[target.targetId][qno] = "";
+          }
+        });
       });
 
-      let tCount = 0;
-      this.targetColumnCounts = tColumnCounts.map((item) => {
-        tCount += item;
-        return tCount;
-      });
+      this.questionInfoTable = [tData, ...Object.values(targetMap)];
     },
-    parseStudentScoreTable(studentScores) {
-      const studentScoreTable = studentScores.map((student) => {
-        const nitem = {
-          name: student.name,
-          code: student.code,
-          totalScore: student.totalScore,
+    getQuestionInfoChartOption(scoreList) {
+      const scoreRange = scoreList.scoreRange.map((item) => {
+        return {
+          name: `${item.minScore}~${item.maxScore}`,
+          value: item.studentCount,
         };
-
-        student.courseTargets.forEach((target) => {
-          target.endDimensions.forEach((dimension) => {
-            nitem[`${target.name}-${target.endExam}-${dimension.name}`] =
-              dimension.score;
-          });
-          target.normalWorks.forEach((work) => {
-            nitem[`${target.name}-${target.normalExam}-${work.name}`] =
-              work.score;
-          });
-        });
-        return nitem;
       });
-
-      let targetData = {
-        name: "课程目标达成度",
-        totalScore: "",
-      };
-      this.courseTargets.forEach((target) => {
-        targetData[
-          `${target.name}-${target.endExam}-${target.endDimensions[0]}`
-        ] = target.getVal;
+      scoreRange.unshift({
+        name: "不及格",
+        value: scoreList.failRate,
       });
-      studentScoreTable.push(targetData);
 
-      const fTarget = this.courseTargets[0];
-      studentScoreTable.push({
-        name: "课程达成度",
-        [`${fTarget.name}-${fTarget.endExam}-${fTarget.endDimensions[0]}`]:
-          this.totalGetVal,
-      });
-      this.studentScoreTable = studentScoreTable;
-    },
-    studentScoreSpanMethod({ row, column, rowIndex, columnIndex }) {
-      const lineCount = this.studentScoreTable.length - 1;
-      const maxTargetColumnCount = this.targetColumnCounts.slice(-1)[0];
-      if (rowIndex === lineCount) {
-        if (columnIndex === 0) {
-          return [1, 2];
-        } else if (columnIndex === 2) {
-          return [1, maxTargetColumnCount + 1];
-        } else {
-          return [0, 0];
-        }
-      }
-      if (rowIndex === lineCount - 1) {
-        const colsMap = {};
-        const targetColumns = [0, ...this.targetColumnCounts.slice(0, -1)];
-        targetColumns.map((item, index) => {
-          colsMap[item] = this.targetColumnCounts[index] - item;
-        });
-        if (columnIndex === 0) {
-          return [1, 2];
-        } else {
-          if (targetColumns.includes(columnIndex - 2)) {
-            return [1, colsMap[columnIndex - 2]];
-          } else if (columnIndex < maxTargetColumnCount + 2) {
-            return [0, 0];
-          } else {
-            return [1, 1];
-          }
-        }
-      }
-      if (rowIndex === lineCount - 2) {
-        if (columnIndex === 0) {
-          return [1, 2];
-        } else if (columnIndex === 1) {
-          return [0, 0];
-        } else {
-          return [1, 1];
-        }
-      }
-    },
-    getScoreDistributionChartOption() {
       let options = {
         color: ["#556dff", "#3A5AE5"],
         title: {
@@ -538,7 +503,7 @@ export default {
           nameTextStyle: {
             color: "#363D59",
           },
-          data: this.scoreDistribution.map((item) => item.name),
+          data: scoreRange.map((item) => item.name),
           axisLabel: {
             color: "#6F7482",
             interval: 0,
@@ -586,7 +551,7 @@ export default {
             name: "占比",
             type: "bar",
             barWidth: 60,
-            data: this.scoreDistribution.map((item) => item.val),
+            data: scoreRange.map((item) => item.value),
             label: {
               show: true,
               formatter: "{c}%",
@@ -625,7 +590,7 @@ export default {
           nameTextStyle: {
             color: "#363D59",
           },
-          data: this.courseTargetList.map((item) => item.name),
+          data: this.courseTargetList.map((item) => item.targetName),
           axisLabel: {
             color: "#6F7482",
             interval: 0,
@@ -676,7 +641,7 @@ export default {
             name: "达成值",
             type: "bar",
             barWidth: 60,
-            data: this.courseTargetList.map((item) => item.getVal),
+            data: this.courseTargetList.map((item) => item.evaluationValue),
             label: {
               show: true,
               position: "top",
@@ -686,7 +651,208 @@ export default {
             name: "期望值",
             type: "line",
             symbol: "none",
-            data: this.courseTargetList.map((item) => this.totalGetVal),
+            data: this.courseTargetList.map((item) => this.courseTargetValue),
+          },
+        ],
+      };
+      return options;
+    },
+    parseCourseTargets(examStudentList) {
+      if (!examStudentList || !examStudentList.length) return;
+
+      const targetList = examStudentList[0].targetList;
+
+      let tColumnCounts = [];
+      this.courseTargets = targetList.map((target) => {
+        const ntarget = {
+          targetId: target.targetId,
+          targetName: target.targetName,
+          finalWeight: target.finalScore.weight,
+          usualWeight: target.usualScore.weight,
+          evaluationValue: target.evaluationValue,
+        };
+        ntarget.finalDimensions = target.finalScore.dimensionList.map(
+          (item) => item.dimensionCode
+        );
+        ntarget.usualWorks = target.usualScore.scoreList.map(
+          (item) => item.name
+        );
+        tColumnCounts.push(
+          ntarget.finalDimensions.length + ntarget.usualWorks.length
+        );
+        return ntarget;
+      });
+
+      let tCount = 0;
+      this.targetColumnCounts = tColumnCounts.map((item) => {
+        tCount += item;
+        return tCount;
+      });
+    },
+    parseStudentScoreTable(examStudentList) {
+      const studentScoreTable = examStudentList.map((student) => {
+        const nitem = {
+          name: student.name,
+          studentCode: student.studentCode,
+          score: student.score,
+        };
+
+        student.targetList.forEach((target) => {
+          target.finalScore.dimensionList.forEach((dimension) => {
+            nitem[`${target.targetId}-final-${dimension.dimensionCode}`] =
+              dimension.dimensionScore;
+          });
+          target.usualScore.scoreList.forEach((work) => {
+            nitem[`${target.targetId}-usual-${work.name}`] = work.score;
+          });
+        });
+        return nitem;
+      });
+
+      const targetData = {
+        name: "课程目标达成度",
+        score: "",
+      };
+      this.courseTargets.forEach((target) => {
+        targetData[`${target.targetId}-final-${target.finalDimensions[0]}`] =
+          target.evaluationValue;
+      });
+      studentScoreTable.push(targetData);
+
+      const fTarget = this.courseTargets[0];
+      studentScoreTable.push({
+        name: "课程达成度",
+        [`${fTarget.targetId}-final-${fTarget.finalDimensions[0]}`]:
+          this.courseTargetValue,
+      });
+      this.studentScoreTable = studentScoreTable;
+    },
+    studentScoreSpanMethod({ row, column, rowIndex, columnIndex }) {
+      const lineCount = this.studentScoreTable.length - 1;
+      const maxTargetColumnCount = this.targetColumnCounts.slice(-1)[0];
+      if (rowIndex === lineCount) {
+        if (columnIndex === 0) {
+          return [1, 2];
+        } else if (columnIndex === 2) {
+          return [1, maxTargetColumnCount + 1];
+        } else {
+          return [0, 0];
+        }
+      }
+      if (rowIndex === lineCount - 1) {
+        const colsMap = {};
+        const targetColumns = [0, ...this.targetColumnCounts.slice(0, -1)];
+        targetColumns.map((item, index) => {
+          colsMap[item] = this.targetColumnCounts[index] - item;
+        });
+        if (columnIndex === 0) {
+          return [1, 2];
+        } else {
+          if (targetColumns.includes(columnIndex - 2)) {
+            return [1, colsMap[columnIndex - 2]];
+          } else if (columnIndex < maxTargetColumnCount + 2) {
+            return [0, 0];
+          } else {
+            return [1, 1];
+          }
+        }
+      }
+      if (rowIndex === lineCount - 2) {
+        if (columnIndex === 0) {
+          return [1, 2];
+        } else if (columnIndex === 1) {
+          return [0, 0];
+        } else {
+          return [1, 1];
+        }
+      }
+    },
+    parseStudentScoreChartOption(examStudentTargets) {
+      let options = {
+        color: ["#556dff", "#f59a23"],
+        title: {
+          text: "课程目标达成评价值",
+          left: "center",
+        },
+        grid: {
+          left: 40,
+          top: 40,
+          right: 80,
+          bottom: 30,
+          containLabel: true,
+        },
+        legend: {
+          top: 0,
+          data: ["平时成绩", "期末成绩"],
+          itemWidth: 12,
+          itemHeight: 4,
+          itemGap: 22,
+          right: 40,
+        },
+        xAxis: {
+          type: "category",
+          name: "课程目标",
+          nameTextStyle: {
+            color: "#363D59",
+          },
+          data: examStudentTargets.map((item) => item.targetName),
+          axisLabel: {
+            color: "#6F7482",
+            interval: 0,
+            fontSize: 12,
+            margin: 12,
+          },
+          axisLine: {
+            show: true,
+            lineStyle: {
+              color: "#EFF0F5",
+            },
+          },
+          splitLine: {
+            show: false,
+          },
+          axisTick: {
+            show: false,
+          },
+          axisPointer: {
+            type: "shadow",
+          },
+        },
+        yAxis: {
+          type: "value",
+          name: "期望值",
+          min: 0,
+          max: 1,
+          interval: 0.1,
+          nameTextStyle: {
+            color: "#363D59",
+          },
+          axisLabel: {
+            color: "#6F7482",
+          },
+          axisLine: {
+            lineStyle: {
+              color: "#EFF0F5",
+            },
+          },
+          splitLine: {
+            lineStyle: {
+              color: "#EFF0F5",
+            },
+          },
+        },
+        series: [
+          {
+            name: "平时成绩",
+            type: "bar",
+            barWidth: 40,
+            data: examStudentTargets.map((item) => item.usualScore),
+          },
+          {
+            name: "期末成绩",
+            type: "bar",
+            barWidth: 40,
+            data: examStudentTargets.map((item) => item.finalScore),
           },
         ],
       };

+ 185 - 122
src/modules/course/components/data.js

@@ -1,85 +1,82 @@
 const courseTargetList = [
   {
-    name: "课程目标1",
-    indicator:
+    targetId: "1",
+    targetName: "课程目标1",
+    evaluationDesc:
       "系统掌握高等数学中的基本概念、基本方法、基本技巧(A1)\n熟练掌握求极限的基本方法与技巧、判断函数的连续性(A2)\n熟练掌握求导数的基本方法与技巧(A3)\n熟练掌握求不定积分与定积分的基本方法与技巧(A4)\n掌握一阶及二阶微分方程的解法(A5)\n熟练掌握多元函数极限的求法、偏导数及全微分的求法,复合函数求导的基本方法与技巧(A6)\n熟练掌握多元函数积分学的基本方法与解题技巧(A7)\n掌握级数敛散性判别法,简单的幂级数求和函数及函数展开成幂级数(A8)",
-    demand: "",
-    commentGist: "",
-    getVal: 0.67,
-    steps: [
+    evaluationValue: 0.67,
+    evaluationList: [
       {
         name: "平时作业",
-        rate: "10%",
+        weight: "10%",
         score: 40,
-        aveScore: 25.93,
+        avg: 25.93,
       },
       {
         name: "期中考查",
-        rate: "20%",
+        weight: "20%",
         score: 5,
-        aveScore: 4.23,
+        avg: 4.23,
       },
       {
         name: "期末考试",
-        rate: "70%",
+        weight: "70%",
         score: 10,
-        aveScore: 7.82,
+        avg: 7.82,
       },
     ],
   },
   {
-    name: "课程目标2",
-    indicator:
+    targetId: "2",
+    targetName: "课程目标2",
+    evaluationDesc:
       "掌握数列极限、函数极限的基本概念、性质并会求极限(B1)\n微分中值定理的证明及其应用(B2)\n隐函数求导(B3)\n幂级数求和函数及函数展开成幂级数(B4)",
-    demand: "",
-    commentGist: "",
-    getVal: 0.75,
-    steps: [
+    evaluationValue: 0.75,
+    evaluationList: [
       {
         name: "平时作业",
-        rate: "10%",
+        weight: "10%",
         score: 40,
-        aveScore: 27.93,
+        avg: 27.93,
       },
       {
         name: "期中考查",
-        rate: "20%",
+        weight: "20%",
         score: 5,
-        aveScore: 4.23,
+        avg: 4.23,
       },
       {
         name: "期末考试",
-        rate: "70%",
+        weight: "70%",
         score: 10,
-        aveScore: 7.82,
+        avg: 7.82,
       },
     ],
   },
   {
-    name: "课程目标3",
-    indicator:
+    targetId: "3",
+    targetName: "课程目标3",
+    evaluationDesc:
       "掌握微分的应用、微分中值定理的应用、函数的图形与性态、求函数的极值与最值(C1)\n掌握定积分几何应用(C2)\n掌握多元函数微分学的应用(C3)\n熟练掌握二重积分(C4)",
-    demand: "",
-    commentGist: "",
-    getVal: 0.82,
-    steps: [
+    evaluationValue: 0.82,
+    evaluationList: [
       {
         name: "平时作业",
-        rate: "10%",
+        weight: "10%",
         score: 40,
-        aveScore: 32.93,
+        avg: 32.93,
       },
       {
         name: "期中考查",
-        rate: "20%",
+        weight: "20%",
         score: 5,
-        aveScore: 4.23,
+        avg: 4.23,
       },
       {
         name: "期末考试",
-        rate: "70%",
+        weight: "70%",
         score: 10,
-        aveScore: 8.82,
+        avg: 8.82,
       },
     ],
   },
@@ -102,40 +99,28 @@ const structs = [
     score: 10,
   },
 ];
-let distributionList = [];
-let targetScore = {
-  name: "目标分值",
-  totalScore: 0,
-  scores: [],
-};
+const questionInfo = [];
 structs.forEach((item, index) => {
   for (let i = 0; i < item.subQuestionCount; i++) {
-    targetScore.scores.push({
+    questionInfo.push({
       mainNumber: index + 1,
       subNumber: i + 1,
       score: item.score,
+      targetList: getQuestionInfoTarget(),
     });
   }
 });
-distributionList.push(targetScore);
-courseTargetList.forEach((item, iindex) => {
-  const ts = {
-    name: item.name,
-    totalScore: 0,
-    scores: [],
-  };
-  structs.forEach((item, index) => {
-    for (let i = 0; i < item.subQuestionCount; i++) {
-      const score = iindex === i % 3 ? item.score : 0;
-      ts.scores.push({
-        mainNumber: index + 1,
-        subNumber: i + 1,
-        score,
-      });
-    }
+
+function getQuestionInfoTarget() {
+  const targets = getRandamItems(courseTargetList, getRandomNum(2, 1));
+  return targets.map((item) => {
+    return {
+      targetId: item.targetId,
+      targetName: item.targetName,
+      dimensionList: [1],
+    };
   });
-  distributionList.push(ts);
-});
+}
 
 const dimensionNames = [
   "A1",
@@ -144,7 +129,7 @@ const dimensionNames = [
   "A4",
   "B1",
   "B2",
-  "B2",
+  "B3",
   "C1",
   "C2",
   "C3",
@@ -180,11 +165,12 @@ function getRandamItems(list, num) {
   return data;
 }
 
-const courseStructs = courseTargetList.map((course) => {
+const courseStructs = courseTargetList.map((target) => {
   const endRate = getRandomNum(10, 2);
   return {
-    name: course.name,
-    getVal: course.getVal,
+    targetId: target.targetId,
+    targetName: target.targetName,
+    evaluationValue: target.evaluationValue,
     endExam: "期末考试",
     endDimensions: getRandamItems(dimensionNames, 4),
     endRate: endRate / 10,
@@ -194,77 +180,154 @@ const courseStructs = courseTargetList.map((course) => {
   };
 });
 
-const studentScores = [...getRandamItems(students, 4), "平均分"].map(
+const examStudentList = [...getRandamItems(students, 4), "平均分"].map(
   (item, index) => {
-    const courseTargets = courseStructs.map((target) => {
-      const ntarget = { ...target };
-      ntarget.endDimensions = target.endDimensions.map((ditem) => {
-        return {
-          name: ditem,
-          score: getRandomNum(5),
-        };
-      });
-      ntarget.normalWorks = target.normalWorks.map((witem) => {
-        return {
-          name: witem,
-          score: getRandomNum(100),
-        };
-      });
+    const targetList = courseStructs.map((target) => {
+      const ntarget = {
+        targetId: target.targetId,
+        targetName: target.targetName,
+        evaluationValue: target.evaluationValue,
+      };
+      ntarget.finalScore = {
+        weight: target.endRate,
+        dimensionList: target.endDimensions.map((ditem) => {
+          return {
+            dimensionId: ditem,
+            dimensionCode: ditem,
+            dimensionName: ditem,
+            dimensionScore: getRandomNum(5),
+          };
+        }),
+      };
+      ntarget.usualScore = {
+        weight: target.normalRate,
+        scoreList: target.normalWorks.map((witem) => {
+          return {
+            name: witem,
+            score: getRandomNum(100),
+          };
+        }),
+      };
       return ntarget;
     });
 
     const nitem = {
       name: item,
-      code: "082001" + index,
-      courseTargets,
-      totalScore: getRandomNum(100),
+      studentCode: "082001" + index,
+      score: getRandomNum(100),
+      targetList,
     };
     return nitem;
   }
 );
 
 export const reportData = {
-  baseInfo: {
-    courseCode: "261062",
-    courseName: "高等数学",
+  commonInfo: {
+    //公共信息
+    examId: "1",
+    courseCode: "1001",
+    couserName: "数学",
+    paperNumber: "1235678909",
+  },
+  courseBasicInfo: {
+    //课程基本情况
+    credit: 2,
+    period: 60,
     courseType: "",
-    stdScore: undefined,
-    examType: "",
-    courseStartTime: "2022-2023学年第2学期",
-    teachClazz: "2019级生物科学2班",
-    teachHours: undefined,
-    studentCount: undefined,
-    commentCount: 45,
-    courseTarget: 0.7,
-    teachTeacher: "李老师",
-    commentManager: "",
-    commentUsers: "",
-    examName: "期末考试",
+    evaluationMode: "",
+    openTime: "2022-2023学年第2学期",
+    teachingObject: "2019级生物科学2班",
+    selectionCount: null,
+    participantCount: 45,
+    courseDegree: 0.5,
+    teacher: "李老师",
+    director: "评价责任人",
+    participant: "评价参与人",
   },
-  courseTargetList,
-  distributionList,
-  scoreDistribution: [
-    {
-      name: "不及格",
-      val: 17.5,
+  courseEvaluationSpread: {
+    questionInfo,
+    scoreList: {
+      failCount: 1,
+      failRate: 160,
+      scoreRange: [
+        {
+          studentCount: 6,
+          minScore: 1,
+          maxScore: 9.5,
+          rate: 144,
+        },
+        {
+          studentCount: 7,
+          minScore: 10,
+          maxScore: 19.5,
+          rate: 168,
+        },
+        {
+          studentCount: 0,
+          minScore: 20,
+          maxScore: 29.5,
+          rate: 0,
+        },
+        {
+          studentCount: 0,
+          minScore: 30,
+          maxScore: 39.5,
+          rate: 0,
+        },
+        {
+          studentCount: 0,
+          minScore: 40,
+          maxScore: 49.5,
+          rate: 0,
+        },
+        {
+          studentCount: 0,
+          minScore: 50,
+          maxScore: 59.5,
+          rate: 0,
+        },
+        {
+          studentCount: 0,
+          minScore: 60,
+          maxScore: 69.5,
+          rate: 0,
+        },
+        {
+          studentCount: 0,
+          minScore: 70,
+          maxScore: 79.5,
+          rate: 0,
+        },
+        {
+          studentCount: 0,
+          minScore: 80,
+          maxScore: 89.5,
+          rate: 0,
+        },
+        {
+          studentCount: 0,
+          minScore: 90,
+          maxScore: 100,
+          rate: 0,
+        },
+      ],
     },
-    {
-      name: "60-69",
-      val: 19.3,
-    },
-    {
-      name: "70-79",
-      val: 20.7,
-    },
-    {
-      name: "80-89",
-      val: 35.5,
-    },
-    {
-      name: "90-100",
-      val: 7,
-    },
-  ],
-  studentScores,
+  },
+  courseEvaluationResult: {
+    target: "课程总目标",
+    targetValue: 0.89,
+    targetList: courseTargetList,
+  },
+  courseEvaluationResultDetail: {
+    examStudentList,
+    courseTargetList: courseTargetList.map((item) => {
+      return {
+        targetId: item.targetId,
+        targetName: item.targetName,
+        usualScore: getRandomNum(10, 5) / 10,
+        finalScore: getRandomNum(10, 5) / 10,
+      };
+    }),
+  },
 };
 // console.log(reportData);

+ 1577 - 1132
src/modules/course/components/data.json

@@ -1,1164 +1,1609 @@
 {
-  "baseInfo": {
-    "courseCode": "261062",
-    "courseName": "高等数学",
+  "commonInfo": {
+    "examId": "1",
+    "courseCode": "1001",
+    "couserName": "数学",
+    "paperNumber": "1235678909"
+  },
+  "courseBasicInfo": {
+    "credit": 2,
+    "period": 60,
     "courseType": "",
-    "examType": "",
-    "courseStartTime": "2022-2023学年第2学期",
-    "teachClazz": "2019级生物科学2班",
-    "commentCount": 45,
-    "courseTarget": 0.7,
-    "teachTeacher": "李老师",
-    "commentManager": "",
-    "commentUsers": "",
-    "examName": "期末考试"
+    "evaluationMode": "",
+    "openTime": "2022-2023学年第2学期",
+    "teachingObject": "2019级生物科学2班",
+    "selectionCount": 0,
+    "participantCount": 45,
+    "courseDegree": 0.5,
+    "teacher": "李老师",
+    "director": "评价责任人",
+    "participant": "评价参与人"
   },
-  "courseTargetList": [
-    {
-      "name": "课程目标1",
-      "indicator": "系统掌握高等数学中的基本概念、基本方法、基本技巧(A1)\n熟练掌握求极限的基本方法与技巧、判断函数的连续性(A2)\n熟练掌握求导数的基本方法与技巧(A3)\n熟练掌握求不定积分与定积分的基本方法与技巧(A4)\n掌握一阶及二阶微分方程的解法(A5)\n熟练掌握多元函数极限的求法、偏导数及全微分的求法,复合函数求导的基本方法与技巧(A6)\n熟练掌握多元函数积分学的基本方法与解题技巧(A7)\n掌握级数敛散性判别法,简单的幂级数求和函数及函数展开成幂级数(A8)",
-      "demand": "",
-      "commentGist": "",
-      "getVal": 0.67,
-      "steps": [
-        {
-          "name": "平时作业",
-          "rate": "10%",
-          "score": 40,
-          "aveScore": 25.93
-        },
-        {
-          "name": "期中考查",
-          "rate": "20%",
-          "score": 5,
-          "aveScore": 4.23
-        },
-        {
-          "name": "期末考试",
-          "rate": "70%",
-          "score": 10,
-          "aveScore": 7.82
-        }
-      ]
-    },
-    {
-      "name": "课程目标2",
-      "indicator": "掌握数列极限、函数极限的基本概念、性质并会求极限(B1)\n微分中值定理的证明及其应用(B2)\n隐函数求导(B3)\n幂级数求和函数及函数展开成幂级数(B4)",
-      "demand": "",
-      "commentGist": "",
-      "getVal": 0.75,
-      "steps": [
-        {
-          "name": "平时作业",
-          "rate": "10%",
-          "score": 40,
-          "aveScore": 27.93
-        },
-        {
-          "name": "期中考查",
-          "rate": "20%",
-          "score": 5,
-          "aveScore": 4.23
-        },
-        {
-          "name": "期末考试",
-          "rate": "70%",
-          "score": 10,
-          "aveScore": 7.82
-        }
-      ]
-    },
-    {
-      "name": "课程目标3",
-      "indicator": "掌握微分的应用、微分中值定理的应用、函数的图形与性态、求函数的极值与最值(C1)\n掌握定积分几何应用(C2)\n掌握多元函数微分学的应用(C3)\n熟练掌握二重积分(C4)",
-      "demand": "",
-      "commentGist": "",
-      "getVal": 0.82,
-      "steps": [
-        {
-          "name": "平时作业",
-          "rate": "10%",
-          "score": 40,
-          "aveScore": 32.93
-        },
-        {
-          "name": "期中考查",
-          "rate": "20%",
-          "score": 5,
-          "aveScore": 4.23
-        },
-        {
-          "name": "期末考试",
-          "rate": "70%",
-          "score": 10,
-          "aveScore": 8.82
-        }
-      ]
-    }
-  ],
-  "distributionList": [
-    {
-      "name": "目标分值",
-      "totalScore": 0,
-      "scores": [
-        {
-          "mainNumber": 1,
-          "subNumber": 1,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 2,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 3,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 4,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 5,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 6,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 7,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 8,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 9,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 10,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 11,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 12,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 13,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 14,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 15,
-          "score": 2
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 1,
-          "score": 2
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 2,
-          "score": 2
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 3,
-          "score": 2
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 4,
-          "score": 2
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 5,
-          "score": 2
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 1,
-          "score": 5
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 2,
-          "score": 5
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 3,
-          "score": 5
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 4,
-          "score": 5
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 5,
-          "score": 5
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 6,
-          "score": 5
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 1,
-          "score": 10
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 2,
-          "score": 10
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 3,
-          "score": 10
-        }
-      ]
-    },
-    {
-      "name": "课程目标1",
-      "totalScore": 0,
-      "scores": [
-        {
-          "mainNumber": 1,
-          "subNumber": 1,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 2,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 3,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 4,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 5,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 6,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 7,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 8,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 9,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 10,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 11,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 12,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 13,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 14,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 15,
-          "score": 0
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 1,
-          "score": 2
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 2,
-          "score": 0
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 3,
-          "score": 0
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 4,
-          "score": 2
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 5,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 1,
-          "score": 5
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 2,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 3,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 4,
-          "score": 5
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 5,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 6,
-          "score": 0
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 1,
-          "score": 10
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 2,
-          "score": 0
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 3,
-          "score": 0
-        }
-      ]
-    },
-    {
-      "name": "课程目标2",
-      "totalScore": 0,
-      "scores": [
-        {
-          "mainNumber": 1,
-          "subNumber": 1,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 2,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 3,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 4,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 5,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 6,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 7,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 8,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 9,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 10,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 11,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 12,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 13,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 14,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 15,
-          "score": 0
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 1,
-          "score": 0
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 2,
-          "score": 2
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 3,
-          "score": 0
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 4,
-          "score": 0
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 5,
-          "score": 2
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 1,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 2,
-          "score": 5
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 3,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 4,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 5,
-          "score": 5
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 6,
-          "score": 0
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 1,
-          "score": 0
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 2,
-          "score": 10
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 3,
-          "score": 0
+  "courseEvaluationSpread": {
+    "questionInfo": [
+      {
+        "mainNumber": 1,
+        "subNumber": 1,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 2,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 3,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 4,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 5,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 6,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 7,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 8,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 9,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 10,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 11,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 12,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 13,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 14,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 1,
+        "subNumber": 15,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 2,
+        "subNumber": 1,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 2,
+        "subNumber": 2,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 2,
+        "subNumber": 3,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 2,
+        "subNumber": 4,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 2,
+        "subNumber": 5,
+        "score": 2,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 3,
+        "subNumber": 1,
+        "score": 5,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 3,
+        "subNumber": 2,
+        "score": 5,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 3,
+        "subNumber": 3,
+        "score": 5,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 3,
+        "subNumber": 4,
+        "score": 5,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 3,
+        "subNumber": 5,
+        "score": 5,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 3,
+        "subNumber": 6,
+        "score": 5,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 4,
+        "subNumber": 1,
+        "score": 10,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 4,
+        "subNumber": 2,
+        "score": 10,
+        "targetList": [
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      },
+      {
+        "mainNumber": 4,
+        "subNumber": 3,
+        "score": 10,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "dimensionList": [
+              1
+            ]
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "dimensionList": [
+              1
+            ]
+          }
+        ]
+      }
+    ],
+    "scoreList": {
+      "failCount": 1,
+      "failRate": 160,
+      "scoreRange": [
+        {
+          "studentCount": 6,
+          "minScore": 1,
+          "maxScore": 9.5,
+          "rate": 144
+        },
+        {
+          "studentCount": 7,
+          "minScore": 10,
+          "maxScore": 19.5,
+          "rate": 168
+        },
+        {
+          "studentCount": 0,
+          "minScore": 20,
+          "maxScore": 29.5,
+          "rate": 0
+        },
+        {
+          "studentCount": 0,
+          "minScore": 30,
+          "maxScore": 39.5,
+          "rate": 0
+        },
+        {
+          "studentCount": 0,
+          "minScore": 40,
+          "maxScore": 49.5,
+          "rate": 0
+        },
+        {
+          "studentCount": 0,
+          "minScore": 50,
+          "maxScore": 59.5,
+          "rate": 0
+        },
+        {
+          "studentCount": 0,
+          "minScore": 60,
+          "maxScore": 69.5,
+          "rate": 0
+        },
+        {
+          "studentCount": 0,
+          "minScore": 70,
+          "maxScore": 79.5,
+          "rate": 0
+        },
+        {
+          "studentCount": 0,
+          "minScore": 80,
+          "maxScore": 89.5,
+          "rate": 0
+        },
+        {
+          "studentCount": 0,
+          "minScore": 90,
+          "maxScore": 100,
+          "rate": 0
         }
       ]
-    },
-    {
-      "name": "课程目标3",
-      "totalScore": 0,
-      "scores": [
-        {
-          "mainNumber": 1,
-          "subNumber": 1,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 2,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 3,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 4,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 5,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 6,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 7,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 8,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 9,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 10,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 11,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 12,
-          "score": 2
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 13,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 14,
-          "score": 0
-        },
-        {
-          "mainNumber": 1,
-          "subNumber": 15,
-          "score": 2
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 1,
-          "score": 0
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 2,
-          "score": 0
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 3,
-          "score": 2
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 4,
-          "score": 0
-        },
-        {
-          "mainNumber": 2,
-          "subNumber": 5,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 1,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 2,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 3,
-          "score": 5
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 4,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 5,
-          "score": 0
-        },
-        {
-          "mainNumber": 3,
-          "subNumber": 6,
-          "score": 5
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 1,
-          "score": 0
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 2,
-          "score": 0
-        },
-        {
-          "mainNumber": 4,
-          "subNumber": 3,
-          "score": 10
-        }
-      ]
-    }
-  ],
-  "scoreDistribution": [
-    {
-      "name": "不及格",
-      "val": 17.5
-    },
-    {
-      "name": "60-69",
-      "val": 19.3
-    },
-    {
-      "name": "70-79",
-      "val": 20.7
-    },
-    {
-      "name": "80-89",
-      "val": 35.5
-    },
-    {
-      "name": "90-100",
-      "val": 7
     }
-  ],
-  "studentScores": [
-    {
-      "name": "李阳",
-      "code": "0820010",
-      "courseTargets": [
-        {
-          "name": "课程目标1",
-          "getVal": 0.67,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "A2",
-              "score": 2
-            },
-            {
-              "name": "C1",
-              "score": 2
+  },
+  "courseEvaluationResult": {
+    "target": "课程总目标",
+    "targetValue": 0.89,
+    "targetList": [
+      {
+        "targetId": "1",
+        "targetName": "课程目标1",
+        "evaluationDesc": "系统掌握高等数学中的基本概念、基本方法、基本技巧(A1)\n熟练掌握求极限的基本方法与技巧、判断函数的连续性(A2)\n熟练掌握求导数的基本方法与技巧(A3)\n熟练掌握求不定积分与定积分的基本方法与技巧(A4)\n掌握一阶及二阶微分方程的解法(A5)\n熟练掌握多元函数极限的求法、偏导数及全微分的求法,复合函数求导的基本方法与技巧(A6)\n熟练掌握多元函数积分学的基本方法与解题技巧(A7)\n掌握级数敛散性判别法,简单的幂级数求和函数及函数展开成幂级数(A8)",
+        "evaluationValue": 0.67,
+        "evaluationList": [
+          {
+            "name": "平时作业",
+            "weight": "10%",
+            "score": 40,
+            "avg": 25.93
+          },
+          {
+            "name": "期中考查",
+            "weight": "20%",
+            "score": 5,
+            "avg": 4.23
+          },
+          {
+            "name": "期末考试",
+            "weight": "70%",
+            "score": 10,
+            "avg": 7.82
+          }
+        ]
+      },
+      {
+        "targetId": "2",
+        "targetName": "课程目标2",
+        "evaluationDesc": "掌握数列极限、函数极限的基本概念、性质并会求极限(B1)\n微分中值定理的证明及其应用(B2)\n隐函数求导(B3)\n幂级数求和函数及函数展开成幂级数(B4)",
+        "evaluationValue": 0.75,
+        "evaluationList": [
+          {
+            "name": "平时作业",
+            "weight": "10%",
+            "score": 40,
+            "avg": 27.93
+          },
+          {
+            "name": "期中考查",
+            "weight": "20%",
+            "score": 5,
+            "avg": 4.23
+          },
+          {
+            "name": "期末考试",
+            "weight": "70%",
+            "score": 10,
+            "avg": 7.82
+          }
+        ]
+      },
+      {
+        "targetId": "3",
+        "targetName": "课程目标3",
+        "evaluationDesc": "掌握微分的应用、微分中值定理的应用、函数的图形与性态、求函数的极值与最值(C1)\n掌握定积分几何应用(C2)\n掌握多元函数微分学的应用(C3)\n熟练掌握二重积分(C4)",
+        "evaluationValue": 0.82,
+        "evaluationList": [
+          {
+            "name": "平时作业",
+            "weight": "10%",
+            "score": 40,
+            "avg": 32.93
+          },
+          {
+            "name": "期中考查",
+            "weight": "20%",
+            "score": 5,
+            "avg": 4.23
+          },
+          {
+            "name": "期末考试",
+            "weight": "70%",
+            "score": 10,
+            "avg": 8.82
+          }
+        ]
+      }
+    ]
+  },
+  "courseEvaluationResultDetail": {
+    "examStudentList": [
+      {
+        "name": "李阳",
+        "studentCode": "0820010",
+        "score": 64,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "evaluationValue": 0.67,
+            "finalScore": {
+              "weight": 0.5,
+              "dimensionList": [
+                {
+                  "dimensionId": "A2",
+                  "dimensionCode": "A2",
+                  "dimensionName": "A2",
+                  "dimensionScore": 3
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "B2",
+                  "dimensionCode": "B2",
+                  "dimensionName": "B2",
+                  "dimensionScore": 1
+                },
+                {
+                  "dimensionId": "C2",
+                  "dimensionCode": "C2",
+                  "dimensionName": "C2",
+                  "dimensionScore": 2
+                }
+              ]
             },
-            {
-              "name": "A1",
-              "score": 4
-            }
-          ],
-          "endRate": 0.5,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业2",
-              "score": 74
-            }
-          ],
-          "normalRate": 0.5
-        },
-        {
-          "name": "课程目标2",
-          "getVal": 0.75,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "B2",
-              "score": 2
+            "usualScore": {
+              "weight": 0.5,
+              "scoreList": [
+                {
+                  "name": "作业2",
+                  "score": 16
+                },
+                {
+                  "name": "作业4",
+                  "score": 35
+                },
+                {
+                  "name": "作业3",
+                  "score": 42
+                }
+              ]
             }
-          ],
-          "endRate": 0.5,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业1",
-              "score": 50
-            }
-          ],
-          "normalRate": 0.5
-        },
-        {
-          "name": "课程目标3",
-          "getVal": 0.82,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "A4",
-              "score": 3
-            },
-            {
-              "name": "C3",
-              "score": 2
-            },
-            {
-              "name": "A4",
-              "score": 1
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "evaluationValue": 0.75,
+            "finalScore": {
+              "weight": 0.5,
+              "dimensionList": [
+                {
+                  "dimensionId": "A4",
+                  "dimensionCode": "A4",
+                  "dimensionName": "A4",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "B2",
+                  "dimensionCode": "B2",
+                  "dimensionName": "B2",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "A1",
+                  "dimensionCode": "A1",
+                  "dimensionName": "A1",
+                  "dimensionScore": 1
+                }
+              ]
             },
-            {
-              "name": "C2",
-              "score": 5
+            "usualScore": {
+              "weight": 0.5,
+              "scoreList": [
+                {
+                  "name": "作业3",
+                  "score": 83
+                },
+                {
+                  "name": "作业4",
+                  "score": 27
+                },
+                {
+                  "name": "作业5",
+                  "score": 70
+                }
+              ]
             }
-          ],
-          "endRate": 0.6,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业5",
-              "score": 40
-            }
-          ],
-          "normalRate": 0.4
-        }
-      ],
-      "totalScore": 5
-    },
-    {
-      "name": "徐琦",
-      "code": "0820011",
-      "courseTargets": [
-        {
-          "name": "课程目标1",
-          "getVal": 0.67,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "A2",
-              "score": 4
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "evaluationValue": 0.82,
+            "finalScore": {
+              "weight": 0.4,
+              "dimensionList": [
+                {
+                  "dimensionId": "B1",
+                  "dimensionCode": "B1",
+                  "dimensionName": "B1",
+                  "dimensionScore": 1
+                },
+                {
+                  "dimensionId": "C2",
+                  "dimensionCode": "C2",
+                  "dimensionName": "C2",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "C3",
+                  "dimensionCode": "C3",
+                  "dimensionName": "C3",
+                  "dimensionScore": 2
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 4
+                }
+              ]
             },
-            {
-              "name": "C1",
-              "score": 2
-            },
-            {
-              "name": "A1",
-              "score": 2
-            }
-          ],
-          "endRate": 0.5,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业2",
-              "score": 88
+            "usualScore": {
+              "weight": 0.6,
+              "scoreList": [
+                {
+                  "name": "作业5",
+                  "score": 54
+                },
+                {
+                  "name": "作业4",
+                  "score": 86
+                },
+                {
+                  "name": "作业2",
+                  "score": 65
+                }
+              ]
             }
-          ],
-          "normalRate": 0.5
-        },
-        {
-          "name": "课程目标2",
-          "getVal": 0.75,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "B2",
-              "score": 5
-            }
-          ],
-          "endRate": 0.5,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业1",
-              "score": 36
-            }
-          ],
-          "normalRate": 0.5
-        },
-        {
-          "name": "课程目标3",
-          "getVal": 0.82,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "A4",
-              "score": 2
-            },
-            {
-              "name": "C3",
-              "score": 5
-            },
-            {
-              "name": "A4",
-              "score": 5
+          }
+        ]
+      },
+      {
+        "name": "陈真",
+        "studentCode": "0820011",
+        "score": 54,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "evaluationValue": 0.67,
+            "finalScore": {
+              "weight": 0.5,
+              "dimensionList": [
+                {
+                  "dimensionId": "A2",
+                  "dimensionCode": "A2",
+                  "dimensionName": "A2",
+                  "dimensionScore": 2
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 2
+                },
+                {
+                  "dimensionId": "B2",
+                  "dimensionCode": "B2",
+                  "dimensionName": "B2",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "C2",
+                  "dimensionCode": "C2",
+                  "dimensionName": "C2",
+                  "dimensionScore": 5
+                }
+              ]
             },
-            {
-              "name": "C2",
-              "score": 4
+            "usualScore": {
+              "weight": 0.5,
+              "scoreList": [
+                {
+                  "name": "作业2",
+                  "score": 71
+                },
+                {
+                  "name": "作业4",
+                  "score": 8
+                },
+                {
+                  "name": "作业3",
+                  "score": 15
+                }
+              ]
             }
-          ],
-          "endRate": 0.6,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业5",
-              "score": 8
-            }
-          ],
-          "normalRate": 0.4
-        }
-      ],
-      "totalScore": 41
-    },
-    {
-      "name": "张华",
-      "code": "0820012",
-      "courseTargets": [
-        {
-          "name": "课程目标1",
-          "getVal": 0.67,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "A2",
-              "score": 3
-            },
-            {
-              "name": "C1",
-              "score": 1
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "evaluationValue": 0.75,
+            "finalScore": {
+              "weight": 0.5,
+              "dimensionList": [
+                {
+                  "dimensionId": "A4",
+                  "dimensionCode": "A4",
+                  "dimensionName": "A4",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "B2",
+                  "dimensionCode": "B2",
+                  "dimensionName": "B2",
+                  "dimensionScore": 1
+                },
+                {
+                  "dimensionId": "A1",
+                  "dimensionCode": "A1",
+                  "dimensionName": "A1",
+                  "dimensionScore": 2
+                }
+              ]
             },
-            {
-              "name": "A1",
-              "score": 2
-            }
-          ],
-          "endRate": 0.5,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业2",
-              "score": 31
-            }
-          ],
-          "normalRate": 0.5
-        },
-        {
-          "name": "课程目标2",
-          "getVal": 0.75,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "B2",
-              "score": 1
-            }
-          ],
-          "endRate": 0.5,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业1",
-              "score": 78
+            "usualScore": {
+              "weight": 0.5,
+              "scoreList": [
+                {
+                  "name": "作业3",
+                  "score": 100
+                },
+                {
+                  "name": "作业4",
+                  "score": 91
+                },
+                {
+                  "name": "作业5",
+                  "score": 60
+                }
+              ]
             }
-          ],
-          "normalRate": 0.5
-        },
-        {
-          "name": "课程目标3",
-          "getVal": 0.82,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "A4",
-              "score": 3
-            },
-            {
-              "name": "C3",
-              "score": 1
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "evaluationValue": 0.82,
+            "finalScore": {
+              "weight": 0.4,
+              "dimensionList": [
+                {
+                  "dimensionId": "B1",
+                  "dimensionCode": "B1",
+                  "dimensionName": "B1",
+                  "dimensionScore": 3
+                },
+                {
+                  "dimensionId": "C2",
+                  "dimensionCode": "C2",
+                  "dimensionName": "C2",
+                  "dimensionScore": 2
+                },
+                {
+                  "dimensionId": "C3",
+                  "dimensionCode": "C3",
+                  "dimensionName": "C3",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 5
+                }
+              ]
             },
-            {
-              "name": "A4",
-              "score": 3
-            },
-            {
-              "name": "C2",
-              "score": 3
-            }
-          ],
-          "endRate": 0.6,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业5",
-              "score": 67
+            "usualScore": {
+              "weight": 0.6,
+              "scoreList": [
+                {
+                  "name": "作业5",
+                  "score": 37
+                },
+                {
+                  "name": "作业4",
+                  "score": 87
+                },
+                {
+                  "name": "作业2",
+                  "score": 98
+                }
+              ]
             }
-          ],
-          "normalRate": 0.4
-        }
-      ],
-      "totalScore": 9
-    },
-    {
-      "name": "赵明",
-      "code": "0820013",
-      "courseTargets": [
-        {
-          "name": "课程目标1",
-          "getVal": 0.67,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "A2",
-              "score": 3
-            },
-            {
-              "name": "C1",
-              "score": 4
+          }
+        ]
+      },
+      {
+        "name": "李佳",
+        "studentCode": "0820012",
+        "score": 37,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "evaluationValue": 0.67,
+            "finalScore": {
+              "weight": 0.5,
+              "dimensionList": [
+                {
+                  "dimensionId": "A2",
+                  "dimensionCode": "A2",
+                  "dimensionName": "A2",
+                  "dimensionScore": 3
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "B2",
+                  "dimensionCode": "B2",
+                  "dimensionName": "B2",
+                  "dimensionScore": 3
+                },
+                {
+                  "dimensionId": "C2",
+                  "dimensionCode": "C2",
+                  "dimensionName": "C2",
+                  "dimensionScore": 4
+                }
+              ]
             },
-            {
-              "name": "A1",
-              "score": 3
-            }
-          ],
-          "endRate": 0.5,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业2",
-              "score": 34
-            }
-          ],
-          "normalRate": 0.5
-        },
-        {
-          "name": "课程目标2",
-          "getVal": 0.75,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "B2",
-              "score": 4
-            }
-          ],
-          "endRate": 0.5,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业1",
-              "score": 86
+            "usualScore": {
+              "weight": 0.5,
+              "scoreList": [
+                {
+                  "name": "作业2",
+                  "score": 62
+                },
+                {
+                  "name": "作业4",
+                  "score": 46
+                },
+                {
+                  "name": "作业3",
+                  "score": 84
+                }
+              ]
             }
-          ],
-          "normalRate": 0.5
-        },
-        {
-          "name": "课程目标3",
-          "getVal": 0.82,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "A4",
-              "score": 2
-            },
-            {
-              "name": "C3",
-              "score": 3
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "evaluationValue": 0.75,
+            "finalScore": {
+              "weight": 0.5,
+              "dimensionList": [
+                {
+                  "dimensionId": "A4",
+                  "dimensionCode": "A4",
+                  "dimensionName": "A4",
+                  "dimensionScore": 1
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "B2",
+                  "dimensionCode": "B2",
+                  "dimensionName": "B2",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "A1",
+                  "dimensionCode": "A1",
+                  "dimensionName": "A1",
+                  "dimensionScore": 1
+                }
+              ]
             },
-            {
-              "name": "A4",
-              "score": 3
-            },
-            {
-              "name": "C2",
-              "score": 5
-            }
-          ],
-          "endRate": 0.6,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业5",
-              "score": 35
+            "usualScore": {
+              "weight": 0.5,
+              "scoreList": [
+                {
+                  "name": "作业3",
+                  "score": 80
+                },
+                {
+                  "name": "作业4",
+                  "score": 72
+                },
+                {
+                  "name": "作业5",
+                  "score": 6
+                }
+              ]
             }
-          ],
-          "normalRate": 0.4
-        }
-      ],
-      "totalScore": 43
-    },
-    {
-      "name": "平均分",
-      "code": "0820014",
-      "courseTargets": [
-        {
-          "name": "课程目标1",
-          "getVal": 0.67,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "A2",
-              "score": 3
-            },
-            {
-              "name": "C1",
-              "score": 1
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "evaluationValue": 0.82,
+            "finalScore": {
+              "weight": 0.4,
+              "dimensionList": [
+                {
+                  "dimensionId": "B1",
+                  "dimensionCode": "B1",
+                  "dimensionName": "B1",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "C2",
+                  "dimensionCode": "C2",
+                  "dimensionName": "C2",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "C3",
+                  "dimensionCode": "C3",
+                  "dimensionName": "C3",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 3
+                }
+              ]
             },
-            {
-              "name": "A1",
-              "score": 5
+            "usualScore": {
+              "weight": 0.6,
+              "scoreList": [
+                {
+                  "name": "作业5",
+                  "score": 78
+                },
+                {
+                  "name": "作业4",
+                  "score": 83
+                },
+                {
+                  "name": "作业2",
+                  "score": 25
+                }
+              ]
             }
-          ],
-          "endRate": 0.5,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业2",
-              "score": 80
-            }
-          ],
-          "normalRate": 0.5
-        },
-        {
-          "name": "课程目标2",
-          "getVal": 0.75,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "B2",
-              "score": 2
+          }
+        ]
+      },
+      {
+        "name": "张华",
+        "studentCode": "0820013",
+        "score": 31,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "evaluationValue": 0.67,
+            "finalScore": {
+              "weight": 0.5,
+              "dimensionList": [
+                {
+                  "dimensionId": "A2",
+                  "dimensionCode": "A2",
+                  "dimensionName": "A2",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 1
+                },
+                {
+                  "dimensionId": "B2",
+                  "dimensionCode": "B2",
+                  "dimensionName": "B2",
+                  "dimensionScore": 3
+                },
+                {
+                  "dimensionId": "C2",
+                  "dimensionCode": "C2",
+                  "dimensionName": "C2",
+                  "dimensionScore": 5
+                }
+              ]
+            },
+            "usualScore": {
+              "weight": 0.5,
+              "scoreList": [
+                {
+                  "name": "作业2",
+                  "score": 62
+                },
+                {
+                  "name": "作业4",
+                  "score": 92
+                },
+                {
+                  "name": "作业3",
+                  "score": 43
+                }
+              ]
             }
-          ],
-          "endRate": 0.5,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业1",
-              "score": 16
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "evaluationValue": 0.75,
+            "finalScore": {
+              "weight": 0.5,
+              "dimensionList": [
+                {
+                  "dimensionId": "A4",
+                  "dimensionCode": "A4",
+                  "dimensionName": "A4",
+                  "dimensionScore": 3
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "B2",
+                  "dimensionCode": "B2",
+                  "dimensionName": "B2",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "A1",
+                  "dimensionCode": "A1",
+                  "dimensionName": "A1",
+                  "dimensionScore": 1
+                }
+              ]
+            },
+            "usualScore": {
+              "weight": 0.5,
+              "scoreList": [
+                {
+                  "name": "作业3",
+                  "score": 36
+                },
+                {
+                  "name": "作业4",
+                  "score": 63
+                },
+                {
+                  "name": "作业5",
+                  "score": 3
+                }
+              ]
             }
-          ],
-          "normalRate": 0.5
-        },
-        {
-          "name": "课程目标3",
-          "getVal": 0.82,
-          "endExam": "期末考试",
-          "endDimensions": [
-            {
-              "name": "A4",
-              "score": 2
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "evaluationValue": 0.82,
+            "finalScore": {
+              "weight": 0.4,
+              "dimensionList": [
+                {
+                  "dimensionId": "B1",
+                  "dimensionCode": "B1",
+                  "dimensionName": "B1",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "C2",
+                  "dimensionCode": "C2",
+                  "dimensionName": "C2",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "C3",
+                  "dimensionCode": "C3",
+                  "dimensionName": "C3",
+                  "dimensionScore": 2
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 4
+                }
+              ]
             },
-            {
-              "name": "C3",
-              "score": 3
+            "usualScore": {
+              "weight": 0.6,
+              "scoreList": [
+                {
+                  "name": "作业5",
+                  "score": 80
+                },
+                {
+                  "name": "作业4",
+                  "score": 66
+                },
+                {
+                  "name": "作业2",
+                  "score": 87
+                }
+              ]
+            }
+          }
+        ]
+      },
+      {
+        "name": "平均分",
+        "studentCode": "0820014",
+        "score": 77,
+        "targetList": [
+          {
+            "targetId": "1",
+            "targetName": "课程目标1",
+            "evaluationValue": 0.67,
+            "finalScore": {
+              "weight": 0.5,
+              "dimensionList": [
+                {
+                  "dimensionId": "A2",
+                  "dimensionCode": "A2",
+                  "dimensionName": "A2",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 2
+                },
+                {
+                  "dimensionId": "B2",
+                  "dimensionCode": "B2",
+                  "dimensionName": "B2",
+                  "dimensionScore": 2
+                },
+                {
+                  "dimensionId": "C2",
+                  "dimensionCode": "C2",
+                  "dimensionName": "C2",
+                  "dimensionScore": 3
+                }
+              ]
             },
-            {
-              "name": "A4",
-              "score": 4
+            "usualScore": {
+              "weight": 0.5,
+              "scoreList": [
+                {
+                  "name": "作业2",
+                  "score": 80
+                },
+                {
+                  "name": "作业4",
+                  "score": 85
+                },
+                {
+                  "name": "作业3",
+                  "score": 12
+                }
+              ]
+            }
+          },
+          {
+            "targetId": "2",
+            "targetName": "课程目标2",
+            "evaluationValue": 0.75,
+            "finalScore": {
+              "weight": 0.5,
+              "dimensionList": [
+                {
+                  "dimensionId": "A4",
+                  "dimensionCode": "A4",
+                  "dimensionName": "A4",
+                  "dimensionScore": 1
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "B2",
+                  "dimensionCode": "B2",
+                  "dimensionName": "B2",
+                  "dimensionScore": 2
+                },
+                {
+                  "dimensionId": "A1",
+                  "dimensionCode": "A1",
+                  "dimensionName": "A1",
+                  "dimensionScore": 1
+                }
+              ]
             },
-            {
-              "name": "C2",
-              "score": 1
+            "usualScore": {
+              "weight": 0.5,
+              "scoreList": [
+                {
+                  "name": "作业3",
+                  "score": 54
+                },
+                {
+                  "name": "作业4",
+                  "score": 49
+                },
+                {
+                  "name": "作业5",
+                  "score": 52
+                }
+              ]
             }
-          ],
-          "endRate": 0.6,
-          "normalExam": "平时考试",
-          "normalWorks": [
-            {
-              "name": "作业5",
-              "score": 10
+          },
+          {
+            "targetId": "3",
+            "targetName": "课程目标3",
+            "evaluationValue": 0.82,
+            "finalScore": {
+              "weight": 0.4,
+              "dimensionList": [
+                {
+                  "dimensionId": "B1",
+                  "dimensionCode": "B1",
+                  "dimensionName": "B1",
+                  "dimensionScore": 4
+                },
+                {
+                  "dimensionId": "C2",
+                  "dimensionCode": "C2",
+                  "dimensionName": "C2",
+                  "dimensionScore": 5
+                },
+                {
+                  "dimensionId": "C3",
+                  "dimensionCode": "C3",
+                  "dimensionName": "C3",
+                  "dimensionScore": 1
+                },
+                {
+                  "dimensionId": "C4",
+                  "dimensionCode": "C4",
+                  "dimensionName": "C4",
+                  "dimensionScore": 3
+                }
+              ]
+            },
+            "usualScore": {
+              "weight": 0.6,
+              "scoreList": [
+                {
+                  "name": "作业5",
+                  "score": 80
+                },
+                {
+                  "name": "作业4",
+                  "score": 54
+                },
+                {
+                  "name": "作业2",
+                  "score": 58
+                }
+              ]
             }
-          ],
-          "normalRate": 0.4
-        }
-      ],
-      "totalScore": 15
-    }
-  ]
+          }
+        ]
+      }
+    ],
+    "courseTargetList": [
+      {
+        "targetId": "1",
+        "targetName": "课程目标1",
+        "usualScore": 1,
+        "finalScore": 0.6
+      },
+      {
+        "targetId": "2",
+        "targetName": "课程目标2",
+        "usualScore": 1,
+        "finalScore": 0.9
+      },
+      {
+        "targetId": "3",
+        "targetName": "课程目标3",
+        "usualScore": 1,
+        "finalScore": 1
+      }
+    ]
+  }
 }