lsc vor 2 Jahren
Ursprung
Commit
83a561ec45
33 geänderte Dateien mit 0 neuen und 21070 gelöschten Zeilen
  1. 0 517
      src/components/pages/components/actualTimeData.vue
  2. 0 263
      src/components/pages/components/answerData.vue
  3. 0 222
      src/components/pages/components/answerData2.vue
  4. 0 177
      src/components/pages/components/courseProblem.vue
  5. 0 170
      src/components/pages/components/data/problelmData.vue
  6. 0 154
      src/components/pages/components/data/scoreData.vue
  7. 0 167
      src/components/pages/components/data/toolsData.vue
  8. 0 180
      src/components/pages/components/data/workData.vue
  9. 0 297
      src/components/pages/components/pdf.vue
  10. 0 260
      src/components/pages/components/pdf2.vue
  11. 0 312
      src/components/pages/components/pdf3.vue
  12. 0 41
      src/components/pages/components/problemDetail.vue
  13. 0 506
      src/components/pages/components/report.vue
  14. 0 406
      src/components/pages/components/report/courseDetailReport.vue
  15. 0 271
      src/components/pages/components/report/courseInfo.vue
  16. 0 271
      src/components/pages/components/report/courseInfoGM.vue
  17. 0 317
      src/components/pages/components/report/coursePie.vue
  18. 0 317
      src/components/pages/components/report/coursePieGM.vue
  19. 0 235
      src/components/pages/components/report/courseRadar.vue
  20. 0 769
      src/components/pages/components/report/studentAbility.vue
  21. 0 769
      src/components/pages/components/report/studentAbilityGM.vue
  22. 0 203
      src/components/pages/components/report/studentInfo.vue
  23. 0 518
      src/components/pages/components/reportGM.vue
  24. 0 567
      src/components/pages/components/studentData.vue
  25. 0 191
      src/components/pages/components/studentReport.vue
  26. 0 191
      src/components/pages/components/studentReportGM.vue
  27. 0 1014
      src/components/pages/components/workData.vue
  28. 0 1014
      src/components/pages/components/workDataGM.vue
  29. 0 2760
      src/components/pages/components/worksDetail2.vue
  30. 0 2780
      src/components/pages/components/worksDetail2GM.vue
  31. 0 2602
      src/components/pages/components/worksDetail3.vue
  32. 0 2609
      src/components/pages/components/worksDetail3GM.vue
  33. 0 0
      src/components/pages/demo.vue

+ 0 - 517
src/components/pages/components/actualTimeData.vue

@@ -1,517 +0,0 @@
-<template>
-  <div>
-    <div class="sd_class">
-      <div class="sd_module">
-        <div class="sd_module_content">
-          <div class="sd_module_children">
-            <span class="s">课堂时长</span>
-            <span class="s2">
-              <span>{{randomNum(1,15)}}</span>时
-              <span>{{randomNum(1,60)}}</span>分
-              <span>{{randomNum(1,60)}}</span>秒
-            </span>
-            <span>已经击败99%教师</span>
-          </div>
-        </div>
-        <div class="sd_module_content">
-          <div class="sd_module_children">
-            <span class="s">课堂互动</span>
-            <span class="s2">
-              <span>{{randomNum(1,10)}}</span>次
-            </span>
-            <span>已经击败99%教师</span>
-          </div>
-        </div>
-
-        <div class="sd_module_content">
-          <div class="sd_module_children">
-            <span class="s">提交作业</span>
-            <span class="s2">
-              <span>{{randomNum(1,15)}}</span>次
-            </span>
-            <span>已经击败99%教师</span>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div class="sd_module_data">
-      <span class="sdddtitle">数据统计</span>
-      <div id="charts_canvas" class="echart" style="width: 100%; height: 100%;"></div>
-    </div>
-    <div class="sd_class sd_class2">
-       <span class="sdddtitle">学生个人能力</span>
-      <!-- <div class="sd_person_button">
-        <span @click="setType(6)" :class="{'active':type == 6}">学生个人能力</span>
-      </div> -->
-      <div class="sd_person_data">
-        <div
-          id="person_canvas1"
-          class="echart"
-          style="width: 50%; height: 100%; margin: 0 0 0 1rem"
-        ></div>
-        <div
-          id="person_canvas2"
-          class="echart"
-          style="width: 50%; height: 100%; margin: 0 0 0 1rem"
-        ></div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      type: 6,
-      chartObj: null,
-      chartObj2: null,
-      chartObj3: null,
-      ooption: [],
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        legend: {
-          orient: "vertical",
-          left: "50",
-          top: "center",
-        },
-        series: [
-          {
-            type: "pie",
-            radius: "65%",
-            center: ["65%", "50%"],
-            label: {
-              color: "inherit",
-              formatter: "{b|{b}:} {d}%  ",
-              rich: {
-                b: {
-                  fontSize: 14,
-                  fontWeight: "bold",
-                  lineHeight: 33,
-                },
-              },
-            },
-            data: [
-              { value: 0, name: "学习时间" },
-              { value: 0, name: "自我介绍" },
-              { value: 0, name: "提交活动表" },
-              { value: 0, name: "讨论交流" },
-              { value: 0, name: "作业提交" },
-              { value: 0, name: "能力测试" },
-              { value: 0, name: "自我评价调查问卷" },
-              { value: 0, name: "课程满意度调查问卷" },
-            ],
-            emphasis: {
-              itemStyle: {
-                shadowBlur: 10,
-                shadowOffsetX: 0,
-                shadowColor: "rgba(0, 0, 0, 0.5)",
-              },
-            },
-          },
-        ],
-      },
-      data: [],
-      //const colors = ['red', 'blue', 'green', 'purple'];
-      option2: {
-        //color:colors,
-        tooltip: {
-          trigger: "item",
-        },
-        legend: {
-          left: "50",
-          top: "center",
-        },
-        series: {
-          type: "sunburst",
-          data: [],
-          radius: [20, "80%"],
-          itemStyle: {
-            borderRadius: 7,
-            borderWidth: 2,
-          },
-          label: {
-            show: true,
-          },
-        },
-      },
-      option3: {
-        xAxis: {
-          type: "category",
-          data: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"],
-          boundaryGap: false,
-          splitLine: {
-            show: true,
-          },
-          axisLine: {
-            show: false,
-          },
-        },
-        yAxis: {
-          type: "category",
-          data: [
-            "信息应用意识",
-            "信息安全意识",
-            "信息感知意识",
-            "信息社会责任",
-            "信息法律法规",
-            "信息应用技能",
-            "信息科学知识",
-            "信息思维",
-            "信息行为",
-          ],
-          axisLine: {
-            show: false,
-          },
-        },
-        grid: {
-          left: 100,
-          bottom: 50,
-          right: 30,
-          top: 50,
-        },
-        series: [
-          {
-            name: "Punch Card",
-            type: "scatter",
-            symbolSize: function (val) {
-              return val[2] * 2;
-            },
-            data: [],
-            animationDelay: function (idx) {
-              return idx * 5;
-            },
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-        );
-        var optionB = [
-          { value: this.randomNum(0, 300), name: "学习时间" },
-          { value: this.randomNum(0, 300), name: "自我介绍" },
-          { value: this.randomNum(0, 300), name: "能力闯关" },
-          { value: this.randomNum(0, 300), name: "提交活动表" },
-          { value: this.randomNum(0, 300), name: "讨论交流" },
-          { value: this.randomNum(0, 300), name: "作业提交" },
-          { value: this.randomNum(0, 300), name: "能力测试" },
-          { value: this.randomNum(0, 300), name: "自我评价调查问卷" },
-          { value: this.randomNum(0, 300), name: "课程满意度调查问卷" },
-        ];
-        this.option.series[0].data = optionB;
-        const chartObj2 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#person_canvas1")
-        );
-        this.option2.series.data = [
-          {
-            name: "信息意识",
-            value: 15,
-            children: [
-              {
-                name: "信息应用意识",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "信息安全意识",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "信息感知意识",
-                value: this.randomNum(1, 5),
-              },
-            ],
-          },
-          {
-            name: "信息社会责任",
-            value: 15,
-            children: [
-              {
-                name: "信息伦理道德",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "信息法律法规",
-                value: this.randomNum(1, 10),
-              },
-            ],
-          },
-          {
-            name: "信息知识与技能",
-            value: 15,
-            children: [
-              {
-                name: "信息应用技能",
-                value: 5,
-              },
-              {
-                name: "信息科学知识",
-                value: 10,
-              },
-            ],
-          },
-          {
-            name: "信息思维与行为",
-            value: 15,
-            children: [
-              {
-                name: "信息思维",
-                value: this.randomNum(1, 10),
-              },
-              {
-                name: "信息行为",
-                value: this.randomNum(1, 5),
-              },
-            ],
-          },
-        ];
-        const chartObj3 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#person_canvas2")
-        );
-        let data = [];
-        for (var i = 1; i < 10; i++) {
-          for (var j = 0; j < 9; j++) {
-            var x = i;
-            var y = j;
-            var z = this.randomNum(0, 10);
-            data.push([x, y, z]);
-          }
-        }
-        this.option3.series[0].data = data;
-        // console.log(this.option.series[0].data);
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj2 = chartObj2;
-        this.chartObj3 = chartObj3;
-        this.chartObj.setOption(this.option);
-        this.chartObj2.setOption(this.option2);
-        this.chartObj3.setOption(this.option3);
-      });
-    },
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-
-    setType(type) {
-      this.type = type;
-      this.option2.series.data = [
-        {
-          name: "信息意识",
-          value: 15,
-          children: [
-            {
-              name: "信息应用意识",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "信息安全意识",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "信息感知意识",
-              value: this.randomNum(1, 5),
-            },
-          ],
-        },
-        {
-          name: "信息社会责任",
-          value: 15,
-          children: [
-            {
-              name: "信息伦理道德",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "信息法律法规",
-              value: this.randomNum(1, 10),
-            },
-          ],
-        },
-        {
-          name: "信息知识与技能",
-          value: 15,
-          children: [
-            {
-              name: "信息应用技能",
-              value: 5,
-            },
-            {
-              name: "信息科学知识",
-              value: 10,
-            },
-          ],
-        },
-        {
-          name: "信息思维与行为2",
-          value: 15,
-          children: [
-            {
-              name: "信息思维",
-              value: this.randomNum(1, 10),
-            },
-            {
-              name: "信息行为",
-              value: this.randomNum(1, 5),
-            },
-          ],
-        },
-      ];
-      this.chartObj2.setOption(this.option2);
-      let data = [];
-      for (var i = 1; i < 10; i++) {
-        for (var j = 0; j < 9; j++) {
-          var x = i;
-          var y = j;
-          var z = this.randomNum(0, 10);
-          data.push([x, y, z]);
-        }
-      }
-      this.option3.series[0].data = data;
-      this.chartObj3.setOption(this.option3);
-    },
-  },
-  mounted() {
-    this.setChart();
-  },
-};
-</script>
-
-<style scoped>
-.sd_name {
-  font-size: 20px;
-}
-
-.sd_class {
-  width: 100%;
-}
-
-.sd_class2 {
-  background: #fff;
-  margin: 20px 0;
-  border-radius: 5px;
-  padding: 20px 0;
-  box-sizing: border-box;
-  position: relative;
-}
-
-.sd_module {
-  display: flex;
-  justify-content: space-between;
-}
-.sd_module_content {
-  width: calc(100% / 3 - 10px);
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-.sd_module_content:nth-child(1) .sd_module_children {
-  background: rgb(232, 141, 105);
-}
-.sd_module_content:nth-child(2) .sd_module_children {
-  background: rgb(87, 156, 238);
-}
-.sd_module_content:nth-child(3) .sd_module_children {
-  background: rgb(112, 221, 232);
-}
-.sd_module_children {
-  width: 100%;
-  height: 130px;
-  position: relative;
-  border-radius: 5px;
-  color: #fff;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-}
-.sd_module_children .s {
-  position: absolute;
-  font-size: 16px;
-  top: 10px;
-  left: 10px;
-}
-.sd_module_children .s2 span {
-  font-size: 45px;
-  margin-right: 3px;
-}
-
-.sd_module_count {
-  font-size: 18px;
-  margin: 20px 0 0 0;
-}
-.sd_module_count {
-  display: flex;
-  align-items: center;
-}
-.sd_module_count span:nth-child(1) {
-  width: 100px;
-  text-align: right;
-}
-.sd_module_count span:nth-child(2) {
-  width: 100px;
-  text-align: center;
-  color: rgb(214, 132, 150);
-}
-.sd_module_data {
-  height: 700px;
-  width: 100%;
-  background: #fff;
-  margin: 20px 0;
-  border-radius: 5px;
-  position: relative;
-}
-
-.sdddtitle {
-  border-bottom: 2px solid rgb(30, 146, 255);
-  color: rgb(30, 146, 255);
-  position: absolute;
-  top: 20px;
-  left: 40px;
-  font-size: 18px;
-}
-
-.sd_person_data {
-  height: 500px;
-  width: 100%;
-  display: flex;
-}
-.sd_person_button {
-  font-size: 16px;
-  display: flex;
-}
-
-.sd_person_button span {
-  margin-left: 20px;
-  padding: 0 0 6px;
-  cursor: pointer;
-}
-
-.sd_person_button .active {
-  border-bottom: 2px solid rgb(30, 146, 255);
-  color: rgb(30, 146, 255);
-}
-</style>

+ 0 - 263
src/components/pages/components/answerData.vue

@@ -1,263 +0,0 @@
-<template>
-  <div class="data_body">
-    <div class="title">
-      <span>问答数量</span>
-    </div>
-    <div style="width: 100%; height: 400px">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div
-        id="charts_canvas"
-        class="echart"
-        style="width: 100%; height: 100%; margin: 0 0 0 1rem"
-      ></div>
-    </div>
-    <div class="tips">
-      <img src="../../../assets/tips.png" alt />
-      <span>
-        提示:目前答对
-        <span>正确选项{{ Aa }}</span
-        >的,有<span>{{ count }}</span
-        >位同学!要继续往“实践探究”方向继续加强学习哦!
-      </span>
-    </div>
-    <div class="c_box">
-      <div class="correct">
-        <span
-          >答题人数<span>{{ people.length + "人" }}</span></span
-        >
-      </div>
-      <div class="correct">
-        <span
-          >正确率为<span>{{
-            people.length > 0 ? Math.round(count / people.length * 10000) / 10000 * 100 + "%" : 0
-          }}</span></span
-        >
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["problemJson", "answer", "people"],
-  data() {
-    return {
-      Aa: "",
-      count: 0,
-      chartObj: null,
-      ooption: {
-        xdata: ["A", "B", "C", "D"],
-        sdata: [0, 0, 0, 0],
-      },
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        grid: {
-          left: "1%",
-          bottom: "10%",
-          top: "15%",
-          containLabel: true,
-        },
-        yAxis: {
-          type: "value",
-          boundaryGap: [0, 1],
-          minInterval: 1,
-          axisLine: {
-            onZero: false,
-          },
-        },
-        xAxis: {
-          type: "category",
-          data: [],
-          axisLabel: {
-            textStyle: {
-              color: "#000",
-            },
-          },
-        },
-
-        series: [
-          {
-            type: "bar",
-            data: [],
-            showBackground: true,
-            barWidth: "50px",
-            label: {
-              show: true,
-              position: "top",
-              color: "#2e2e2e",
-            },
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    setChart(option) {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-        );
-        this.option.xAxis.data = option.xdata;
-        this.option.series[0].data = option.sdata;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(this.option);
-      });
-    },
-  },
-  watch: {
-    problemJson(val) {
-      this.Aa = "";
-      if (this.answer.indexOf(1) != -1) {
-        this.Aa += "A";
-      }
-      if (this.answer.indexOf(2) != -1) {
-        this.Aa += "B";
-      }
-      if (this.answer.indexOf(3) != -1) {
-        this.Aa += "C";
-      }
-      if (this.answer.indexOf(4) != -1) {
-        this.Aa += "D";
-      }
-
-      if (this.people.length) {
-        this.count = 0;
-        for (var i = 0; i < this.people.length; i++) {
-          var a = JSON.parse(this.people[i].upload);
-          if (a.join(",") == this.answer.join(",")) {
-            this.count++;
-          }
-        }
-      } else {
-        this.count = 0;
-      }
-
-      this.ooption = {
-        xdata: ["A", "B", "C", "D"],
-        sdata: [],
-      };
-
-      this.ooption.sdata[0] = this.problemJson.A;
-      this.ooption.sdata[1] = this.problemJson.B;
-      this.ooption.sdata[2] = this.problemJson.C;
-      this.ooption.sdata[3] = this.problemJson.D;
-      if (!this.chartObj) {
-        this.setChart(this.ooption);
-      } else {
-        this.option.yAxis.data = this.ooption.xdata;
-        this.option.series[0].data = this.ooption.sdata;
-        this.chartObj.setOption(this.option);
-      }
-      this.$forceUpdate();
-    },
-  },
-  mounted() {
-    this.Aa = "";
-    if (this.answer.indexOf(1) != -1) {
-      this.Aa += "A";
-    }
-    if (this.answer.indexOf(2) != -1) {
-      this.Aa += "B";
-    }
-    if (this.answer.indexOf(3) != -1) {
-      this.Aa += "C";
-    }
-    if (this.answer.indexOf(4) != -1) {
-      this.Aa += "D";
-    }
-    if (this.people.length) {
-      this.count = 0;
-      for (var i = 0; i < this.people.length; i++) {
-        var a = JSON.parse(this.people[i].upload);
-        if (a.join(",") == this.answer.join(",")) {
-          this.count++;
-        }
-      }
-    } else {
-      this.count = 0;
-    }
-
-    this.ooption.sdata[0] = this.problemJson.A;
-    this.ooption.sdata[1] = this.problemJson.B;
-    this.ooption.sdata[2] = this.problemJson.C;
-    this.ooption.sdata[3] = this.problemJson.D;
-    this.setChart(this.ooption);
-    var _this = this;
-    window.addEventListener("resize", () => {
-      if (_this.chartObj) {
-        _this.chartObj.resize();
-      }
-    });
-  },
-};
-</script>
-
-<style scoped>
-.data_body {
-  height: 500px;
-  /* display: flex; */
-  position: relative;
-  border-radius: 5px;
-  /* border: 1px solid #eee; */
-  margin: 10px auto;
-  box-sizing: border-box;
-  padding: 10px;
-  width: 95%;
-  background: #fff;
-}
-.data_body .title {
-  /* position: absolute;
-  top: 20px;
-  left: 20px; */
-}
-
-.tips {
-  display: flex;
-  align-items: flex-start;
-  width: 100%;
-  background: #eee;
-  padding: 6px 6px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  color: #171717;
-}
-
-.tips img {
-  margin-right: 5px;
-}
-
-.tips span span {
-  color: #077aff;
-  margin: 0 3px;
-}
-.c_box {
-  margin-top: 10px;
-  display: flex;
-}
-.correct + .correct {
-  margin-left: 10px;
-}
-.correct {
-  display: flex;
-  align-items: flex-start;
-  width: fit-content;
-  background: #eee;
-  padding: 6px 6px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  color: #171717;
-}
-.correct span span {
-  color: #077aff;
-  margin: 0 3px;
-}
-</style>

+ 0 - 222
src/components/pages/components/answerData2.vue

@@ -1,222 +0,0 @@
-<template>
-  <div class="data_body">
-    <div class="title">
-      <span>答对数量</span>
-    </div>
-    <div style="width: 100%; height: 400px">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div
-        id="charts_canvas"
-        class="echart"
-        style="width: 100%; height: 100%; margin: 0 0 0 1rem"
-      ></div>
-    </div>
-    <div class="c_box">
-      <div class="correct">
-        <span
-          >答题人数<span>{{ people.length + "人" }}</span></span
-        >
-      </div>
-      <div class="correct">
-        <span
-          >全部答对人数为<span>{{
-            count+'人'
-          }}</span></span
-        >
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["problemJson", "answer", "people"],
-  data() {
-    return {
-      Aa: "",
-      count: 0,
-      chartObj: null,
-      ooption: {
-        xdata: [],
-        sdata: [],
-      },
-      option: {
-        tooltip: {
-          trigger: "item",
-          formatter: "第{b0}题: 答对{c0}人",
-        },
-        grid: {
-          left: "1%",
-          bottom: "10%",
-          top: "15%",
-          containLabel: true,
-        },
-        yAxis: {
-          type: "value",
-          boundaryGap: [0, 1],
-          minInterval: 1,
-          axisLine: {
-            onZero: false,
-          },
-        },
-        xAxis: {
-          type: "category",
-          data: [],
-          axisLabel: {
-            textStyle: {
-              color: "#000",
-            },
-          },
-        },
-
-        series: [
-          {
-            type: "bar",
-            data: [],
-            showBackground: true,
-            barWidth: "50px",
-            label: {
-              show: true,
-              position: "top",
-              color: "#2e2e2e",
-            },
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    setChart(option) {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-        );
-        this.option.xAxis.data = option.xdata;
-        this.option.series[0].data = option.sdata;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(this.option);
-      });
-    },
-  },
-  watch: {
-    problemJson(val) {
-      this.ooption = {
-        xdata: [],
-        sdata: [],
-      };
-      for (var i = 0; i < this.problemJson; i++) {
-        this.ooption.xdata.push(i + 1);
-        this.ooption.sdata.push(0);
-      }
-      if (!this.chartObj) {
-        this.setChart(this.ooption);
-      } else {
-        this.option.yAxis.data = this.ooption.xdata;
-        this.option.series[0].data = this.ooption.sdata;
-        this.chartObj.setOption(this.option);
-      }
-      this.$forceUpdate();
-    },
-  },
-  mounted() {
-    this.ooption = {
-      xdata: [],
-      sdata: [],
-    };
-    for (var i = 0; i < this.problemJson; i++) {
-      this.ooption.xdata.push(i + 1);
-      this.ooption.sdata.push(0);
-    }
-    let count = 0;
-    for (var i = 0; i < this.people.length; i++) {
-      let el = JSON.parse(this.people[i].upload);
-      let count2 = 0;
-      for (var j = 0; j < this.problemJson; j++) {
-        if (this.answer[j] == el[j]) {
-          this.ooption.sdata[j]++;
-          count2++;
-        }
-      }
-      if (count2 == this.problemJson) {
-        count++;
-      }
-    }
-    this.count = count;
-    this.setChart(this.ooption);
-    var _this = this;
-    window.addEventListener("resize", () => {
-      if (_this.chartObj) {
-        _this.chartObj.resize();
-      }
-    });
-  },
-};
-</script>
-
-<style scoped>
-.data_body {
-  height: 500px;
-  /* display: flex; */
-  position: relative;
-  border-radius: 5px;
-  /* border: 1px solid #eee; */
-  margin: 10px auto;
-  box-sizing: border-box;
-  padding: 10px;
-  width: 95%;
-  background: #fff;
-}
-.data_body .title {
-  /* position: absolute;
-  top: 20px;
-  left: 20px; */
-}
-
-.tips {
-  display: flex;
-  align-items: flex-start;
-  width: 100%;
-  background: #eee;
-  padding: 6px 6px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  color: #171717;
-}
-
-.tips img {
-  margin-right: 5px;
-}
-
-.tips span span {
-  color: #077aff;
-  margin: 0 3px;
-}
-.c_box {
-  margin-top: 10px;
-  display: flex;
-}
-.correct + .correct {
-  margin-left: 10px;
-}
-.correct {
-  display: flex;
-  align-items: flex-start;
-  width: fit-content;
-  background: #eee;
-  padding: 6px 6px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  color: #171717;
-}
-.correct span span {
-  color: #077aff;
-  margin: 0 3px;
-}
-</style>

+ 0 - 177
src/components/pages/components/courseProblem.vue

@@ -1,177 +0,0 @@
-<template>
-  <div>
-    <div class="cp_title">
-      <span>{{this.problemCourse.title}}</span>
-    </div>
-    <div style="margin-top:10px">
-      <el-table
-        v-loading="Loading"
-        ref="table"
-        :data="Data"
-        border
-        :height="500"
-        :fit="true"
-        style="width: 100%"
-        :row-class-name="tableRowClassName"
-        :header-cell-style="{ background: 'rgb(238,238,238)' }"
-      >
-        <el-table-column prop="courseName" label="课程" min-width="25" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="classname" label="章节" min-width="20" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="name" label="姓名" min-width="15" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="time" label="时间" min-width="20"></el-table-column>
-        <el-table-column label="操作" min-width="10">
-          <template slot-scope="scope">
-            <el-button type="primary" size="small" @click="checkProblem(scope.row)">查看</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <div style="margin-top:10px">
-        <el-pagination
-          background
-          layout="prev, pager, next"
-          :page-size="10"
-          :total="Total"
-          @current-change="handleCurrentChange"
-        ></el-pagination>
-      </div>
-    </div>
-    <el-dialog
-      title="查看提问详情"
-      :visible.sync="dialogVisible"
-      :append-to-body="true"
-      width="500px"
-      :before-close="handleClose"
-      class="dialog_diy"
-    >
-      <div>
-        <div class="a_addBox">
-          <ProblemDetail :problem="problem"></ProblemDetail>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">关 闭</el-button>
-      </span>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import ProblemDetail from "./problemDetail";
-export default {
-  components: {
-    ProblemDetail,
-  },
-  props: ["problemCourse"],
-  data() {
-    return {
-      Course: this.problemCourse,
-      chapters: [],
-      Loading: false,
-      Data: [],
-      Total: 0,
-      page: 1,
-      courseId: "",
-      dialogVisible: false,
-      problem: {},
-    };
-  },
-  methods: {
-    getData() {
-      this.Loading = true;
-      let params = {
-        cid: this.courseId,
-        page: this.page,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getProblem", params)
-        .then((res) => {
-          this.Loading = false;
-          this.Total = res.data[0].length > 0 ? res.data[0][0].num : 0;
-          let _array = res.data[0];
-          let _chapters = this.chapters;
-          _array.forEach((item) => {
-            _chapters.forEach((chapter,index) => {
-              if (item.chapterid == index) {
-                item.classname = chapter.name;
-              }
-            });
-          });
-          this.Data = res.data[0];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    handleCurrentChange(val) {
-      this.page = val;
-      this.getData();
-      console.log(`当前页: ${val}`);
-    },
-    handleClose(done) {
-      done();
-    },
-    checkProblem(res) {
-      this.problem = res;
-      this.dialogVisible = true;
-    },
-  },
-  watch: {
-    // 使用监听的方式,监听数据的变化
-    problemCourse(val) {
-      this.Course = val;
-      var _chapters = JSON.parse(val.chapters);
-      this.chapters = [];
-      this.courseId = val.courseId;
-      _chapters.forEach((element) => {
-        this.chapters.push({
-          name: element.dyName,
-          id: element.chapterInfo[0].chapterid,
-        });
-      });
-      this.page = 1;
-      this.getData();
-    },
-  },
-  mounted() {
-    console.log(JSON.parse(this.problemCourse.chapters));
-    var _chapters = JSON.parse(this.problemCourse.chapters);
-    _chapters.forEach((element) => {
-      this.chapters.push({
-        name: element.dyName,
-        id: element.chapterInfo[0].chapterid,
-      });
-    });
-    this.courseId = this.problemCourse.courseId;
-    this.getData();
-  },
-};
-</script>
-
-<style scoped>
-.cp_title {
-  font-size: 24px;
-}
-.dialog_diy >>> .el-dialog__header {
-  background: #3d67bc !important;
-  padding: 15px 20px;
-}
-.dialog_diy >>> .el-dialog__title {
-  color: #fff;
-}
-.dialog_diy >>> .el-dialog__headerbtn {
-  top: 19px;
-}
-.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-</style>

+ 0 - 170
src/components/pages/components/data/problelmData.vue

@@ -1,170 +0,0 @@
-<template>
-  <div class="data_body">
-    <div class="title">
-      <span>问答数量</span>
-    </div>
-    <div style="width: 100%">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div
-        id="charts_canvas"
-        class="echart"
-        style="width: 100%; height: 100%; margin: 0 0 0 1rem"
-      ></div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["problemJson", "chapters"],
-  data() {
-    return {
-      chartObj: null,
-      ooption: {
-        xdata: [],
-        sdata: [],
-      },
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        grid: {
-          left: "1%",
-          bottom: "10%",
-          top: "15%",
-          containLabel: true,
-        },
-        xAxis: {
-          type: "value",
-          boundaryGap: [0, 1],
-          minInterval: 1,
-          position: "top",
-          axisLine: {
-            onZero: false,
-          },
-        },
-        yAxis: {
-          type: "category",
-          data: [],
-          inverse: true,
-          offset: -10,
-          axisLabel: {
-            inside: true,
-            left: 10,
-            textStyle: {
-              color: "#000",
-            },
-          },
-          axisTick: {
-            show: false,
-          },
-          axisLine: {
-            show: false,
-          },
-          z: 10,
-        },
-        dataZoom: [
-          {
-            type: "inside",
-            yAxisIndex: 0,
-            startValue: 0,
-            endValue: 5,
-            zoomLock: true,
-          },
-        ],
-        series: [
-          {
-            type: "bar",
-            data: [],
-            showBackground: true,
-            barWidth: "50px",
-            label: {
-              show: true,
-              position: "right",
-              color: "#2e2e2e",
-            },
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    setChart(option) {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-        );
-        this.option.yAxis.data = option.xdata;
-        this.option.series[0].data = option.sdata;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(this.option);
-      });
-    },
-  },
-  watch: {
-    problemJson(val) {
-      this.ooption = {
-        xdata: [],
-        sdata: [],
-      };
-      this.chapters.forEach((item, index) => {
-        this.ooption.xdata.push(item.name);
-        this.ooption.sdata.push(0);
-      });
-      this.problemJson.forEach((item, index) => {
-        this.ooption.sdata[item.stage]++;
-      });
-      if (!this.chartObj) {
-        this.setChart(this.ooption);
-      } else {
-        this.option.yAxis.data = this.ooption.xdata;
-        this.option.series[0].data = this.ooption.sdata;
-        this.chartObj.setOption(this.option);
-      }
-    },
-  },
-  mounted() {
-    this.chapters.forEach((item, index) => {
-      this.ooption.xdata.push(item.name);
-      this.ooption.sdata.push(0);
-    });
-    this.problemJson.forEach((item, index) => {
-      this.ooption.sdata[item.stage]++;
-    });
-    this.setChart(this.ooption);
-    var _this = this;
-    window.addEventListener("resize", () => {
-      if (_this.chartObj) {
-        _this.chartObj.resize();
-      }
-    });
-  },
-};
-</script>
-
-<style scoped>
-.data_body {
-  height: 500px;
-  display: flex;
-  position: relative;
-  border-radius: 5px;
-  /* border: 1px solid #eee; */
-  margin: 10px auto;
-  box-sizing: border-box;
-  padding: 10px;
-  width: 95%;
-  background: #fff;
-}
-.data_body .title {
-  position: absolute;
-  top: 20px;
-  left: 20px;
-}
-</style>

+ 0 - 154
src/components/pages/components/data/scoreData.vue

@@ -1,154 +0,0 @@
-<template>
-  <div class="data_body">
-    <div class="title">
-      <span>量规评分</span>
-    </div>
-    <div style="width: 100%">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div
-        id="charts_canvas"
-        class="echart"
-        style="width: 100%; height: 100%; margin: 0 0 0 1rem"
-      ></div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["scoreJson"],
-  data() {
-    return {
-      chartObj: null,
-      ooption: [
-        { value: 0, name: "意识能力" },
-        { value: 0, name: "科学探究能力" },
-        { value: 0, name: "实践创新能力" },
-        { value: 0, name: "学习房媳能力" },
-        { value: 0, name: "工程思维能力" },
-      ],
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        series: [
-          {
-            name: "量规评分",
-            type: "pie",
-            radius: "70%",
-            center: ["50%", "50%"],
-            data: [
-              { value: 0, name: "意识能力" },
-              { value: 0, name: "科学探究能力" },
-              { value: 0, name: "实践创新能力" },
-              { value: 0, name: "学习房媳能力" },
-              { value: 0, name: "工程思维能力" },
-            ],
-            itemStyle: {
-              emphasis: {
-                shadowBlur: 10,
-                shadowOffsetX: 0,
-                shadowColor: "rgba(0, 0, 0, 0.5)",
-              },
-              normal: {
-                label: {
-                  show: true,
-                  formatter: "{d}%",
-                  inside: true,
-                  position: "inner",
-                },
-                labelLine: { show: false },
-              },
-            },
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    setChart(option) {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-        );
-        this.option.series[0].data = option;
-        console.log(this.option.series[0].data);
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(this.option);
-      });
-    },
-  },
-  watch: {
-    scoreJson(val) {
-      this.ooption = [
-        { value: 0, name: "意识能力" },
-        { value: 0, name: "科学探究能力" },
-        { value: 0, name: "实践创新能力" },
-        { value: 0, name: "学习反思能力" },
-        { value: 0, name: "工程思维能力" },
-      ];
-      this.scoreJson.forEach((item) => {
-        if (item.rate) {
-          this.ooption[0].value += item.rate.ca;
-          this.ooption[1].value += item.rate.sia;
-          this.ooption[2].value += item.rate.eta;
-          this.ooption[3].value += item.rate.pia;
-          this.ooption[4].value += item.rate.lra;
-        }
-      });
-      if (!this.chartObj) {
-        this.setChart(this.ooption);
-      } else {
-        this.option.series[0].data = this.ooption;
-        this.chartObj.setOption(this.option);
-      }
-    },
-  },
-  mounted() {
-    //ca 意识能力 sia 科学探究能力 eta 实践创新能力 pia 学习反思能力 lra 工程思维能力
-    this.scoreJson.forEach((item) => {
-      if (item.rate) {
-        this.ooption[0].value += item.rate.ca;
-        this.ooption[1].value += item.rate.sia;
-        this.ooption[2].value += item.rate.eta;
-        this.ooption[3].value += item.rate.pia;
-        this.ooption[4].value += item.rate.lra;
-      }
-    });
-    this.setChart(this.ooption);
-    var _this = this;
-     window.addEventListener('resize', () => {
-      if (_this.chartObj) {
-        _this.chartObj.resize();
-      }
-    })
-  },
-};
-</script>
-
-<style scoped>
-.data_body {
-  height: 500px;
-  display: flex;
-  position: relative;
-  border-radius: 5px;
-  /* border: 1px solid #eee; */
-  margin: 10px auto;
-  box-sizing: border-box;
-  padding: 10px;
-  width: 95%;
-  background: #fff;
-}
-.data_body .title {
-  position: absolute;
-  top: 20px;
-  left: 20px;
-}
-</style>

+ 0 - 167
src/components/pages/components/data/toolsData.vue

@@ -1,167 +0,0 @@
-<template>
-  <div class="data_body">
-    <div class="title">
-      <span>工具使用</span>
-    </div>
-    <div style="width:100%">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div id="charts_canvas" class="echart" style="width: 100%; height: 100%;margin:0 0 0 1rem"></div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["toolsJson", "tools"],
-  data() {
-    return {
-      chartObj: null,
-      ooption: {
-        xdata: [],
-        sdata: [],
-        tools: [],
-      },
-      // 1电子白板 2便签 3思维导图 4问卷调查 5量规评分 6协同文档
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        xAxis: {
-          type: "category",
-          data: [],
-        },
-        yAxis: {
-          type: "value",
-        },
-        series: [
-          {
-            data: [],
-            type: "line",
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    setChart(option) {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-        );
-        this.option.xAxis.data = option.xdata;
-        this.option.series[0].data = option.sdata;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(option);
-      });
-    },
-  },
-  watch: {
-    toolsJson(val) {
-      this.ooption = {
-        xdata: [],
-        sdata: [],
-        tools: [],
-      };
-      console.log(this.tools);
-      console.log(this.toolsJson);
-      this.tools.forEach((item, index) => {
-        // 1电子白板 2便签 3思维导图 4问卷调查 5量规评分 6协同文档
-        if (item == 1) {
-          this.ooption.xdata.push("电子白板");
-        } else if (item == 2) {
-          this.ooption.xdata.push("便签");
-        } else if (item == 3) {
-          this.ooption.xdata.push("思维导图");
-        } else if (item == 4) {
-          this.ooption.xdata.push("问卷调查");
-        } else if (item == 5) {
-          this.ooption.xdata.push("量规评分");
-        } else if (item == 6) {
-          this.ooption.xdata.push("协同文档");
-        }
-        this.ooption.sdata.push(0);
-        this.ooption.tools.push(item);
-      });
-      this.toolsJson.forEach((item, index) => {
-        this.ooption.tools.forEach((x, i) => {
-          if (item.tools == x) {
-            this.ooption.sdata[i] += item.count;
-          }
-        });
-      });
-      console.log(this.ooption);
-      if (!this.chartObj) {
-        this.setChart(this.ooption);
-      } else {
-        this.option.xAxis.data = this.ooption.xdata;
-        this.option.series[0].data = this.ooption.sdata;
-        this.chartObj.setOption(this.option);
-      }
-    },
-  },
-  mounted() {
-    console.log(this.tools);
-    console.log(this.toolsJson);
-    this.tools.forEach((item, index) => {
-      // 1电子白板 2便签 3思维导图 4问卷调查 5量规评分 6协同文档
-      if (item == 1) {
-        this.ooption.xdata.push("电子白板");
-      } else if (item == 2) {
-        this.ooption.xdata.push("便签");
-      } else if (item == 3) {
-        this.ooption.xdata.push("思维导图");
-      } else if (item == 4) {
-        this.ooption.xdata.push("问卷调查");
-      } else if (item == 5) {
-        this.ooption.xdata.push("量规评分");
-      } else if (item == 6) {
-        this.ooption.xdata.push("协同文档");
-      }
-      this.ooption.sdata.push(0);
-      this.ooption.tools.push(item);
-    });
-    this.toolsJson.forEach((item, index) => {
-      this.ooption.tools.forEach((x, i) => {
-        if (item.tools == x) {
-          this.ooption.sdata[i] += item.count;
-        }
-      });
-    });
-    console.log(this.ooption);
-    this.setChart(this.ooption);
-    var _this = this;
-     window.addEventListener('resize', () => {
-      if (_this.chartObj) {
-        _this.chartObj.resize();
-      }
-    })
-  },
-};
-</script>
-
-<style scoped>
-.data_body {
-  height: 500px;
-  display: flex;
-  position: relative;
-  border-radius: 5px;
-  /* border: 1px solid #eee; */
-  margin: 10px auto;
-  box-sizing: border-box;
-  padding: 10px;
-  width: 95%;
-  background: #fff;
-}
-.data_body .title {
-  position: absolute;
-  top: 20px;
-  left: 20px;
-}
-</style>

+ 0 - 180
src/components/pages/components/data/workData.vue

@@ -1,180 +0,0 @@
-<template>
-  <div class="data_body">
-    <div class="title">
-      <span>作业数量</span>
-    </div>
-    <div style="width: 100%">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div
-        id="charts_canvas"
-        class="echart"
-        style="width: 100%; height: 100%; margin: 0 0 0 1rem"
-      ></div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["workJson", "chapters"],
-  data() {
-    return {
-      chartObj: null,
-      ooption: {
-        xdata: [],
-        sdata: [],
-      },
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        grid: {
-          left: "1%",
-          bottom: "10%",
-          top: "15%",
-          containLabel: true,
-        },
-        xAxis: {
-          type: "category",
-          data: [],
-          inverse: true,
-          axisLabel: {
-            inside: true,
-            textStyle: {
-              color: "#000",
-            },
-            formatter: function (val) {
-              var strs = val.split(""); //字符串数组
-              var str = "";
-              for (var i = 0, s; (s = strs[i++]); ) {
-                //遍历字符串数组
-                str += s;
-                if (!(i % 1)) str += "\n";
-              }
-              return str;
-            },
-          },
-          axisTick: {
-            show: false,
-          },
-          axisLine: {
-            show: false,
-          },
-          z: 10,
-        },
-        yAxis: {
-          type: "value",
-          boundaryGap: [0, 1],
-          minInterval: 1,
-          position: "top",
-          axisLine: {
-            onZero: false,
-          },
-        },
-        dataZoom: [
-          {
-            type: "inside",
-            yAxisIndex: 0,
-            startValue: 0,
-            endValue: 5,
-            zoomLock: true,
-          },
-        ],
-        series: [
-          {
-            type: "bar",
-            data: [],
-            showBackground: true,
-            barWidth: "50px",
-            label: {
-              show: true,
-              position: "top",
-              color: "#2e2e2e",
-            },
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    setChart(option) {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-        );
-        this.option.xAxis.data = option.xdata;
-        this.option.series[0].data = option.sdata;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(this.option);
-      });
-    },
-  },
-  watch: {
-    workJson(val) {
-      this.ooption = {
-        xdata: [],
-        sdata: [],
-      };
-      this.chapters.forEach((item, index) => {
-        this.ooption.xdata.push(item.name);
-        this.ooption.sdata.push(0);
-      });
-      this.workJson.forEach((item, index) => {
-        this.ooption.sdata[item.stage]++;
-      });
-      console.log(this.ooption);
-      if (!this.chartObj) {
-        this.setChart(this.ooption);
-      } else {
-        this.option.xAxis.data = this.ooption.xdata;
-        this.option.series[0].data = this.ooption.sdata;
-        this.chartObj.setOption(this.option);
-      }
-    },
-  },
-  mounted() {
-    this.chapters.forEach((item, index) => {
-      this.ooption.xdata.push(item.name);
-      this.ooption.sdata.push(0);
-    });
-    this.workJson.forEach((item, index) => {
-      this.ooption.sdata[item.stage]++;
-    });
-    console.log(this.ooption);
-    this.setChart(this.ooption);
-    var _this = this;
-    window.addEventListener("resize", () => {
-      if (_this.chartObj) {
-        _this.chartObj.resize();
-      }
-    });
-  },
-};
-</script>
-
-<style scoped>
-.data_body {
-  height: 500px;
-  display: flex;
-  position: relative;
-  border-radius: 5px;
-  /* border: 1px solid #eee; */
-  margin: 10px auto;
-  box-sizing: border-box;
-  padding: 10px;
-  width: 95%;
-  background: #fff;
-}
-.data_body .title {
-  position: absolute;
-  top: 20px;
-  left: 20px;
-}
-</style>

+ 0 - 297
src/components/pages/components/pdf.vue

@@ -1,297 +0,0 @@
-<template>
-  <div class="pdf">
-    <div class="show">
-      <pdf
-        ref="pdf"
-        :src="pdfUrl"
-        :page="pageNum"
-        :rotate="pageRotate"
-        @password="password"
-        @progress="loadedRatio = $event"
-        @page-loaded="pageLoaded($event)"
-        @num-pages="pageTotalNum = $event"
-        @error="pdfError($event)"
-        @link-clicked="page = $event"
-      ></pdf>
-    </div>
-
-    <div class="pdf_footer">
-      <div class="info">
-        <div>当前页数/总页数:{{ pageNum }}/{{ pageTotalNum }}</div>
-        <!-- <div>进度:{{loadedRatio}}</div> -->
-        <!-- <div>页面加载成功: {{curPageNum}}</div> -->
-      </div>
-      <div class="operate">
-        <!-- <div class="btn" @click.stop="clock">顺时针</div>
-        <div class="btn" @click.stop="counterClock">逆时针</div>-->
-        <div class="btn" @click.stop="prePage">上一页</div>
-        <div class="btn" @click.stop="nextPage">下一页</div>
-        <!-- <div class="btn" @click="scaleD">放大</div>
-        <div class="btn" @click="scaleX">缩小</div>
-        <div class="btn" @click="fileDownload(pdfUrl,'pdf文件')">下载</div>-->
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import pdf from "vue-pdf";
-export default {
-  name: "vue_pdf_preview",
-  props: {
-    // 当前pdf路径
-    pdfUrl: {
-      type: String,
-      default:
-        "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/0629%E5%AE%9E%E6%97%B6%E8%AF%BE%E5%A0%82%E6%A8%A1%E6%8B%9F%E6%BC%94%E7%A4%BA%E8%AF%BE%E4%BB%B61656920880446.pdf",
-    },
-    getPage: {
-      type: Function,
-    },
-  },
-  components: {
-    pdf,
-  },
-  data() {
-    return {
-      // 总页数
-      pageTotalNum: 1,
-      // 当前页数
-      pageNum: 1,
-      // 加载进度
-      loadedRatio: 0,
-      // 页面加载完成
-      curPageNum: 0,
-      // 放大系数 默认百分百
-      scale: 69,
-      // 旋转角度 ‘90’的倍数才有效
-      pageRotate: 0,
-      // 单击内部链接时触发 (目前我没有遇到使用场景)
-      page: 0,
-      loading: null,
-    };
-  },
-  watch: {
-    pageTotalNum(val) {
-      if (val) {
-        this.loading.close();
-        this.getPage(1);
-      }
-    },
-  },
-  computed: {},
-  created() {},
-  mounted() {
-    this.loading = this.$loading.service({
-      background: "rgba(255, 255, 255, 0.7)",
-      target: document.querySelector(".pdf"),
-    });
-    let dwidth = document.body.offsetWidth;
-    let cwidth =
-      (document.getElementsByClassName("pdf")[0].offsetHeight - 100) * 1.77;
-    let owidth = "";
-    if (cwidth > dwidth) {
-      owidth = dwidth + "px";
-    } else {
-      owidth = cwidth + "px";
-    }
-    var a = document.getElementsByClassName("pdf")[0].offsetWidth;
-    let _this = this;
-    this.$refs.pdf.$el.style.width = owidth;
-    this.$emit("getWidth", owidth);
-    window.addEventListener("resize", () => {
-      dwidth = document.body.offsetWidth;
-      cwidth =
-        (document.getElementsByClassName("pdf")[0].offsetHeight - 100) * 1.77;
-      if (cwidth > dwidth) {
-        owidth = dwidth + "px";
-      } else {
-        owidth = cwidth + "px";
-      }
-      _this.$refs.pdf.$el.style.width = owidth;
-      _this.$emit("getWidth", owidth);
-      //   var a = document.getElementsByClassName("pdf")[0].offsetWidth;
-      //   if (a < 1300) {
-      //     _this.scale = 100;
-      //     _this.$refs.pdf.$el.style.width = parseInt(this.scale) + "%";
-      //   } else if (a > 1300 && a < 1500) {
-      //     _this.scale = 80;
-      //     _this.$refs.pdf.$el.style.width = parseInt(this.scale) + "%";
-      //   } else if (a > 1500) {
-      //     _this.scale = 69;
-      //     _this.$refs.pdf.$el.style.width = parseInt(this.scale) + "%";
-      //   } else if (a == 1500) {
-      //     _this.scale = 69;
-      //     _this.$refs.pdf.$el.style.width = parseInt(this.scale) + "%";
-      //   }
-    });
-  },
-  methods: {
-    //下载PDF
-    fileDownload(data, fileName) {
-      let blob = new Blob([data], {
-        //type类型后端返回来的数据中会有,根据自己实际进行修改
-        type: "application/pdf;charset-UTF-8",
-      });
-      let filename = fileName || "pdf.pdf";
-      if (typeof window.navigator.msSaveBlob !== "undefined") {
-        window.navigator.msSaveBlob(blob, filename);
-      } else {
-        var blobURL = window.URL.createObjectURL(blob);
-        // 创建隐藏<a>标签进行下载
-        var tempLink = document.createElement("a");
-        tempLink.style.display = "none";
-        tempLink.href = blobURL;
-        tempLink.setAttribute("download", filename);
-        if (typeof tempLink.download === "undefined") {
-          tempLink.setAttribute("target", "_blank");
-        }
-        document.body.appendChild(tempLink);
-        tempLink.click();
-        document.body.removeChild(tempLink);
-        window.URL.revokeObjectURL(blobURL);
-      }
-    },
-
-    //放大
-    scaleD() {
-      this.scale += 5;
-      this.$refs.pdf.$el.style.width = parseInt(this.scale) + "%";
-    },
-
-    //缩小
-    scaleX() {
-      // scale 是百分百展示 不建议缩放
-      if (this.scale == 100) {
-        return;
-      }
-      this.scale += -5;
-      console.log(parseInt(this.scale) + "%");
-      this.$refs.pdf.$el.style.width = parseInt(this.scale) + "%";
-    },
-    // 切换上一页
-    prePage() {
-      var p = this.pageNum;
-      p = p > 1 ? p - 1 : this.pageTotalNum;
-      this.pageNum = p;
-      this.getPage(p);
-    },
-    // 切换下一页
-    nextPage() {
-      var p = this.pageNum;
-      p = p < this.pageTotalNum ? p + 1 : 1;
-      this.pageNum = p;
-      this.getPage(p);
-    },
-    // 顺时针选中角度
-    clock() {
-      this.pageRotate += 90;
-    },
-    // 逆时针旋转角度
-    counterClock() {
-      this.pageRotate -= 90;
-    },
-    // pdf 有密码 则需要输入秘密
-    password(updatePassword, reason) {
-      updatePassword(prompt('password is "test"'));
-      console.log("...reason...");
-      console.log(reason);
-      console.log("...reason...");
-    },
-    // 页面加载成功  当前页数
-    pageLoaded(e) {
-      this.$emit("current", e);
-      this.curPageNum = e;
-    },
-    // 异常监听
-    pdfError(error) {
-      console.error(error);
-    },
-    // 打印所有
-    pdfPrintAll() {
-      this.$refs.pdf.print();
-    },
-    // 打印 第一页和第二页
-    pdfPrint() {
-      // 第一个参数 文档打印的分辨率
-      // 第二个参数 文档打印的页数
-      this.$refs.pdf.print(100, [1, 2]);
-    },
-    // 获取当前页面pdf的文字信息内容
-    logContent() {
-      this.$refs.pdf.pdf.forEachPage(function (page) {
-        return page.getTextContent().then(function (content) {
-          let text = content.items.map((item) => item.str);
-          let allStr = content.items.reduce(
-            (initVal, item) => (initVal += item.str),
-            ""
-          );
-          console.log(allStr); // 内容字符串
-          console.log(text); // 内容数组
-        });
-      });
-    },
-  },
-};
-</script>
-
-<style scoped>
-.pdf {
-  height: 100%;
-  position: relative;
-  box-sizing: border-box;
-}
-.pdf .show {
-  overflow: auto;
-  margin: auto;
-  width: 100%;
-  height: calc(100% - 100px);
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.pdf .pdf_footer {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  padding: 10px 0;
-  width: 100%;
-  height: 75px;
-  background-color: rgba(255, 255, 255, 0.5);
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-}
-.pdf .pdf_footer .info {
-  display: flex;
-  flex-wrap: wrap;
-  width: 100%;
-  justify-content: center;
-}
-/* .pdf .pdf_footer .info div {
-  width: 30%;
-} */
-.pdf .pdf_footer .operate {
-  margin: 10px 0 0;
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: center;
-  width: 100%;
-}
-.pdf .pdf_footer .operate div {
-  text-align: center;
-  font-size: 15px;
-}
-.pdf .pdf_footer .operate .btn {
-  cursor: pointer;
-  margin: 5px 10px;
-  width: 100px;
-  border-radius: 10px;
-  padding: 5px;
-  color: #fff;
-  background-color: #066ebe;
-}
-</style>

+ 0 - 260
src/components/pages/components/pdf2.vue

@@ -1,260 +0,0 @@
-<template>
-  <div class="pdf">
-    <div class="show">
-      <pdf
-        ref="pdf"
-        :src="pdfUrl"
-        :page="pageNum"
-        :rotate="pageRotate"
-        @password="password"
-        @progress="loadedRatio = $event"
-        @page-loaded="pageLoaded($event)"
-        @num-pages="pageTotalNum = $event"
-        @error="pdfError($event)"
-        @link-clicked="page = $event"
-      ></pdf>
-    </div>
-
-    <!-- <div class="pdf_footer">
-      <div class="info">
-        <div>当前页数/总页数:{{pageNum}}/{{pageTotalNum}}</div>
-      </div>
-      <div class="operate">
-        <div class="btn" @click.stop="prePage">上一页</div>
-        <div class="btn" @click.stop="nextPage">下一页</div>
-      </div>
-    </div>-->
-  </div>
-</template>
-
-<script>
-import pdf from "vue-pdf";
-export default {
-  name: "vue_pdf_preview",
-  props: {
-    // 当前pdf路径
-    pdfUrl: {
-      type: String,
-      default:
-        "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/0629%E5%AE%9E%E6%97%B6%E8%AF%BE%E5%A0%82%E6%A8%A1%E6%8B%9F%E6%BC%94%E7%A4%BA%E8%AF%BE%E4%BB%B61656920880446.pdf",
-    },
-    getPage: {
-      type: Function,
-    },
-  },
-  components: {
-    pdf,
-  },
-  data() {
-    return {
-      // 总页数
-      pageTotalNum: 1,
-      // 当前页数
-      pageNum: 1,
-      // 加载进度
-      loadedRatio: 0,
-      // 页面加载完成
-      curPageNum: 0,
-      // 放大系数 默认百分百
-      scale: 69,
-      // 旋转角度 ‘90’的倍数才有效
-      pageRotate: 0,
-      // 单击内部链接时触发 (目前我没有遇到使用场景)
-      page: 0,
-      loading: null,
-    };
-  },
-  watch: {
-    pageTotalNum(val) {
-      if (val) {
-        this.loading.close();
-      }
-      this.$emit("getPageTotal", val);
-    },
-  },
-  computed: {},
-  created() {},
-  mounted() {
-    this.loading = this.$loading.service({
-      background: "rgba(255, 255, 255, 0.7)",
-      target: document.querySelector(".pdf"),
-    });
-    var a = document.getElementsByClassName("pdf")[0].offsetWidth;
-    let _this = this;
-    this.$refs.pdf.$el.style.width =
-      document.getElementsByClassName("pdf")[0].offsetHeight * 1.77 + "px";
-    window.addEventListener("resize", () => {
-      this.$refs.pdf.$el.style.width =
-        document.getElementsByClassName("pdf")[0].offsetHeight * 1.77 + "px";
-    });
-  },
-  methods: {
-    //下载PDF
-    fileDownload(data, fileName) {
-      let blob = new Blob([data], {
-        //type类型后端返回来的数据中会有,根据自己实际进行修改
-        type: "application/pdf;charset-UTF-8",
-      });
-      let filename = fileName || "pdf.pdf";
-      if (typeof window.navigator.msSaveBlob !== "undefined") {
-        window.navigator.msSaveBlob(blob, filename);
-      } else {
-        var blobURL = window.URL.createObjectURL(blob);
-        // 创建隐藏<a>标签进行下载
-        var tempLink = document.createElement("a");
-        tempLink.style.display = "none";
-        tempLink.href = blobURL;
-        tempLink.setAttribute("download", filename);
-        if (typeof tempLink.download === "undefined") {
-          tempLink.setAttribute("target", "_blank");
-        }
-        document.body.appendChild(tempLink);
-        tempLink.click();
-        document.body.removeChild(tempLink);
-        window.URL.revokeObjectURL(blobURL);
-      }
-    },
-
-    //放大
-    scaleD() {
-      this.scale += 5;
-      this.$refs.pdf.$el.style.width = parseInt(this.scale) + "%";
-    },
-
-    //缩小
-    scaleX() {
-      // scale 是百分百展示 不建议缩放
-      if (this.scale == 100) {
-        return;
-      }
-      this.scale += -5;
-      console.log(parseInt(this.scale) + "%");
-      this.$refs.pdf.$el.style.width = parseInt(this.scale) + "%";
-    },
-    // 切换上一页
-    prePage() {
-      var p = this.pageNum;
-      p = p > 1 ? p - 1 : this.pageTotalNum;
-      this.pageNum = p;
-      this.getPage(p);
-    },
-    // 切换下一页
-    nextPage() {
-      var p = this.pageNum;
-      p = p < this.pageTotalNum ? p + 1 : 1;
-      this.pageNum = p;
-      this.getPage(p);
-    },
-    // 顺时针选中角度
-    clock() {
-      this.pageRotate += 90;
-    },
-    // 逆时针旋转角度
-    counterClock() {
-      this.pageRotate -= 90;
-    },
-    // pdf 有密码 则需要输入秘密
-    password(updatePassword, reason) {
-      updatePassword(prompt('password is "test"'));
-      console.log("...reason...");
-      console.log(reason);
-      console.log("...reason...");
-    },
-    // 页面加载成功  当前页数
-    pageLoaded(e) {
-      this.$emit("current", e);
-      this.curPageNum = e;
-    },
-    // 异常监听
-    pdfError(error) {
-      console.error(error);
-    },
-    // 打印所有
-    pdfPrintAll() {
-      this.$refs.pdf.print();
-    },
-    // 打印 第一页和第二页
-    pdfPrint() {
-      // 第一个参数 文档打印的分辨率
-      // 第二个参数 文档打印的页数
-      this.$refs.pdf.print(100, [1, 2]);
-    },
-    // 获取当前页面pdf的文字信息内容
-    logContent() {
-      this.$refs.pdf.pdf.forEachPage(function (page) {
-        return page.getTextContent().then(function (content) {
-          let text = content.items.map((item) => item.str);
-          let allStr = content.items.reduce(
-            (initVal, item) => (initVal += item.str),
-            ""
-          );
-          console.log(allStr); // 内容字符串
-          console.log(text); // 内容数组
-        });
-      });
-    },
-  },
-};
-</script>
-
-<style scoped>
-.pdf {
-  height: 100%;
-  position: relative;
-  box-sizing: border-box;
-}
-.pdf .show {
-  overflow: auto;
-  margin: auto;
-  width: 100%;
-  /* height: calc(100% - 100px); */
-  height: calc(100%);
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.pdf .pdf_footer {
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  padding: 10px 0;
-  width: 100%;
-  height: 75px;
-  background-color: rgba(255, 255, 255, 0.5);
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-}
-.pdf .pdf_footer .info {
-  display: flex;
-  flex-wrap: wrap;
-  width: 100%;
-  justify-content: center;
-}
-/* .pdf .pdf_footer .info div {
-  width: 30%;
-} */
-.pdf .pdf_footer .operate {
-  margin: 10px 0 0;
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: center;
-  width: 100%;
-}
-.pdf .pdf_footer .operate div {
-  text-align: center;
-  font-size: 15px;
-}
-.pdf .pdf_footer .operate .btn {
-  cursor: pointer;
-  margin: 5px 10px;
-  width: 100px;
-  border-radius: 10px;
-  padding: 5px;
-  color: #fff;
-  background-color: #066ebe;
-}
-</style>

+ 0 - 312
src/components/pages/components/pdf3.vue

@@ -1,312 +0,0 @@
-<template>
-  <div class="pdf">
-    <div class="show">
-      <div v-for="i in numPages" :key="i" class="p-pdf">
-        <pdf :src="pdfUrl" :page="i" class="pdfbox"></pdf>
-        <span>{{i}}</span>
-        <!-- <div class="line"></div> -->
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import pdf from "vue-pdf";
-export default {
-  name: "vue_pdf_preview",
-  props: {
-    // 当前pdf路径
-    pdfUrl: {
-      type: String,
-      default:
-        "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/0629%E5%AE%9E%E6%97%B6%E8%AF%BE%E5%A0%82%E6%A8%A1%E6%8B%9F%E6%BC%94%E7%A4%BA%E8%AF%BE%E4%BB%B61656920880446.pdf",
-    },
-    ppage: {
-      type: Number,
-      default: 1,
-    },
-  },
-  components: {
-    pdf,
-  },
-  data() {
-    return {
-      // 总页数
-      pageTotalNum: 1,
-      // 当前页数
-      pageNum: 1,
-      // 加载进度
-      loadedRatio: 0,
-      // 页面加载完成
-      curPageNum: 0,
-      // 放大系数 默认百分百
-      scale: 69,
-      // 旋转角度 ‘90’的倍数才有效
-      pageRotate: 0,
-      // 单击内部链接时触发 (目前我没有遇到使用场景)
-      page: 0,
-      loading: null,
-      numPages: 0,
-    };
-  },
-  watch: {
-    ppage(val) {
-      this.loading.close();
-      this.pageNum = val;
-    },
-    pageTotalNum(val) {
-      if (val) {
-        this.loading.close();
-      }
-      this.$emit("getPageTotal", val);
-    },
-  },
-  computed: {},
-  created() {},
-  mounted() {
-    this.loading = this.$loading.service({
-      background: "rgba(255, 255, 255, 0.7)",
-      target: document.querySelector(".pdf"),
-    });
-    // this.pageNum = this.ppage;
-    // var a = document.getElementsByClassName("pdf")[0].offsetWidth;
-    // let _this = this;
-    // this.$refs.pdf.$el.style.width =
-    //   document.getElementsByClassName("pdf")[0].offsetHeight * 1.77 + "px";
-    // window.addEventListener("resize", () => {
-    //   this.$refs.pdf.$el.style.width =
-    //     document.getElementsByClassName("pdf")[0].offsetHeight * 1.77 + "px";
-    // });
-    this.reportPreview();
-  },
-  methods: {
-    //下载PDF
-    fileDownload(data, fileName) {
-      let blob = new Blob([data], {
-        //type类型后端返回来的数据中会有,根据自己实际进行修改
-        type: "application/pdf;charset-UTF-8",
-      });
-      let filename = fileName || "pdf.pdf";
-      if (typeof window.navigator.msSaveBlob !== "undefined") {
-        window.navigator.msSaveBlob(blob, filename);
-      } else {
-        var blobURL = window.URL.createObjectURL(blob);
-        // 创建隐藏<a>标签进行下载
-        var tempLink = document.createElement("a");
-        tempLink.style.display = "none";
-        tempLink.href = blobURL;
-        tempLink.setAttribute("download", filename);
-        if (typeof tempLink.download === "undefined") {
-          tempLink.setAttribute("target", "_blank");
-        }
-        document.body.appendChild(tempLink);
-        tempLink.click();
-        document.body.removeChild(tempLink);
-        window.URL.revokeObjectURL(blobURL);
-      }
-    },
-
-    //放大
-    scaleD() {
-      this.scale += 5;
-      this.$refs.pdf.$el.style.width = parseInt(this.scale) + "%";
-    },
-
-    //缩小
-    scaleX() {
-      // scale 是百分百展示 不建议缩放
-      if (this.scale == 100) {
-        return;
-      }
-      this.scale += -5;
-      console.log(parseInt(this.scale) + "%");
-      this.$refs.pdf.$el.style.width = parseInt(this.scale) + "%";
-    },
-    // 切换上一页
-    prePage() {
-      var p = this.pageNum;
-      p = p > 1 ? p - 1 : this.pageTotalNum;
-      this.pageNum = p;
-      this.getPage(p);
-    },
-    // 切换下一页
-    nextPage() {
-      var p = this.pageNum;
-      p = p < this.pageTotalNum ? p + 1 : 1;
-      this.pageNum = p;
-      this.getPage(p);
-    },
-    // 顺时针选中角度
-    clock() {
-      this.pageRotate += 90;
-    },
-    // 逆时针旋转角度
-    counterClock() {
-      this.pageRotate -= 90;
-    },
-    // pdf 有密码 则需要输入秘密
-    password(updatePassword, reason) {
-      updatePassword(prompt('password is "test"'));
-      console.log("...reason...");
-      console.log(reason);
-      console.log("...reason...");
-    },
-    // 页面加载成功  当前页数
-    pageLoaded(e) {
-      this.$emit("current", e);
-      this.curPageNum = e;
-    },
-    // 异常监听
-    pdfError(error) {
-      console.error(error);
-    },
-    // 打印所有
-    pdfPrintAll() {
-      this.$refs.pdf.print();
-    },
-    // 打印 第一页和第二页
-    pdfPrint() {
-      // 第一个参数 文档打印的分辨率
-      // 第二个参数 文档打印的页数
-      this.$refs.pdf.print(100, [1, 2]);
-    },
-    // 获取当前页面pdf的文字信息内容
-    logContent() {
-      this.$refs.pdf.pdf.forEachPage(function (page) {
-        return page.getTextContent().then(function (content) {
-          let text = content.items.map((item) => item.str);
-          let allStr = content.items.reduce(
-            (initVal, item) => (initVal += item.str),
-            ""
-          );
-          console.log(allStr); // 内容字符串
-          console.log(text); // 内容数组
-        });
-      });
-    },
-    async reportPreview() {
-      this.src = pdf.createLoadingTask(this.pdfUrl);
-      this.src.promise.then((pdf) => {
-        this.numPages = pdf.numPages;
-        this.loading.close();
-      });
-    },
-  },
-};
-</script>
-
-<style scoped>
-.pdf {
-  height: 100%;
-  position: relative;
-  box-sizing: border-box;
-}
-.pdf .show {
-  overflow: auto;
-  margin: auto;
-  width: 100%;
-  /* height: calc(100%); */
-  max-height: 100%;
-  /* min-height: 100%; */
-  display: flex;
-  flex-wrap: wrap;
-}
-
-.pdf .show .p-pdf {
-  width: calc(100% / 5 - 60px);
-  /* overflow: hidden; */
-  display: flex;
-  align-items: center;
-  flex-direction: column;
-  justify-content: center;
-  margin-bottom: 50px;
-  margin: 25px;
-  position: relative;
-}
-.pdf .show .p-pdf .line {
-  position: absolute;
-  width: 50px;
-  right: -50px;
-  background: rgb(255, 186, 96);
-  height: 2px;
-}
-
-.pdf .show .p-pdf span {
-  width: 100%;
-  text-align: center;
-  color: #fff;
-}
-
-.pdf .show .p-pdf span + span {
-  margin-top: 10px;
-}
-.pdfbox {
-  border: 3px solid #000;
-  box-sizing: border-box;
-  border-radius: 4px;
-  overflow: hidden;
-}
-.pdf .pdf_footer {
-  position: sticky;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  padding: 10px 0;
-  width: 100%;
-  height: 75px;
-  background-color: rgba(255, 255, 255, 0.5);
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  flex-direction: column;
-}
-.pdf .pdf_footer .info {
-  display: flex;
-  flex-wrap: wrap;
-  width: 100%;
-  justify-content: center;
-}
-/* .pdf .pdf_footer .info div {
-  width: 30%;
-} */
-.pdf .pdf_footer .operate {
-  margin: 10px 0 0;
-  display: flex;
-  flex-wrap: wrap;
-  justify-content: center;
-  width: 100%;
-}
-.pdf .pdf_footer .operate div {
-  text-align: center;
-  font-size: 15px;
-}
-.pdf .pdf_footer .operate .btn {
-  cursor: pointer;
-  margin: 5px 10px;
-  width: 100px;
-  border-radius: 10px;
-  padding: 5px;
-  color: #fff;
-  background-color: #066ebe;
-}
-
-.pdf::-webkit-scrollbar {
-  /*滚动条整体样式*/
-  width: 6px;
-  /*高宽分别对应横竖滚动条的尺寸*/
-  height: 6px;
-}
-
-/*定义滚动条轨道 内阴影+圆角*/
-.pdf::-webkit-scrollbar {
-  border-radius: 10px;
-  background-color: #b8bdc9;
-}
-
-/*定义滑块 内阴影+圆角*/
-.pdf::-webkit-scrollbar-thumb {
-  border-radius: 10px;
-  -webkit-box-shadow: inset 0 0 6px rgb(96, 125, 184);
-  background-color: #2c5ab3;
-}
-</style>

+ 0 - 41
src/components/pages/components/problemDetail.vue

@@ -1,41 +0,0 @@
-<template>
-  <div>
-    <div class="pd_title">
-      <span>{{problem.courseName}}</span>
-    </div>
-    <div class="pd_stitle">
-      <span>{{problem.classname}}</span>
-    </div>
-    <div class="pd_text">
-      <span v-html="problem.text"></span>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["problem"],
-  data() {
-    return {};
-  },
-};
-</script>
-
-<style scoped>
-.pd_title {
-  font-size: 24px;
-}
-
-.pd_stitle {
-  font-size: 22px;
-  margin-top: 10px;
-}
-
-.pd_text {
-  font-size: 16px;
-  margin-top: 10px;
-  height: 400px;
-  overflow: auto;
-
-}
-</style>

+ 0 - 506
src/components/pages/components/report.vue

@@ -1,506 +0,0 @@
-<template>
-  <div class="r_box">
-    <div class="r_cbox">
-      <span>学生姓名</span>
-      <el-select
-        multiple
-        collapse-tags
-        class="r_select"
-        v-model="uname"
-        placeholder="全部"
-        filterable
-      >
-        <el-option
-          v-for="item in userAarray"
-          :key="item.userid"
-          :label="item.username"
-          :value="item.userid"
-        >
-        </el-option>
-      </el-select>
-    </div>
-    <div class="r_cbox">
-      <span>选择阶段</span>
-      <el-select
-        class="r_select"
-        v-model="chap"
-        multiple
-        collapse-tags
-        placeholder="全部"
-        @change="changeChap"
-      >
-        <el-option
-          v-for="(item, index) in dyList"
-          :key="index"
-          :label="item.name"
-          :value="item.id"
-        ></el-option>
-      </el-select>
-    </div>
-    <div class="r_cbox">
-      <span>任务内容</span>
-      <el-select
-        class="r_select"
-        v-model="task"
-        multiple
-        collapse-tags
-        placeholder="全部"
-      >
-        <el-option-group
-          v-for="(group, index) in dyAarray"
-          :key="index"
-          :label="group.name"
-        >
-          <el-option
-            v-for="(item, index2) in group.taskList"
-            :key="index + '-' + index2"
-            :label="item.name"
-            :value="group.id + '-' + item.id"
-          >
-          </el-option>
-        </el-option-group>
-      </el-select>
-    </div>
-    <div class="btn_box">
-      <el-button class="btn" type="primary" @click="confirm">确定</el-button>
-    </div>
-  </div>
-</template>
-
-<script>
-import htmlDocx from "html-docx-js/dist/html-docx";
-import saveAs from "file-saver";
-export default {
-  props: ["cid"],
-  data() {
-    return {
-      uname: [],
-      chap: [],
-      task: [],
-      dyAarray: [],
-      dyList: [],
-      userAarray: [],
-      imgList: [],
-      askList: [],
-      questList: [],
-      wordList: [],
-      course: {},
-    };
-  },
-  methods: {
-    getCourseDetail() {
-      let params = {
-        cid: this.cid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseWorksReport", params)
-        .then((res) => {
-          this.course = res.data[0][0];
-          var dyJSON = JSON.parse(res.data[0][0].chapters);
-          let dyList = [];
-          for (var i = 0; i < dyJSON.length; i++) {
-            dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
-            var a = dyJSON[i].chapterInfo[0].taskJson;
-            for (var j = 0; j < a.length; j++) {
-              dyList[i].taskList.push({ name: a[j].task, id: j });
-            }
-          }
-          this.dyList = dyList;
-          this.userAarray = res.data[1];
-          console.log(res.data[0][1]);
-          this.imgList = res.data[2];
-          this.askList = res.data[3];
-          this.questList = res.data[4];
-          this.wordList = res.data[5];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    confirm() {
-      var _uname = [];
-      var _userA = this.userAarray;
-      var _chap = JSON.parse(JSON.stringify(this.chap));
-      var _task = this.task;
-      if (this.uname.length) {
-        for (var i = 0; i < _userA.length; i++) {
-          if (this.uname.join(",").indexOf(_userA[i].userid) != -1) {
-            _uname.push(_userA[i]);
-          }
-        }
-      } else {
-        for (var i = 0; i < _userA.length; i++) {
-          _uname.push(_userA[i]);
-        }
-      }
-
-      if (!_chap.length) {
-        for (var i = 0; i < this.dyList.length; i++) {
-          _chap.push(this.dyList[i].id);
-        }
-      }
-
-      let imgList = this.imgList;
-      let askList = this.askList;
-      let questList = this.questList;
-      let wordList = this.wordList;
-
-      let workArray = [];
-
-      // json{
-      //       img: [],
-      //       askList: [],
-      //       questList: {},
-      //       wordList: [],
-      //       chapName: "",
-      //       taskName: "",
-      //       username:""
-      //     }
-
-      for (let i = 0; i < _uname.length; i++) {
-        for (let chapI = 0; chapI < _chap.length; chapI++) {
-          if (_task.length) {
-            for (let taskI = 0; taskI < _task.length; taskI++) {
-              let _tI = _task[taskI].split("-");
-              if (_tI[0] == _chap[chapI]) {
-                let _workjson = {
-                  img: [],
-                  askList: [],
-                  questList: [],
-                  wordList: [],
-                  chapName:
-                    "第" +
-                    (parseInt(_chap[chapI]) + 1) +
-                    "阶段 " +
-                    this.dyList[_chap[chapI]].name,
-                  taskName:
-                    "任务" +
-                    (parseInt(_tI[1]) + 1) +
-                    this.dyList[_chap[chapI]].taskList[_tI[1]].name,
-                  username: _uname[i].username,
-                };
-                // imgList;askList;questList;wordList;
-                for (let a = 0; a < imgList.length; a++) {
-                  if (
-                    imgList[a].stage == _chap[chapI] &&
-                    imgList[a].task == _tI[1] &&
-                    imgList[a].userid == _uname[i].userid
-                  ) {
-                    _workjson.img.push({ src: imgList[a].content });
-                  }
-                }
-                for (let b = 0; b < askList.length; b++) {
-                  if (
-                    askList[b].stage == _chap[chapI] &&
-                    askList[b].task == _tI[1] &&
-                    askList[b].userid == _uname[i].userid
-                  ) {
-                    const element = askList[b];
-                    let a1 = JSON.parse(element.content)[0];
-                    let b1 = a1.anwer.split(",");
-                    let c1 = [];
-                    for (var j1 = 0; j1 < b1.length; j1++) {
-                      c1.push(parseInt(b1[j1]));
-                    }
-                    a1.askJson.radio = c1;
-                    a1.askJson.time = element.time;
-                    _workjson.askList.push(a1.askJson);
-                  }
-                }
-                for (let c = 0; c < questList.length; c++) {
-                  if (
-                    questList[c].stage == _chap[chapI] &&
-                    questList[c].task == _tI[1] &&
-                    questList[c].userid == _uname[i].userid
-                  ) {
-                    const element = questList[c];
-                    _workjson.questList.push(JSON.parse(element.content)[0]);
-                  }
-                }
-                for (let d = 0; d < wordList.length; d++) {
-                  if (
-                    wordList[d].stage == _chap[chapI] &&
-                    wordList[d].task == _tI[1] &&
-                    wordList[d].userid == _uname[i].userid
-                  ) {
-                    const element = wordList[d];
-                    _workjson.wordList.push(element.content);
-                  }
-                }
-                workArray.push(_workjson);
-              }
-            }
-          } else {
-            for (
-              let taskI = 0;
-              taskI < this.dyList[_chap[chapI]].taskList.length;
-              taskI++
-            ) {
-              let _tI = [
-                _chap[chapI],
-                this.dyList[_chap[chapI]].taskList[taskI].id,
-              ];
-              if (_tI[0] == _chap[chapI]) {
-                let _workjson = {
-                  img: [],
-                  askList: [],
-                  questList: [],
-                  wordList: [],
-                  chapName:
-                    "第" +
-                    (parseInt(_chap[chapI]) + 1) +
-                    "阶段 " +
-                    this.dyList[_chap[chapI]].name,
-                  taskName:
-                    "任务" +
-                    (parseInt(_tI[1]) + 1) +
-                    this.dyList[_chap[chapI]].taskList[_tI[1]].name,
-                  username: _uname[i].username,
-                };
-                // imgList;askList;questList;wordList;
-                for (let a = 0; a < imgList.length; a++) {
-                  if (
-                    imgList[a].stage == _chap[chapI] &&
-                    imgList[a].task == _tI[1] &&
-                    imgList[a].userid == _uname[i].userid
-                  ) {
-                    _workjson.img.push({ src: imgList[a].content });
-                  }
-                }
-                for (let b = 0; b < askList.length; b++) {
-                  if (
-                    askList[b].stage == _chap[chapI] &&
-                    askList[b].task == _tI[1] &&
-                    askList[b].userid == _uname[i].userid
-                  ) {
-                    const element = askList[b];
-                    let a1 = JSON.parse(element.content)[0];
-                    let b1 = a1.anwer.split(",");
-                    let c1 = [];
-                    for (var j1 = 0; j1 < b1.length; j1++) {
-                      c1.push(parseInt(b1[j1]));
-                    }
-                    a1.askJson.radio = c1;
-                    a1.askJson.time = element.time;
-                    _workjson.askList.push(a1.askJson);
-                  }
-                }
-                for (let c = 0; c < questList.length; c++) {
-                  if (
-                    questList[c].stage == _chap[chapI] &&
-                    questList[c].task == _tI[1] &&
-                    questList[c].userid == _uname[i].userid
-                  ) {
-                    const element = questList[c];
-                    _workjson.questList.push(JSON.parse(element.content)[0]);
-                  }
-                }
-                for (let d = 0; d < wordList.length; d++) {
-                  if (
-                    wordList[d].stage == _chap[chapI] &&
-                    wordList[d].task == _tI[1] &&
-                    wordList[d].userid == _uname[i].userid
-                  ) {
-                    const element = wordList[d];
-                    _workjson.wordList.push(element.content);
-                  }
-                }
-                workArray.push(_workjson);
-              }
-            }
-          }
-        }
-      }
-      var _course = `<h1>${this.course.title}</h1>`;
-      let html = "";
-      for (let i = 0; i < workArray.length; i++) {
-        let _html = this.setHtml(workArray[i]);
-        html += _html;
-      }
-
-      this.generate(_course + html);
-      console.log(workArray);
-    },
-    setHtml(workJson) {
-      var _title =
-      // style='display:flex;align-items:center'
-        "<div >" +
-        "<h2>" +
-        workJson.chapName +
-        "-" +
-        workJson.username;
-      ("</h2>");
-      ("</div>");
-      var _subtitle = "<h3>" + workJson.taskName + "</h3>";
-      var _img = "";
-      if (workJson.img.length > 0) {
-        for (var i = 0; i < workJson.img.length; i++) {
-          // _img+=`<div style="margin-top:10px"><div>图片${
-          //   i + 1
-          // }:<a href='${ workJson.img[i].src}'>${ workJson.img[i].src}</a></div>`
-          _img += `<div style="margin-top:10px"><div>图片${
-            i + 1
-          }</div><img style="max-width:500px" src="${
-            workJson.img[i].src
-          }"/></div>`;
-        }
-      }
-
-      var _ask = "";
-      if (workJson.askList.length > 0) {
-        var _ask = "<h3>问卷调查</h3>";
-        for (var i = 0; i < workJson.askList.length; i++) {
-          var _div = document.createElement("div");
-          _div.innerHTML = `<h4>问卷标题:${workJson.askList[i].askTitle}</h4>`;
-          for (var j = 0; j < workJson.askList[i].askJson.length; j++) {
-            var _div2 = document.createElement("div");
-            _div2.innerHTML = `<h5>第${j + 1}题:${
-              workJson.askList[i].askJson[j].askstitle
-            }  选择:${workJson.askList[i].radio[j] + 1}</h5> `;
-            var _div3 = document.createElement("div");
-            for (
-              var z = 0;
-              z < workJson.askList[i].askJson[j].checkList.length;
-              z++
-            ) {
-              _div3.innerHTML += `<span style="margin-right:5px">${z + 1}.${
-                workJson.askList[i].askJson[j].checkList[z]
-              }</span>`;
-            }
-            _div2.innerHTML += `<div>${_div3.innerHTML}</div>`;
-            _div.innerHTML += `<div>${_div2.innerHTML}</div>`;
-          }
-          _ask += `<div>${_div.innerHTML}</div>`;
-        }
-      }
-
-      var _answer = "";
-      if (workJson.questList.length > 0) {
-        var _answer = "<h3>问答</h3>";
-        for (var i = 0; i < workJson.questList.length; i++) {
-          var _div = document.createElement("div");
-          _div.innerHTML = `<h4>问答:${workJson.questList[i].answerTitle}</h4>`;
-          _div.innerHTML += `<div>${workJson.questList[i].answer}</div>`;
-          _answer += `<div>${_div.innerHTML}</div>`;
-        }
-      }
-
-      var _link = "";
-      if (workJson.wordList.length > 0) {
-        for (var i = 0; i < workJson.wordList.length; i++) {
-          _link += `<div style="margin-top:10px"><a href='${workJson.wordList[i]}'>${workJson.wordList[i]}</a></div>`;
-        }
-      }
-
-      if (
-        !workJson.img.length &&
-        !workJson.askList.length &&
-        !workJson.questList.length &&
-        !workJson.wordList.length
-      ) {
-        return "";
-      }
-      return _title + _subtitle + _img + _ask + _answer + _link;
-    },
-    async generate(a) {
-      // 将html文件中需要用到的数据挂载到store上
-      this.$store.commit("update", ["report", a]);
-      console.log(this.$store.state.report);
-      const content = `<!DOCTYPE html>
-      <html lang="en">
-      <head>
-          <meta charset="UTF-8">
-          <meta http-equiv="X-UA-Compatible" content="IE=edge">
-          <meta name="viewport" content="width=device-width, initial-scale=1.0">
-          <title>报告</title>
-      </head>
-      <body>
-      ${this.$store.state.report}
-      </body>
-      </html>`;
-      // debugger
-      //生成报告
-      const link = document.createElement("a");
-      // link.download = "报告.html"; // 文件名
-      let dname = this.course.title+'-'
-      var _uname = [];
-      var _userA = this.userAarray;
-      if (this.uname.length) {
-        for (var i = 0; i < _userA.length; i++) {
-          if (this.uname.join(",").indexOf(_userA[i].userid) != -1) {
-            _uname.push(_userA[i].username);
-          }
-        }
-        dname+=_uname.join('、')+'.html'
-      } else {
-        dname+='全部学生.html'
-      }
-      link.download = dname; // 文件名
-      link.style.display = "none";
-      // 创建文件流
-      // 创建bolb实例时,内容一定要放在[]中
-      const blob = new Blob([content], {
-        type: "text/plain;charset='utf-8'",
-      });
-      link.href = window.URL.createObjectURL(blob);
-      document.body.appendChild(link);
-      link.click();
-      document.body.removeChild(link);
-      // saveAs(
-      //   htmlDocx.asBlob(content, {
-      //     orientation: "landscape", //跨域设置
-      //   }),
-      //   //文件名
-      //   "报告.doc"
-      // );
-    },
-    changeChap() {
-      let _dyList = this.dyList;
-      this.dyAarray = [];
-      this.task = [];
-      for (var i = 0; i < _dyList.length; i++) {
-        if (this.chap.indexOf(_dyList[i].id) != -1) {
-          this.dyAarray.push(_dyList[i]);
-        }
-      }
-    },
-  },
-  watch: {
-    cid(newValue, oldValue) {
-      this.getCourseDetail();
-    },
-  },
-  mounted() {
-    this.getCourseDetail();
-  },
-};
-</script>
-
-<style scoped>
-.r_box {
-}
-.r_cbox {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  margin-bottom: 20px;
-}
-.r_cbox span {
-  margin-right: 20px;
-}
-
-.r_box .r_select {
-  width: 400px;
-}
-
-.btn_box {
-  margin: 40px 0 0 0;
-  width: 100%;
-  display: flex;
-  justify-content: center;
-}
-.btn_box .btn {
-  width: 60%;
-  background: rgb(14, 114, 230);
-}
-</style>

+ 0 - 406
src/components/pages/components/report/courseDetailReport.vue

@@ -1,406 +0,0 @@
-<template>
-  <div>
-    <div style="" class="cdr_box">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div id="charts_canvas1" class="echart"></div>
-      <div id="charts_canvas2" class="echart"></div>
-      <div id="charts_canvas3" class="echart" ref="table">
-        <div style="font-size: 13px; font-weight: 600">
-          项目综合评估:各个阶段评价平均分
-        </div>
-        <el-table
-          class="table"
-          :data="tdata"
-          :height="tableHeight"
-          :fit="true"
-          style="width: 100%"
-          :header-cell-style="{
-            background: '#fff',
-            fontSize: '12px',
-            fontWeight: 'unset',
-            padding: '0',
-            border: 'unset',
-          }"
-          :row-class-name="tableRowClassName"
-          header-row-class-name="header_row_class"
-        >
-          <el-table-column label="排名" min-width="29px" align="center">
-            <template slot-scope="scope">
-              <div style="font-weight: 600">{{ scope.$index + 1 }}</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop="name"
-            label="名称"
-            min-width="39px"
-            align="center"
-          >
-            <template slot-scope="scope">
-              <div style="color: rgb(96, 96, 96); font-weight: 600">
-                {{ scope.row.name }}
-              </div>
-            </template></el-table-column
-          >
-          <el-table-column
-            prop="rate"
-            label="完成度"
-            min-width="39px"
-            align="center"
-            ><template slot-scope="scope">
-              <div style="color: rgb(35, 91, 188); font-weight: 600">
-                {{ scope.row.rate }}
-              </div>
-            </template></el-table-column
-          >
-          <el-table-column
-            prop="rate1"
-            label="活跃度"
-            min-width="39px"
-            align="center"
-            ><template slot-scope="scope">
-              <div style="color: rgb(35, 91, 188); font-weight: 600">
-                {{ scope.row.rate1 }}
-              </div>
-            </template></el-table-column
-          >
-          <el-table-column
-            prop="rate2"
-            label="参与度"
-            min-width="39px"
-            align="center"
-            ><template slot-scope="scope">
-              <div style="color: rgb(35, 91, 188); font-weight: 600">
-                {{ scope.row.rate2 }}
-              </div>
-            </template></el-table-column
-          >
-          <el-table-column
-            prop="rate3"
-            label="综合表现"
-            min-width="49px"
-            align="center"
-            ><template slot-scope="scope">
-              <div style="color: rgb(35, 91, 188);font-weight: 600">{{ scope.row.rate3 }}</div>
-            </template></el-table-column
-          >
-          <el-table-column
-            prop="ratez"
-            label="综合"
-            min-width="29px"
-            align="center"
-            ><template slot-scope="scope">
-              <div style="color: rgb(233, 140, 148);font-weight: 600">{{ scope.row.ratez }}</div>
-            </template></el-table-column
-          >
-        </el-table>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      chartObj1: null,
-      chartObj2: null,
-      chartObj3: null,
-      tableHeight: 0,
-      tdata: [],
-      option1: {
-        title: {
-          text: "项目完成度:各个阶段完成情况",
-          textStyle: {
-            fontSize: 13,
-          },
-        },
-        tooltip: {
-          trigger: "axis",
-          axisPointer: {
-            type: "cross",
-            label: {
-              backgroundColor: "#6a7985",
-            },
-          },
-        },
-        legend: {
-          data: ["个人完成度", "班级平均完成度"],
-          top: "bottom",
-          icon: "circle",
-        },
-        grid: {
-          left: "15%",
-          right: "5%",
-          bottom: "20%",
-          top: "15%",
-        },
-        xAxis: [
-          {
-            type: "category",
-            data: ["阶段1", "阶段2", "阶段3", "阶段4", "阶段5"],
-          },
-        ],
-        yAxis: [
-          {
-            type: "value",
-          },
-        ],
-        series: [
-          {
-            name: "个人完成度",
-            type: "line",
-            areaStyle: {},
-            data: [0, 0, 0, 0, 0],
-            label: {
-              show: true,
-            },
-          },
-          {
-            name: "班级平均完成度",
-            type: "line",
-            areaStyle: {},
-            data: [0, 0, 0, 0, 0],
-            label: {
-              show: true,
-            },
-          },
-        ],
-      },
-      option2: {
-        title: {
-          text: "项目活跃度:不同任务的学习时间占比",
-          textStyle: {
-            fontSize: 13,
-          },
-        },
-        tooltip: {
-          trigger: "axis",
-          axisPointer: {
-            // Use axis to trigger tooltip
-            type: "shadow", // 'shadow' as default; can also be 'line' or 'shadow'
-          },
-        },
-        grid: {
-          left: "15%",
-          right: "0%",
-          bottom: "15%",
-          top: "15%",
-        },
-        xAxis: {
-          type: "category",
-          data: ["阶段1", "阶段2", "阶段3", "阶段4", "阶段5"],
-        },
-        yAxis: {
-          type: "value",
-        },
-        series: [
-          {
-            name: "任务1",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务2",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务3",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务4",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务5",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row row_class";
-      } else {
-        return "row_class";
-      }
-    },
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj1 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas1")
-        );
-        let _array1 = [];
-        let _array2 = [];
-        for (var i = 0; i < 5; i++) {
-          //   this.option.series[0].data[i].value = this.randomNum(30, 80);
-          _array1.push(this.randomNum(50, 100));
-          _array2.push(this.randomNum(50, 100));
-        }
-        this.option1.series[0].data = _array1;
-        this.option1.series[1].data = _array2;
-
-        const chartObj2 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas2")
-        );
-        let _array21 = [];
-        let _array22 = [];
-        let _array23 = [];
-        let _array24 = [];
-        let _array25 = [];
-        for (var i = 0; i < 5; i++) {
-          //   this.option.series[0].data[i].value = this.randomNum(30, 80);
-          _array21.push(this.randomNum(2, 20));
-          _array22.push(this.randomNum(2, 20));
-          _array23.push(this.randomNum(2, 20));
-          _array24.push(this.randomNum(2, 20));
-          _array25.push(this.randomNum(2, 20));
-        }
-        this.option2.series[0].data = _array21;
-        this.option2.series[1].data = _array22;
-        this.option2.series[2].data = _array23;
-        this.option2.series[3].data = _array24;
-        this.option2.series[4].data = _array25;
-        this.chartObj1 = chartObj1;
-        this.chartObj1.setOption(this.option1);
-        this.chartObj2 = chartObj2;
-        this.chartObj2.setOption(this.option2);
-        this.tdata = [];
-        for (var i = 0; i < 5; i++) {
-          var _rate = this.randomNum(3, 5);
-          var _rate1 = this.randomNum(3, 5);
-          var _rate2 = this.randomNum(3, 5);
-          var _rate3 = this.randomNum(3, 5);
-          var _ratez = (_rate + _rate1 + _rate2 + _rate3) / 4;
-          this.tdata.push({
-            name: "阶段" + (i + 1),
-            rate: _rate.toFixed(1),
-            rate1: _rate1.toFixed(1),
-            rate2: _rate2.toFixed(1),
-            rate3: _rate3.toFixed(1),
-            ratez: _ratez.toFixed(1),
-          });
-          this.tdata.sort(this.sortId);
-          this.$nextTick(() => {
-            this.setTableHeight();
-          });
-        }
-      });
-      let _this = this;
-      window.addEventListener("resize", () => {
-        if (_this.chartObj1) {
-          _this.chartObj1.resize();
-          _this.chartObj2.resize();
-          _this.setTableHeight();
-        }
-      });
-    },
-    sortId(a, b) {
-      return b.ratez - a.ratez;
-    },
-    setTableHeight() {
-      this.tableHeight =
-        window.innerHeight - this.$refs.table.offsetHeight - 190;
-      // 监听窗口大小变化
-    },
-  },
-  mounted() {
-    this.$nextTick(() => {
-      this.setChart();
-    });
-  },
-};
-</script>
-
-<style scoped>
-.cdr_box {
-  width: calc(100% - 5px);
-  height: calc(100%);
-  display: flex;
-  justify-content: space-between;
-}
-.echart {
-  height: 100%;
-  width: calc(100% / 3 - 5px);
-}
-.el-table >>> .even_row {
-  background-color: rgb(238, 243, 250) !important;
-}
-.el-table >>> .row_class td {
-  padding: 8px 0;
-  border: unset;
-}
-.el-table >>> .row_class {
-  background: rgb(249, 249, 249);
-}
-.el-table >>> .row_class .cell {
-  padding: 0;
-  white-space: nowrap;
-  font-size: 12px;
-}
-.el-table >>> .header_row_class .cell {
-  padding: 0;
-  white-space: nowrap;
-}
-</style>

+ 0 - 271
src/components/pages/components/report/courseInfo.vue

@@ -1,271 +0,0 @@
-<template>
-  <div v-loading="isloading">
-    <div class="ci_info" v-if="Object.keys(courseInfo).length">
-      <div class="ci_info_box">
-        <span>项目名称:</span><span>{{ courseInfo.title }}</span>
-      </div>
-      <div class="ci_info_box">
-        <span>创建人:</span><span>{{ courseInfo.name }}</span>
-      </div>
-      <div class="ci_info_box">
-        <span>协同人员:</span><span>{{ teacher ? teacher : "无协同人员" }}</span>
-      </div>
-      <div class="ci_info_box2">
-        <div>
-          阶段<span>{{ tool.stage }}</span>个
-        </div>
-        <div>
-          任务<span>{{ tool.task }}</span>个
-        </div>
-        <div>
-          工具<span>{{ tool.tool }}</span>个
-        </div>
-      </div>
-    </div>
-    <div style="width: 90%; height: calc(100% - 130px); margin: 10px auto 0">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div id="charts_canvas" class="echart" style="width: 100%; height: 100%"></div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["courseid"],
-  data() {
-    return {
-      isloading:false,
-      chartJson: {},
-      courseInfo: {},
-      teacher: "",
-      chartObj: null,
-      tool: {
-        stage: 0,
-        task: 0,
-        tool: 0,
-      },
-      option: {
-        legend: {
-          top: "bottom",
-        },
-        toolbox: {
-          show: true,
-        },
-        grid: {},
-        series: [
-          {
-            bottom: "20%",
-            name: "学习活动时间分配图",
-            type: "pie",
-            // radius: [10, "80%"],
-            center: ["50%", "50%"],
-            // roseType: "area",
-            // itemStyle: {
-            //   borderRadius: 8,
-            // },
-            label: {
-              show: true,
-              position: "inside",
-              formatter: "{b}\n{d}%",
-            },
-            data: [
-              { value: 0, name: "思维网格" },
-              { value: 0, name: "思维导图" },
-              { value: 0, name: "电子白板" },
-              { value: 0, name: "选择题" },
-              // { value: 0, name: "自主学习" },
-              { value: 0, name: "其他" },
-            ],
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    getInfo() {
-      this.isloading = true
-      let params = {
-        cid: this.courseid,
-      };
-      console.log(this.courseid);
-      if (!this.courseid) {
-        return;
-      }
-      this.ajax
-        .get(this.$store.state.api + "getCourseInfo", params)
-        .then((res) => {
-          this.isloading = false
-          this.courseInfo = res.data[0][0];
-          let teachers = res.data[1];
-          let teacher = [];
-          for (var i = 0; i < teachers.length; i++) {
-            teacher.push(teachers[i].name);
-          }
-          this.teacher = teacher.join("、");
-
-          let chapters = JSON.parse(res.data[0][0].chapters);
-          var task = 0;
-          var tool = 0;
-
-          var wang = 0;//7
-          var si = 0;//3
-          var dian = 0;//1
-          var xuan = 0;//4
-          var other = 0;
-          for (var i = 0; i < chapters.length; i++) {
-            task += chapters[i].chapterInfo[0].taskJson.length;
-            for (
-              var j = 0;
-              j < chapters[i].chapterInfo[0].taskJson.length;
-              j++
-            ) {
-              if (chapters[i].chapterInfo[0].taskJson[j].toolChoose.length) {
-                for (var k = 0; k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length; k++) {
-                  if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(7) != -1) {
-                    wang++
-                  } else if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(3) != -1) {
-                    si++
-                  } else if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(1) != -1) {
-                    dian++
-                  } else if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(4) != -1) {
-                    xuan++
-                  } else {
-                    other++
-                  }
-                }
-              }
-
-              tool += chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
-            }
-          }
-          this.chartJson = {
-            wang,
-            si,
-            dian,
-            xuan,
-            other
-          }
-          this.tool.stage = chapters.length;
-          this.tool.task = task;
-          this.tool.tool = tool;
-          this.$nextTick(() => {
-            this.setChart();
-          });
-        })
-        .catch((err) => {
-          this.isloading = false
-          console.error(err);
-        });
-    },
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-          //   document.getElementById("#charts_canvas")
-        );
-        let _array = [];
-        // for (var i = 0; i < 5; i++) {
-        //   this.option.series[0].data[i].value = this.randomNum(30, 80);
-        //   // _array.push(this.randomNum(0, 80));
-        // }
-        this.option.series[0].data[0].value = this.chartJson.wang
-        this.option.series[0].data[1].value = this.chartJson.si
-        this.option.series[0].data[2].value = this.chartJson.dian
-        this.option.series[0].data[3].value = this.chartJson.xuan
-        this.option.series[0].data[4].value = this.chartJson.other
-
-        // this.option.series[0].data[0].value = _array;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(this.option);
-      });
-      let _this = this;
-      window.addEventListener("resize", () => {
-        if (_this.chartObj) {
-          _this.chartObj.resize();
-        }
-      });
-    },
-  },
-  watch: {
-    courseid(newValue, oldValue) {
-      this.getInfo();
-    },
-  },
-  created() {
-    this.getInfo();
-  },
-};
-</script>
-
-<style scoped>
-.ci_info {
-  font-size: 14px;
-}
-
-.ci_info_box {
-  width: 90%;
-  margin: 0 auto;
-  display: flex;
-}
-
-.ci_info_box span {
-  white-space: nowrap;
-}
-
-.ci_info_box span+span {
-  width: 100%;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.ci_info_box+.ci_info_box {
-  margin-top: 10px;
-}
-
-.ci_info_box2 {
-  width: 90%;
-  margin: 0 auto;
-  display: flex;
-  margin-top: 10px;
-  font-size: 16px;
-  justify-content: space-between;
-  color: rgb(15, 120, 187);
-  align-items: center;
-}
-
-.ci_info_box2 div {
-  display: flex;
-  align-items: center;
-}
-
-.ci_info_box2 span {
-  color: rgb(234, 146, 59);
-  width: 30px;
-  font-size: 25px;
-  text-align: center;
-  font-weight: 700;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-</style>

+ 0 - 271
src/components/pages/components/report/courseInfoGM.vue

@@ -1,271 +0,0 @@
-<template>
-  <div v-loading="isloading">
-    <div class="ci_info" v-if="Object.keys(courseInfo).length">
-      <div class="ci_info_box">
-        <span>项目名称:</span><span>{{ courseInfo.title }}</span>
-      </div>
-      <div class="ci_info_box">
-        <span>创建人:</span><span>{{ courseInfo.name }}</span>
-      </div>
-      <div class="ci_info_box">
-        <span>协同人员:</span><span>{{ teacher ? teacher : "无协同人员" }}</span>
-      </div>
-      <div class="ci_info_box2">
-        <div>
-          阶段<span>{{ tool.stage }}</span>个
-        </div>
-        <div>
-          任务<span>{{ tool.task }}</span>个
-        </div>
-        <div>
-          工具<span>{{ tool.tool }}</span>个
-        </div>
-      </div>
-    </div>
-    <div style="width: 90%; height: calc(100% - 130px); margin: 10px auto 0">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div id="charts_canvas" class="echart" style="width: 100%; height: 100%"></div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["courseid"],
-  data() {
-    return {
-      isloading:false,
-      chartJson: {},
-      courseInfo: {},
-      teacher: "",
-      chartObj: null,
-      tool: {
-        stage: 0,
-        task: 0,
-        tool: 0,
-      },
-      option: {
-        legend: {
-          top: "bottom",
-        },
-        toolbox: {
-          show: true,
-        },
-        grid: {},
-        series: [
-          {
-            bottom: "20%",
-            name: "学习活动时间分配图",
-            type: "pie",
-            // radius: [10, "80%"],
-            center: ["50%", "50%"],
-            // roseType: "area",
-            // itemStyle: {
-            //   borderRadius: 8,
-            // },
-            label: {
-              show: true,
-              position: "inside",
-              formatter: "{b}\n{d}%",
-            },
-            data: [
-              { value: 0, name: "思维网格" },
-              { value: 0, name: "思维导图" },
-              { value: 0, name: "电子白板" },
-              { value: 0, name: "选择题" },
-              // { value: 0, name: "自主学习" },
-              { value: 0, name: "其他" },
-            ],
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    getInfo() {
-      this.isloading = true
-      let params = {
-        cid: this.courseid,
-      };
-      console.log(this.courseid);
-      if (!this.courseid) {
-        return;
-      }
-      this.ajax
-        .get(this.$store.state.api + "getCourseInfo", params)
-        .then((res) => {
-          this.isloading = false
-          this.courseInfo = res.data[0][0];
-          let teachers = res.data[1];
-          let teacher = [];
-          for (var i = 0; i < teachers.length; i++) {
-            teacher.push(teachers[i].name);
-          }
-          this.teacher = teacher.join("、");
-
-          let chapters = JSON.parse(res.data[0][0].chapters);
-          var task = 0;
-          var tool = 0;
-
-          var wang = 0;//7
-          var si = 0;//3
-          var dian = 0;//1
-          var xuan = 0;//4
-          var other = 0;
-          for (var i = 0; i < chapters.length; i++) {
-            task += chapters[i].chapterInfo[0].taskJson.length;
-            for (
-              var j = 0;
-              j < chapters[i].chapterInfo[0].taskJson.length;
-              j++
-            ) {
-              if (chapters[i].chapterInfo[0].taskJson[j].toolChoose.length) {
-                for (var k = 0; k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length; k++) {
-                  if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(7) != -1) {
-                    wang++
-                  } else if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(3) != -1) {
-                    si++
-                  } else if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(1) != -1) {
-                    dian++
-                  } else if (chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool.indexOf(4) != -1) {
-                    xuan++
-                  } else {
-                    other++
-                  }
-                }
-              }
-
-              tool += chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
-            }
-          }
-          this.chartJson = {
-            wang,
-            si,
-            dian,
-            xuan,
-            other
-          }
-          this.tool.stage = chapters.length;
-          this.tool.task = task;
-          this.tool.tool = tool;
-          this.$nextTick(() => {
-            this.setChart();
-          });
-        })
-        .catch((err) => {
-          this.isloading = false
-          console.error(err);
-        });
-    },
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-          //   document.getElementById("#charts_canvas")
-        );
-        let _array = [];
-        // for (var i = 0; i < 5; i++) {
-        //   this.option.series[0].data[i].value = this.randomNum(30, 80);
-        //   // _array.push(this.randomNum(0, 80));
-        // }
-        this.option.series[0].data[0].value = this.chartJson.wang
-        this.option.series[0].data[1].value = this.chartJson.si
-        this.option.series[0].data[2].value = this.chartJson.dian
-        this.option.series[0].data[3].value = this.chartJson.xuan
-        this.option.series[0].data[4].value = this.chartJson.other
-
-        // this.option.series[0].data[0].value = _array;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(this.option);
-      });
-      let _this = this;
-      window.addEventListener("resize", () => {
-        if (_this.chartObj) {
-          _this.chartObj.resize();
-        }
-      });
-    },
-  },
-  watch: {
-    courseid(newValue, oldValue) {
-      this.getInfo();
-    },
-  },
-  created() {
-    this.getInfo();
-  },
-};
-</script>
-
-<style scoped>
-.ci_info {
-  font-size: 14px;
-}
-
-.ci_info_box {
-  width: 90%;
-  margin: 0 auto;
-  display: flex;
-}
-
-.ci_info_box span {
-  white-space: nowrap;
-}
-
-.ci_info_box span+span {
-  width: 100%;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.ci_info_box+.ci_info_box {
-  margin-top: 10px;
-}
-
-.ci_info_box2 {
-  width: 90%;
-  margin: 0 auto;
-  display: flex;
-  margin-top: 10px;
-  font-size: 16px;
-  justify-content: space-between;
-  color: #5c549f;
-  align-items: center;
-}
-
-.ci_info_box2 div {
-  display: flex;
-  align-items: center;
-}
-
-.ci_info_box2 span {
-  color: rgb(234, 146, 59);
-  width: 30px;
-  font-size: 25px;
-  text-align: center;
-  font-weight: 700;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-</style>

+ 0 - 317
src/components/pages/components/report/coursePie.vue

@@ -1,317 +0,0 @@
-<template>
-  <div v-loading="isloading">
-    <div style="width: 95%; height: calc(100% - 40px); margin: 20px auto;"  ref="innder">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <!-- <div
-        id="charts_canvas"
-        class="echart"
-        style="width: 100%; height: 100%"
-      ></div> -->
-      <div id="charts_canvas3" class="echart" ref="table">
-        <!-- <div style="font-size: 13px; font-weight: 600">
-          项目综合评估:各个阶段评价平均分
-        </div> -->
-        <el-table class="table" :data="tdata" :height="tableHeight" :fit="true" style="width: 100%" :header-cell-style="{
-          background: '#fff',
-          fontSize: '12px',
-          fontWeight: 'unset',
-          padding: '0',
-          border: 'unset',
-        }" :row-class-name="tableRowClassName" header-row-class-name="header_row_class">
-          <el-table-column label="排名" min-width="29px" align="center">
-            <template slot-scope="scope">
-              <div style="font-weight: 600">{{ scope.$index + 1 }}</div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="name" label="名称" min-width="39px" align="center">
-            <template slot-scope="scope">
-              <div style="color: rgb(96, 96, 96); font-weight: 600">
-                {{ scope.row.name }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="rate" label="完成度" min-width="39px" align="center"><template slot-scope="scope">
-              <div style="color: rgb(35, 91, 188); font-weight: 600">
-                {{ scope.row.rate }}
-              </div>
-            </template></el-table-column>
-          <el-table-column prop="rate1" label="活跃度" min-width="39px" align="center"><template slot-scope="scope">
-              <div style="color: rgb(35, 91, 188); font-weight: 600">
-                {{ scope.row.rate1 }}
-              </div>
-            </template></el-table-column>
-          <el-table-column prop="rate2" label="参与度" min-width="39px" align="center"><template slot-scope="scope">
-              <div style="color: rgb(35, 91, 188); font-weight: 600">
-                {{ scope.row.rate2 }}
-              </div>
-            </template></el-table-column>
-          <el-table-column prop="rate3" label="综合表现" min-width="49px" align="center"><template slot-scope="scope">
-              <div style="color: rgb(233, 140, 148);font-weight: 600">{{ scope.row.rate3 }}</div>
-            </template></el-table-column>
-          <!-- <el-table-column prop="ratez" label="综合" min-width="29px" align="center"><template slot-scope="scope">
-              <div style="color: rgb(233, 140, 148);font-weight: 600">{{ scope.row.ratez }}</div>
-            </template></el-table-column> -->
-        </el-table>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["userid", "courseid"],
-  data() {
-    return {
-      isloading:false,
-      workJson: [],
-      chartObj: null,
-      tdata: [],
-      tableHeight: 0,
-      option: {
-        legend: {
-          top: "bottom",
-        },
-        toolbox: {
-          show: true,
-        },
-        grid: {},
-        series: [
-          {
-            bottom: "10%",
-            name: "学习活动时间分配图",
-            type: "pie",
-            radius: [10, "80%"],
-            center: ["50%", "50%"],
-            roseType: "area",
-            itemStyle: {
-              borderRadius: 8,
-            },
-            label: {
-              show: true,
-              position: "inside",
-              formatter: "{b}\n{d}%",
-            },
-            data: [
-              { value: 0, name: "思维网格" },
-              { value: 0, name: "思维导图" },
-              { value: 0, name: "电子白板" },
-              { value: 0, name: "问卷调查" },
-              { value: 0, name: "自主学习" },
-              { value: 0, name: "其他" },
-            ],
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row row_class";
-      } else {
-        return "row_class";
-      }
-    },
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    getInfo() {
-      this.isloading = true
-      let params = {
-        uid: this.userid,
-        cid: this.courseid,
-      };
-      console.log(this.userid);
-      if (!this.userid) {
-        return;
-      }
-      this.ajax
-        .get(this.$store.state.api + "getUserInfo", params)
-        .then((res) => {
-          this.isloading = false
-          let chapters = JSON.parse(res.data[2][0].chapters);
-          var tool = 0;
-          let workJson = []
-          let _pWork = res.data[3];
-          let _allWork = res.data[4];
-          let _allComment = res.data[5];
-
-          for (var i = 0; i < chapters.length; i++) {
-            workJson[i] = { tool: 0, ptool: 0, work: 0, ishuo: 0, isCan: 0 }
-            for (
-              var j = 0;
-              j < chapters[i].chapterInfo[0].taskJson.length;
-              j++
-            ) {
-              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交,40.项目-学生互评 41.项目-下拉选择题 42.项目-录音功能
-              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
-              for (
-                var k = 0;
-                k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
-                k++
-              ) {
-                if (
-                  _toolsAarry.indexOf(
-                    chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool[0]
-                  ) != -1
-                ) {
-                  tool++;
-                  workJson[i].tool++
-                }
-              }
-            }
-
-            for (var k = 0; k < _pWork.length; k++) {
-              if (_pWork[k].stage == i) {
-                workJson[i].ptool++
-              }
-            }
-            for (var k = 0; k < _allComment.length; k++) {
-              if (_allComment[k].stage == i) {
-                workJson[i].ishuo++
-              }
-            }
-
-
-          }
-          this.userinfo = res.data[0][0];
-          this.ccount = tool;
-          this.islearn = tool - parseInt(res.data[1][0].vcount);
-
-          this.iscount = res.data[1][0].vcount;
-          this.vcount = 0;
-
-          for (var i = 0; i < workJson.length; i++) {
-            if (workJson[i].ptool > workJson[i].tool) {
-              workJson[i].work = 5
-            } else if( workJson[i].tool === 0){
-              workJson[i].work = 5
-            }else{
-              workJson[i].work = Math.round(workJson[i].ptool / workJson[i].tool * 100 / 20)
-            }
-            if (workJson[i].ptool) {
-              workJson[i].isCan = 1
-            }
-          }
-          this.workJson = workJson
-
-          console.log(workJson);
-          this.setChart();
-        })
-        .catch((err) => {
-          this.isloading = false
-          console.error(err);
-        });
-    },
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        // const chartObj = this.$echarts.init(
-        //   //劳动课程
-        //   this.$el.querySelector("#charts_canvas")
-        //   //   document.getElementById("#charts_canvas")
-        // );
-        // let _array = [];
-        // for (var i = 0; i < 6; i++) {
-        //   this.option.series[0].data[i].value = this.randomNum(30, 80);
-        //   // _array.push(this.randomNum(0, 80));
-        // }
-        // // this.option.series[0].data[0].value = _array;
-        // // 初始化雷达图
-        // this.chartObj = chartObj;
-        // this.chartObj.setOption(this.option);
-
-        this.tdata = [];
-        for (var i = 0; i < this.workJson.length; i++) {
-          var _rate = this.workJson[i].work < 3 ? 3 : this.workJson[i].work;
-          var _rate1 = this.workJson[i].ishuo ? 5 : 3;
-          var _rate2 = this.workJson[i].isCan ? 5 : 3;
-          var _rate3 = (_rate + _rate1 + _rate2) / 3;
-          var _ratez = (_rate + _rate1 + _rate2 + _rate3) / 4;
-          this.tdata.push({
-            name: "阶段" + (i + 1),
-            rate: _rate.toFixed(1),
-            rate1: _rate1.toFixed(1),
-            rate2: _rate2.toFixed(1),
-            rate3: _rate3.toFixed(1),
-            ratez: _ratez.toFixed(1),
-          });
-        }
-        this.tdata.sort(this.sortId);
-        this.$nextTick(() => {
-          this.setTableHeight();
-        });
-      });
-      // let _this = this;
-      // window.addEventListener("resize", () => {
-      //   if (_this.chartObj) {
-      //     _this.chartObj.resize();
-      //   }
-      // });
-    },
-    sortId(a, b) {
-      return b.ratez - a.ratez;
-    },
-    setTableHeight() {
-      console.log(this.$refs.innder.offsetHeight);
-      this.tableHeight = this.$refs.innder.offsetHeight
-        // window.innerHeight - this.$refs.table.offsetHeight - 600;
-      // 监听窗口大小变化
-    },
-  },
-  watch: {
-    userid(newValue, oldValue) {
-      this.getInfo();
-    },
-  },
-  mounted() {
-    this.$nextTick(() => {
-      this.getInfo();
-    });
-  },
-};
-</script>
-
-<style scoped>
-.el-table>>>.even_row {
-  background-color: rgb(238, 243, 250) !important;
-}
-
-.el-table>>>.row_class td {
-  padding: 8px 0;
-  border: unset;
-}
-
-.el-table>>>.row_class {
-  background: rgb(249, 249, 249);
-}
-
-.el-table>>>.row_class .cell {
-  padding: 0;
-  white-space: nowrap;
-  font-size: 12px;
-}
-
-.el-table>>>.header_row_class .cell {
-  padding: 0;
-  white-space: nowrap;
-}
-
-.el-table::before {
-  height: 0;
-}
-</style>

+ 0 - 317
src/components/pages/components/report/coursePieGM.vue

@@ -1,317 +0,0 @@
-<template>
-  <div v-loading="isloading">
-    <div style="width: 95%; height: calc(100% - 40px); margin: 20px auto;"  ref="innder">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <!-- <div
-        id="charts_canvas"
-        class="echart"
-        style="width: 100%; height: 100%"
-      ></div> -->
-      <div id="charts_canvas3" class="echart" ref="table">
-        <!-- <div style="font-size: 13px; font-weight: 600">
-          项目综合评估:各个阶段评价平均分
-        </div> -->
-        <el-table class="table" :data="tdata" :height="tableHeight" :fit="true" style="width: 100%" :header-cell-style="{
-          background: '#fff',
-          fontSize: '12px',
-          fontWeight: 'unset',
-          padding: '0',
-          border: 'unset',
-        }" :row-class-name="tableRowClassName" header-row-class-name="header_row_class">
-          <el-table-column label="排名" min-width="29px" align="center">
-            <template slot-scope="scope">
-              <div style="font-weight: 600">{{ scope.$index + 1 }}</div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="name" label="名称" min-width="39px" align="center">
-            <template slot-scope="scope">
-              <div style="color: rgb(96, 96, 96); font-weight: 600">
-                {{ scope.row.name }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="rate" label="完成度" min-width="39px" align="center"><template slot-scope="scope">
-              <div style="color: #5c549f; font-weight: 600">
-                {{ scope.row.rate }}
-              </div>
-            </template></el-table-column>
-          <el-table-column prop="rate1" label="活跃度" min-width="39px" align="center"><template slot-scope="scope">
-              <div style="color: #5c549f; font-weight: 600">
-                {{ scope.row.rate1 }}
-              </div>
-            </template></el-table-column>
-          <el-table-column prop="rate2" label="参与度" min-width="39px" align="center"><template slot-scope="scope">
-              <div style="color: #5c549f; font-weight: 600">
-                {{ scope.row.rate2 }}
-              </div>
-            </template></el-table-column>
-          <el-table-column prop="rate3" label="综合表现" min-width="49px" align="center"><template slot-scope="scope">
-              <div style="color: rgb(233, 140, 148);font-weight: 600">{{ scope.row.rate3 }}</div>
-            </template></el-table-column>
-          <!-- <el-table-column prop="ratez" label="综合" min-width="29px" align="center"><template slot-scope="scope">
-              <div style="color: rgb(233, 140, 148);font-weight: 600">{{ scope.row.ratez }}</div>
-            </template></el-table-column> -->
-        </el-table>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["userid", "courseid"],
-  data() {
-    return {
-      isloading:false,
-      workJson: [],
-      chartObj: null,
-      tdata: [],
-      tableHeight: 0,
-      option: {
-        legend: {
-          top: "bottom",
-        },
-        toolbox: {
-          show: true,
-        },
-        grid: {},
-        series: [
-          {
-            bottom: "10%",
-            name: "学习活动时间分配图",
-            type: "pie",
-            radius: [10, "80%"],
-            center: ["50%", "50%"],
-            roseType: "area",
-            itemStyle: {
-              borderRadius: 8,
-            },
-            label: {
-              show: true,
-              position: "inside",
-              formatter: "{b}\n{d}%",
-            },
-            data: [
-              { value: 0, name: "思维网格" },
-              { value: 0, name: "思维导图" },
-              { value: 0, name: "电子白板" },
-              { value: 0, name: "问卷调查" },
-              { value: 0, name: "自主学习" },
-              { value: 0, name: "其他" },
-            ],
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row row_class";
-      } else {
-        return "row_class";
-      }
-    },
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    getInfo() {
-      this.isloading = true
-      let params = {
-        uid: this.userid,
-        cid: this.courseid,
-      };
-      console.log(this.userid);
-      if (!this.userid) {
-        return;
-      }
-      this.ajax
-        .get(this.$store.state.api + "getUserInfo", params)
-        .then((res) => {
-          this.isloading = false
-          let chapters = JSON.parse(res.data[2][0].chapters);
-          var tool = 0;
-          let workJson = []
-          let _pWork = res.data[3];
-          let _allWork = res.data[4];
-          let _allComment = res.data[5];
-
-          for (var i = 0; i < chapters.length; i++) {
-            workJson[i] = { tool: 0, ptool: 0, work: 0, ishuo: 0, isCan: 0 }
-            for (
-              var j = 0;
-              j < chapters[i].chapterInfo[0].taskJson.length;
-              j++
-            ) {
-              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交,40.项目-学生互评 41.项目-下拉选择题 42.项目-录音功能
-              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
-              for (
-                var k = 0;
-                k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
-                k++
-              ) {
-                if (
-                  _toolsAarry.indexOf(
-                    chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool[0]
-                  ) != -1
-                ) {
-                  tool++;
-                  workJson[i].tool++
-                }
-              }
-            }
-
-            for (var k = 0; k < _pWork.length; k++) {
-              if (_pWork[k].stage == i) {
-                workJson[i].ptool++
-              }
-            }
-            for (var k = 0; k < _allComment.length; k++) {
-              if (_allComment[k].stage == i) {
-                workJson[i].ishuo++
-              }
-            }
-
-
-          }
-          this.userinfo = res.data[0][0];
-          this.ccount = tool;
-          this.islearn = tool - parseInt(res.data[1][0].vcount);
-
-          this.iscount = res.data[1][0].vcount;
-          this.vcount = 0;
-
-          for (var i = 0; i < workJson.length; i++) {
-            if (workJson[i].ptool > workJson[i].tool) {
-              workJson[i].work = 5
-            } else if( workJson[i].tool === 0){
-              workJson[i].work = 5
-            }else{
-              workJson[i].work = Math.round(workJson[i].ptool / workJson[i].tool * 100 / 20)
-            }
-            if (workJson[i].ptool) {
-              workJson[i].isCan = 1
-            }
-          }
-          this.workJson = workJson
-
-          console.log(workJson);
-          this.setChart();
-        })
-        .catch((err) => {
-          this.isloading = false
-          console.error(err);
-        });
-    },
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        // const chartObj = this.$echarts.init(
-        //   //劳动课程
-        //   this.$el.querySelector("#charts_canvas")
-        //   //   document.getElementById("#charts_canvas")
-        // );
-        // let _array = [];
-        // for (var i = 0; i < 6; i++) {
-        //   this.option.series[0].data[i].value = this.randomNum(30, 80);
-        //   // _array.push(this.randomNum(0, 80));
-        // }
-        // // this.option.series[0].data[0].value = _array;
-        // // 初始化雷达图
-        // this.chartObj = chartObj;
-        // this.chartObj.setOption(this.option);
-
-        this.tdata = [];
-        for (var i = 0; i < this.workJson.length; i++) {
-          var _rate = this.workJson[i].work < 3 ? 3 : this.workJson[i].work;
-          var _rate1 = this.workJson[i].ishuo ? 5 : 3;
-          var _rate2 = this.workJson[i].isCan ? 5 : 3;
-          var _rate3 = (_rate + _rate1 + _rate2) / 3;
-          var _ratez = (_rate + _rate1 + _rate2 + _rate3) / 4;
-          this.tdata.push({
-            name: "阶段" + (i + 1),
-            rate: _rate.toFixed(1),
-            rate1: _rate1.toFixed(1),
-            rate2: _rate2.toFixed(1),
-            rate3: _rate3.toFixed(1),
-            ratez: _ratez.toFixed(1),
-          });
-        }
-        this.tdata.sort(this.sortId);
-        this.$nextTick(() => {
-          this.setTableHeight();
-        });
-      });
-      // let _this = this;
-      // window.addEventListener("resize", () => {
-      //   if (_this.chartObj) {
-      //     _this.chartObj.resize();
-      //   }
-      // });
-    },
-    sortId(a, b) {
-      return b.ratez - a.ratez;
-    },
-    setTableHeight() {
-      console.log(this.$refs.innder.offsetHeight);
-      this.tableHeight = this.$refs.innder.offsetHeight
-        // window.innerHeight - this.$refs.table.offsetHeight - 600;
-      // 监听窗口大小变化
-    },
-  },
-  watch: {
-    userid(newValue, oldValue) {
-      this.getInfo();
-    },
-  },
-  mounted() {
-    this.$nextTick(() => {
-      this.getInfo();
-    });
-  },
-};
-</script>
-
-<style scoped>
-.el-table>>>.even_row {
-  background-color: rgb(238, 243, 250) !important;
-}
-
-.el-table>>>.row_class td {
-  padding: 8px 0;
-  border: unset;
-}
-
-.el-table>>>.row_class {
-  background: rgb(249, 249, 249);
-}
-
-.el-table>>>.row_class .cell {
-  padding: 0;
-  white-space: nowrap;
-  font-size: 12px;
-}
-
-.el-table>>>.header_row_class .cell {
-  padding: 0;
-  white-space: nowrap;
-}
-
-.el-table::before {
-  height: 0;
-}
-</style>

+ 0 - 235
src/components/pages/components/report/courseRadar.vue

@@ -1,235 +0,0 @@
-<template>
-  <div v-loading="isloading">
-    <div style="width: 95%; height: calc(100%);margin: 0 auto;">
-      <!-- <img src="../../assets/dataimage/1.png" style="width:90%" /> -->
-      <div id="charts_canvas" class="echart" style="width: 100%; height: 100%"></div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["userid", "courseid"],
-  data() {
-    return {
-      isloading:false,
-      workJson: [],
-      chartObj: null,
-      option: {
-        // title: {
-        //   text: "项目完成度:各个阶段完成情况",
-        //   textStyle: {
-        //     fontSize: 13,
-        //   },
-        // },
-        tooltip: {
-          trigger: "axis",
-          axisPointer: {
-            type: "cross",
-            label: {
-              backgroundColor: "#6a7985",
-            },
-          },
-        },
-        legend: {
-          data: ["个人完成度", "班级平均完成度"],
-          top: "bottom",
-          icon: "circle",
-        },
-        grid: {
-          left: "15%",
-          right: "5%",
-          bottom: "20%",
-          top: "15%",
-        },
-        xAxis: [
-          {
-            type: "category",
-            data: [],
-          },
-        ],
-        yAxis: [
-          {
-            type: "value",
-          },
-        ],
-        series: [
-          {
-            name: "个人完成度",
-            type: "line",
-            areaStyle: {},
-            data: [],
-            label: {
-              show: true,
-            },
-          },
-          {
-            name: "班级平均完成度",
-            type: "line",
-            areaStyle: {},
-            data: [],
-            label: {
-              show: true,
-            },
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    getInfo() {
-      this.isloading = true
-      let params = {
-        uid: this.userid,
-        cid: this.courseid,
-      };
-      console.log(this.userid);
-      if (!this.userid) {
-        return;
-      }
-      this.ajax
-        .get(this.$store.state.api + "getUserInfo", params)
-        .then((res) => {
-          this.isloading = false
-          let chapters = JSON.parse(res.data[2][0].chapters);
-          var tool = 0;
-          let workJson = []
-          let _pWork = res.data[3];
-          let _allWork = res.data[4];
-
-          for (var i = 0; i < chapters.length; i++) {
-            workJson[i] = { tool: 0, ptool: 0, work: 0, allTool: 0, allWork: 0 }
-            for (
-              var j = 0;
-              j < chapters[i].chapterInfo[0].taskJson.length;
-              j++
-            ) {
-              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交,40.项目-学生互评 41.项目-下拉选择题 42.项目-录音功能
-              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
-              for (
-                var k = 0;
-                k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
-                k++
-              ) {
-                if (
-                  _toolsAarry.indexOf(
-                    chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool[0]
-                  ) != -1
-                ) {
-                  tool++;
-                  workJson[i].tool++
-                }
-              }
-            }
-
-            for (var k = 0; k < _pWork.length; k++) {
-              if (_pWork[k].stage == i) {
-                workJson[i].ptool++
-              }
-            }
-            for (var k = 0; k < _allWork.length; k++) {
-              if (_allWork[k].stage == i) {
-                workJson[i].allTool++
-              }
-            }
-
-          }
-          this.userinfo = res.data[0][0];
-          this.ccount = tool;
-          this.islearn = tool - parseInt(res.data[1][0].vcount);
-
-          this.iscount = res.data[1][0].vcount;
-          this.vcount = 0;
-
-          for (var i = 0; i < workJson.length; i++) {
-            if (workJson[i].ptool > workJson[i].tool) {
-              workJson[i].work = 100
-            } else if( workJson[i].tool === 0){
-              workJson[i].work = 100
-            } else {
-              workJson[i].work = Math.round(workJson[i].ptool / workJson[i].tool * 100)
-            }
-
-            if ((workJson[i].allTool / res.data[1][0].workCount) > workJson[i].tool) {
-              workJson[i].allWork = 100
-            } else {
-              workJson[i].allWork = Math.round((workJson[i].allTool / res.data[1][0].workCount) / workJson[i].tool * 100)
-            }
-          }
-          this.workJson = workJson
-
-
-
-          console.log(workJson);
-          this.setChart();
-        })
-        .catch((err) => {
-          this.isloading = false
-          console.error(err);
-        });
-    },
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-          //   document.getElementById("#charts_canvas")
-        );
-        let _array1 = [];
-        let _array2 = [];
-        let _xarray = [];
-        for (var i = 0; i < this.workJson.length; i++) {
-          //   this.option.series[0].data[i].value = this.randomNum(30, 80);
-          _array1.push(this.workJson[i].work);
-          _array2.push(this.workJson[i].allWork);
-          _xarray.push("阶段" + (i + 1))
-        }
-        this.option.series[0].data = _array1;
-        this.option.xAxis[0].data = _xarray;
-        this.option.series[1].data = _array2;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(this.option);
-      });
-      let _this = this;
-      window.addEventListener("resize", () => {
-        if (_this.chartObj) {
-          _this.chartObj.resize();
-        }
-      });
-    },
-  },
-  watch: {
-    userid(newValue, oldValue) {
-      this.getInfo();
-    },
-  },
-  mounted() {
-    this.$nextTick(() => {
-      this.getInfo();
-    });
-  },
-};
-</script>
-
-<style>
-
-</style>

+ 0 - 769
src/components/pages/components/report/studentAbility.vue

@@ -1,769 +0,0 @@
-<template>
-  <div v-loading="isloading">
-    <div style="background: #fff; padding: 10px 0; height: 100%">
-      <div class="sd_person_button">
-        <span @click="setType(1)" :class="{ active: type == 1 }">项目目标设置</span>
-        <span @click="setType(2)" :class="{ active: type == 2 }">班级项目评价得分占比</span>
-        <!-- <span @click="setType(3)" :class="{ active: type == 3 }">其他项目</span> -->
-      </div>
-      <div style="display: flex; width: 100%; height: calc(100% - 50px)">
-        <div id="person_canvas1" class="echart" v-show="type == 1"
-          style="width: 100%; height: 100%;display: flex;align-items: center;justify-content: center;">
-          <span v-if="!eJson">暂无数据</span>
-        </div>
-        <div id="person_canvas2" class="echart" v-show="type == 2"
-          style="width: 100%; height: 100%;display: flex;align-items: center;justify-content: center;">
-          <!-- <div class="box2" v-show="work.length ? true : false">
-            <div v-for="(item,index) in work" :key="index" class="target_box">
-              <div class="target_task">
-                <span>第{{item.stage+1}}阶段</span>
-                <span>任务{{item.task+1}}</span>
-              </div>
-              <div class="target_content_box">
-                <div v-for="(target,k) in item.work" :key="index+'-'+k"
-                  :style="{width:(target.count / item.count * 100)+'%',backgroundColor:color[k]}">
-
-                  <el-tooltip :content="target.name+' '+target.count">
-                    <span class="targetA">{{target.count}}</span>
-                  </el-tooltip>
-                </div>
-
-              </div>
-
-            </div>
-          </div>
-          <span v-show="!work.length ? true : false">暂无数据</span> -->
-          <span v-show="!randarJson.length ? true : false">暂无数据</span>
-
-
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-
-
-export default {
-  props: ["userid", "courseid"],
-  data() {
-    return {
-      randarJson: [],
-      isloading: false,
-      chartObj2: null,
-      chartObj3: null,
-      color: [],
-      workW: [],
-      work: [],
-      eJson: "",
-      type: 1,
-      option2: {
-        //color:colors,
-        tooltip: {
-          trigger: "item",
-        },
-        legend: {
-          left: "50",
-          top: "center",
-        },
-        series: {
-          type: "sunburst",
-          data: [],
-          radius: [20, "80%"],
-          itemStyle: {
-            borderRadius: 7,
-            borderWidth: 2,
-          },
-          label: {
-            show: true,
-            fontSize: 10
-          },
-        },
-      },
-      option3: {
-        // title: {
-        //   text: "项目活跃度:不同任务的学习时间占比",
-        //   textStyle: {
-        //     fontSize: 13,
-        //   },
-        // },
-        tooltip: {
-          trigger: "axis",
-          axisPointer: {
-            // Use axis to trigger tooltip
-            type: "shadow", // 'shadow' as default; can also be 'line' or 'shadow'
-          },
-        },
-        grid: {
-          left: "15%",
-          right: "15%",
-          bottom: "15%",
-          top: "15%",
-        },
-        xAxis: {
-          type: "value",
-        },
-        yAxis: {
-          type: "category",
-          data: ["阶段1", "阶段2", "阶段3", "阶段4", "阶段5"],
-        },
-        legend: {
-          show: false
-        },
-        series: [
-          {
-            name: "任务1",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务2",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务3",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务4",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务5",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-        ],
-      },
-      radarOption: {
-        splitNumber: 5,
-        tooltip: {
-          triggerOn: "mousemove",
-          //雷达图的tooltip不会超出div,也可以设置position属性,position定位的tooltip 不会随着鼠标移动而位置变化,不友好
-          confine: true,
-          enterable: true, //鼠标是否可以移动到tooltip区域内
-          backgroundColor: "rgba(255,255,255,0.7)",
-          textStyle: {
-            // 文字样式
-            align: "left",
-          },
-          left: "right",
-          top: "bottom",
-        },
-        radar: {
-          radius: ["0%", "70%"],
-          shape: "circle",
-          center: ["50%", "50%"],
-          axisName: {
-            textStyle: {
-              // 文字样式
-              color: "#58a5e6",
-            },
-            formatter: function (value, indicator) {
-              // value = value.replace(/\S{2}/g, function (match) {
-              //   return match + "\n";
-              // });
-              return value;
-            },
-          },
-          indicator: [
-            // 雷达图的指示器,用来指定雷达图中的多个变量(维度)
-          ],
-        },
-        // 雷达图背景的颜色,在这儿随便设置了一个颜色,完全不透明度为0,就实现了透明背景
-        splitArea: {
-          show: true,
-          areaStyle: {
-            color: "rgba(255,0,0,0)", // 图表背景的颜色
-          },
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            width: 1,
-            color: "rgba(131,141,158,.1)", // 设置网格的颜色
-          },
-        },
-        series: [
-          {
-            name: "目标得分占比", // tooltip中的标题
-            type: "radar", // 表示是雷达图
-            symbol: "circle", // 拐点的样式,还可以取值'rect','angle'等
-            symbolSize: 8, // 拐点的大小
-            areaStyle: {
-              normal: {
-                width: 1,
-                opacity: 0.2,
-              },
-            },
-            data: [
-              {
-                // 设置各个指标原始值
-                value: [],
-                // 设置区域边框和区域的颜色
-                itemStyle: {
-                  normal: {
-                    color: "#58a5e6",
-                    lineStyle: {
-                      color: "#58a5e6",
-                    },
-                  },
-                },
-              },
-            ],
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        if (this.type == 1 && this.eJson) {
-          const chartObj2 = this.$echarts.init(
-            //劳动课程
-            this.$el.querySelector("#person_canvas1")
-          );
-          // this.option2.series.data = [
-          //   {
-          //     name: "信息意识",
-          //     value: 15,
-          //     children: [
-          //       {
-          //         name: "信息应用意识",
-          //         value: this.randomNum(1, 5),
-          //       },
-          //       {
-          //         name: "信息安全意识",
-          //         value: this.randomNum(1, 5),
-          //       },
-          //       {
-          //         name: "信息感知意识",
-          //         value: this.randomNum(1, 5),
-          //       },
-          //     ],
-          //   },
-          //   {
-          //     name: "信息社会责任",
-          //     value: 15,
-          //     children: [
-          //       {
-          //         name: "信息伦理道德",
-          //         value: this.randomNum(1, 5),
-          //       },
-          //       {
-          //         name: "信息法律法规",
-          //         value: this.randomNum(1, 10),
-          //       },
-          //     ],
-          //   },
-          //   {
-          //     name: "信息知识与技能",
-          //     value: 15,
-          //     children: [
-          //       {
-          //         name: "信息应用技能",
-          //         value: 5,
-          //       },
-          //       {
-          //         name: "信息科学知识",
-          //         value: 10,
-          //       },
-          //     ],
-          //   },
-          //   {
-          //     name: "信息思维与行为",
-          //     value: 15,
-          //     children: [
-          //       {
-          //         name: "信息思维",
-          //         value: this.randomNum(1, 10),
-          //       },
-          //       {
-          //         name: "信息行为",
-          //         value: this.randomNum(1, 5),
-          //       },
-          //     ],
-          //   },
-          // ];
-          var res = this.eJson;
-          var _array = [];
-          let i = 0;
-          for (var item in res) {
-            let num = Object.keys(res);
-            let count = 10 / num.length;
-            let _item = res[item];
-            _array.push({ name: _item.name, value: count, children: [] });
-            let j = 0;
-            for (var item2 in _item.child) {
-              let num2 = Object.keys(res);
-              let count2 = count / num2.length;
-              let _item2 = _item.child[item2];
-              _array[i].children.push({
-                name: _item2.name,
-                value: count2,
-                children: [],
-              });
-              for (var item3 in _item2.child) {
-                let num3 = Object.keys(res);
-                let count3 = count2 / num3.length;
-                let _item3 = _item2.child[item3];
-                _array[i].children[j].children.push({
-                  name: _item3.name,
-                  value: count3,
-                });
-              }
-              j++;
-            }
-            i++;
-            console.log(item);
-          }
-          this.option2.series.data = _array
-          // 初始化雷达图
-          this.chartObj2 = chartObj2;
-          this.chartObj2.setOption(this.option2);
-        } else if (this.type == 2) {
-          // const chartObj3 = this.$echarts.init(
-          //   //劳动课程
-          //   this.$el.querySelector("#person_canvas2")
-          // );
-          // let _array21 = [];
-          // let _array22 = [];
-          // let _array23 = [];
-          // let _array24 = [];
-          // let _array25 = [];
-          // for (var i = 0; i < 5; i++) {
-          //   //   this.option.series[0].data[i].value = this.randomNum(30, 80);
-          //   _array21.push(this.randomNum(2, 20));
-          //   _array22.push(this.randomNum(2, 20));
-          //   _array23.push(this.randomNum(2, 20));
-          //   _array24.push(this.randomNum(2, 20));
-          //   _array25.push(this.randomNum(2, 20));
-          // }
-          // this.option3.series[0].data = _array21;
-          // this.option3.series[1].data = _array22;
-          // this.option3.series[2].data = _array23;
-          // this.option3.series[3].data = _array24;
-          // this.option3.series[4].data = _array25;
-          if (this.randarJson.length) {
-            const chartObj3 = this.$echarts.init(
-              //劳动课程
-              this.$el.querySelector("#person_canvas2")
-            );
-            let radarOption = JSON.parse(JSON.stringify(this.radarOption))
-            for (var i = 0; i < this.randarJson.length; i++) {
-              radarOption.radar.indicator.push({
-                name: this.randarJson[i].target,
-                max: 5,
-              });
-              radarOption.series[0].data[0].value.push((this.randarJson[i].value / this.randarJson[i].count).toFixed(1));
-            }
-
-
-            this.chartObj3 = chartObj3;
-            this.chartObj3.setOption(radarOption);
-
-          }
-
-          // var _work = []
-          // this.color = []
-          // for (var i = 0; i < this.workW.length; i++) {
-          //   _work[i] = { stage: this.workW[i].stage, task: this.workW[i].task, work: [], count: 0 }
-          //   for (var j = 0; j < this.workW[i].work.length; j++) {
-          //     for (var k = 0; k < this.workW[i].work[j].target.length; k++) {
-          //       this.color.push(this.color16())
-          //       _work[i].work.push(this.workW[i].work[j].target[k])
-          //       _work[i].count += this.workW[i].work[j].target[k].count
-          //     }
-          //   }
-          // }
-          // this.work = _work;
-          // console.log(_work);
-          // this.$forceUpdate();
-
-
-        }
-      });
-      let _this = this;
-      window.addEventListener("resize", () => {
-        // if (_this.chartObj2) {
-        //   _this.chartObj2.resize();
-        //   _this.chartObj3.resize();
-        // }
-
-        if (_this.chartObj2) {
-          _this.chartObj2.resize();
-
-        }
-        if (_this.chartObj3) {
-          _this.chartObj3.resize();
-        }
-      });
-    },
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    getInfo() {
-      this.isloading = true
-      let params = {
-        uid: this.userid,
-        cid: this.courseid,
-      };
-      console.log(this.userid);
-      if (!this.userid) {
-        return;
-      }
-      this.ajax
-        .get(this.$store.state.api + "getUserInfo", params)
-        .then((res) => {
-          this.isloading = false
-          let chapters = JSON.parse(res.data[2][0].chapters);
-          var tool = 0;
-          let workJson = []
-          let _pWork = res.data[3];
-          let _allWork = res.data[4];
-          let _allComment = res.data[5];
-          let _isWorks = res.data[6];
-          var randarJson = []
-          var randarAarray = []
-
-          this.eJson = res.data[2][0].content ? JSON.parse(res.data[2][0].content) : "";
-
-          for (var i = 0; i < chapters.length; i++) {
-            workJson[i] = { tool: 0, ptool: 0, work: 0, ishuo: 0, isCan: 0 }
-            for (
-              var j = 0;
-              j < chapters[i].chapterInfo[0].taskJson.length;
-              j++
-            ) {
-              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交,40.项目-学生互评 41.项目-下拉选择题 42.项目-录音功能
-              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
-              for (
-                var k = 0;
-                k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
-                k++
-              ) {
-                if (
-                  _toolsAarry.indexOf(
-                    chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool[0]
-                  ) != -1
-                ) {
-                  tool++;
-                  workJson[i].tool++
-                }
-              }
-            }
-
-            for (var k = 0; k < _pWork.length; k++) {
-              if (_pWork[k].stage == i) {
-                workJson[i].ptool++
-              }
-            }
-            for (var k = 0; k < _allComment.length; k++) {
-              if (_allComment[k].stage == i) {
-                workJson[i].ishuo++
-              }
-            }
-
-
-          }
-          this.userinfo = res.data[0][0];
-          this.ccount = tool;
-          this.islearn = tool - parseInt(res.data[1][0].vcount);
-
-          this.iscount = res.data[1][0].vcount;
-          this.vcount = 0;
-
-          for (var i = 0; i < workJson.length; i++) {
-            if (workJson[i].ptool > workJson[i].tool) {
-              workJson[i].work = 5
-            } else if (workJson[i].tool === 0) {
-              workJson[i].work = 5
-            } else {
-              workJson[i].work = Math.round(workJson[i].ptool / workJson[i].tool * 100 / 20)
-            }
-            if (workJson[i].ptool) {
-              workJson[i].isCan = 1
-            }
-          }
-          this.workJson = workJson
-
-          console.log(workJson);
-          this.setChart();
-          let _workW = []
-          for (var i = 0; i < _isWorks.length; i++) {
-            if (chapters[_isWorks[i].stage].chapterInfo[0].taskJson[_isWorks[i].task].eList && chapters[_isWorks[i].stage].chapterInfo[0].taskJson[_isWorks[i].task].eList.length) {
-              _workW.push({ stage: _isWorks[i].stage, task: _isWorks[i].task, rate: JSON.parse(_isWorks[i].rate), elist: chapters[_isWorks[i].stage].chapterInfo[0].taskJson[_isWorks[i].task].eList })
-            }
-            // else {
-            //   let elist = [
-            //     {
-            //       "value": "意识能力",
-            //       "score": 5,
-            //       "target": [
-            //         {
-            //           "name": "意识能力1",
-            //           "per": 0.5
-            //         },
-            //         {
-            //           "name": "意识能力2",
-            //           "per": 0.5
-            //         }
-            //       ]
-            //     },
-            //     {
-            //       "value": "科学探究能力",
-            //       "score": 5,
-            //       "target": [
-            //         {
-            //           "name": "科学探究能力1",
-            //           "per": 0.5
-            //         },
-            //         {
-            //           "name": "科学探究能力2",
-            //           "per": 0.5
-            //         }
-            //       ]
-            //     },
-            //     {
-            //       "value": "实践创新能力",
-            //       "score": 5,
-            //       "target": [
-            //         {
-            //           "name": "实践创新能力1",
-            //           "per": 0.5
-            //         },
-            //         {
-            //           "name": "实践创新能力2",
-            //           "per": 0.5
-            //         }
-            //       ]
-            //     },
-            //     {
-            //       "value": "学习反思能力",
-            //       "score": 5,
-            //       "target": [
-            //         {
-            //           "name": "学习反思能力1",
-            //           "per": 0.5
-            //         },
-            //         {
-            //           "name": "学习反思能力2",
-            //           "per": 0.5
-            //         }
-            //       ]
-            //     },
-            //     {
-            //       "value": "工程思维能力",
-            //       "score": 5,
-            //       "target": [
-            //         {
-            //           "name": "工程思维能力1",
-            //           "per": 0.5
-            //         },
-            //         {
-            //           "name": "工程思维能力2",
-            //           "per": 0.5
-            //         }
-            //       ]
-            //     }
-            //   ]
-            //   _workW.push({ stage: _isWorks[i].stage, task: _isWorks[i].task, rate: JSON.parse(_isWorks[i].rate), elist: elist })
-            // }
-          }
-          for (var i = 0; i < _workW.length; i++) {
-            _workW[i].work = []
-            for (var j = 0; j < _workW[i].elist.length; j++) {
-              if (_workW[i].elist[j].target) {
-                if (randarAarray.indexOf(_workW[i].elist[j].target) == -1) {
-                  randarAarray.push(_workW[i].elist[j].target)
-                }
-              }
-              // for (var k = 0; k < _workW[i].elist[j].target.length; k++) {
-              //   _workW[i].elist[j].target[k].count = _workW[i].rate[_workW[i].elist[j].value] * _workW[i].elist[j].target[k].per
-              // }
-              _workW[i].work.push({ name: _workW[i].elist[j].value, target: _workW[i].elist[j].target })
-              _workW[i].work[_workW[i].work.length - 1][_workW[i].elist[j].value] = _workW[i].rate[_workW[i].elist[j].value]
-              _workW[i].work[_workW[i].work.length - 1].value = _workW[i].rate[_workW[i].elist[j].value]
-            }
-          }
-          for (var k = 0; k < randarAarray.length; k++) {
-            randarJson.push({ target: randarAarray[k], count: 0, value: 0 })
-            for (var i = 0; i < _workW.length; i++) {
-              for (var j = 0; j < _workW[i].work.length; j++) {
-                if (_workW[i].work[j].target == randarAarray[k]) {
-                  randarJson[k].count++
-                  randarJson[k].value += _workW[i].work[j].value
-                }
-              }
-            }
-          }
-
-          console.log('chapter=-----', chapters);
-          console.log('_workW=-----', _workW);
-          console.log('randarAarray=-----', randarAarray);
-          console.log('randarJson=-----', randarJson);
-
-          this.workW = _workW
-          this.randarJson = randarJson
-
-        })
-        .catch((err) => {
-          this.isloading = false
-          console.error(err);
-        });
-    },
-    setType(type) {
-      this.type = type;
-      if (this.chartObj2) {
-        this.chartObj2.dispose();
-
-      }
-      if (this.chartObj3) {
-        this.chartObj3.dispose();
-
-      }
-      this.getInfo();
-    },
-    color16() {//十六进制颜色随机
-      var r = Math.floor(Math.random() * 256);
-      var g = Math.floor(Math.random() * 256);
-      var b = Math.floor(Math.random() * 256);
-      var color = '#' + r.toString(16) + g.toString(16) + b.toString(16);
-      return color;
-    }
-  },
-  watch: {
-    userid(newValue, oldValue) {
-      this.getInfo();
-    },
-  },
-  mounted() {
-    this.$nextTick(() => {
-      this.getInfo();
-    });
-  },
-};
-</script>
-
-<style scoped>
-.sd_person_button {
-  font-size: 16px;
-  display: flex;
-  margin-bottom: 10px;
-}
-
-.sd_person_button span {
-  margin-left: 20px;
-  padding: 0 0 6px;
-  cursor: pointer;
-}
-
-.sd_person_button .active {
-  border-bottom: 2px solid rgb(30, 146, 255);
-  color: rgb(30, 146, 255);
-}
-
-
-.target_box {
-  display: flex;
-  align-items: center;
-  width: 80%;
-  margin: 0 auto;
-}
-
-.target_box+.target_box {
-  margin-top: 10px;
-}
-
-.target_task {
-  width: 100px;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  color: rgb(91, 91, 91);
-}
-
-.target_content_box {
-  display: flex;
-  align-items: center;
-  width: calc(100% - 100px);
-}
-
-.target_content_box div {
-  height: 50px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  cursor: pointer;
-}
-
-.box2 {
-  margin-top: 40px;
-  height: 80%;
-  width: 100%;
-  overflow: auto;
-}
-
-.targetA {
-  width: 100%;
-  height: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-</style>

+ 0 - 769
src/components/pages/components/report/studentAbilityGM.vue

@@ -1,769 +0,0 @@
-<template>
-  <div v-loading="isloading">
-    <div style="background: #fff; padding: 10px 0; height: 100%">
-      <div class="sd_person_button">
-        <span @click="setType(1)" :class="{ active: type == 1 }">项目目标设置</span>
-        <span @click="setType(2)" :class="{ active: type == 2 }">班级项目评价得分占比</span>
-        <!-- <span @click="setType(3)" :class="{ active: type == 3 }">其他项目</span> -->
-      </div>
-      <div style="display: flex; width: 100%; height: calc(100% - 50px)">
-        <div id="person_canvas1" class="echart" v-show="type == 1"
-          style="width: 100%; height: 100%;display: flex;align-items: center;justify-content: center;">
-          <span v-if="!eJson">暂无数据</span>
-        </div>
-        <div id="person_canvas2" class="echart" v-show="type == 2"
-          style="width: 100%; height: 100%;display: flex;align-items: center;justify-content: center;">
-          <!-- <div class="box2" v-show="work.length ? true : false">
-            <div v-for="(item,index) in work" :key="index" class="target_box">
-              <div class="target_task">
-                <span>第{{item.stage+1}}阶段</span>
-                <span>任务{{item.task+1}}</span>
-              </div>
-              <div class="target_content_box">
-                <div v-for="(target,k) in item.work" :key="index+'-'+k"
-                  :style="{width:(target.count / item.count * 100)+'%',backgroundColor:color[k]}">
-
-                  <el-tooltip :content="target.name+' '+target.count">
-                    <span class="targetA">{{target.count}}</span>
-                  </el-tooltip>
-                </div>
-
-              </div>
-
-            </div>
-          </div>
-          <span v-show="!work.length ? true : false">暂无数据</span> -->
-          <span v-show="!randarJson.length ? true : false">暂无数据</span>
-
-
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-
-
-export default {
-  props: ["userid", "courseid"],
-  data() {
-    return {
-      randarJson: [],
-      isloading: false,
-      chartObj2: null,
-      chartObj3: null,
-      color: [],
-      workW: [],
-      work: [],
-      eJson: "",
-      type: 1,
-      option2: {
-        //color:colors,
-        tooltip: {
-          trigger: "item",
-        },
-        legend: {
-          left: "50",
-          top: "center",
-        },
-        series: {
-          type: "sunburst",
-          data: [],
-          radius: [20, "80%"],
-          itemStyle: {
-            borderRadius: 7,
-            borderWidth: 2,
-          },
-          label: {
-            show: true,
-            fontSize: 10
-          },
-        },
-      },
-      option3: {
-        // title: {
-        //   text: "项目活跃度:不同任务的学习时间占比",
-        //   textStyle: {
-        //     fontSize: 13,
-        //   },
-        // },
-        tooltip: {
-          trigger: "axis",
-          axisPointer: {
-            // Use axis to trigger tooltip
-            type: "shadow", // 'shadow' as default; can also be 'line' or 'shadow'
-          },
-        },
-        grid: {
-          left: "15%",
-          right: "15%",
-          bottom: "15%",
-          top: "15%",
-        },
-        xAxis: {
-          type: "value",
-        },
-        yAxis: {
-          type: "category",
-          data: ["阶段1", "阶段2", "阶段3", "阶段4", "阶段5"],
-        },
-        legend: {
-          show: false
-        },
-        series: [
-          {
-            name: "任务1",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务2",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务3",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务4",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-          {
-            name: "任务5",
-            type: "bar",
-            stack: "total",
-            label: {
-              show: true,
-            },
-            emphasis: {
-              focus: "series",
-            },
-            data: [0, 0, 0, 0, 0],
-          },
-        ],
-      },
-      radarOption: {
-        splitNumber: 5,
-        tooltip: {
-          triggerOn: "mousemove",
-          //雷达图的tooltip不会超出div,也可以设置position属性,position定位的tooltip 不会随着鼠标移动而位置变化,不友好
-          confine: true,
-          enterable: true, //鼠标是否可以移动到tooltip区域内
-          backgroundColor: "rgba(255,255,255,0.7)",
-          textStyle: {
-            // 文字样式
-            align: "left",
-          },
-          left: "right",
-          top: "bottom",
-        },
-        radar: {
-          radius: ["0%", "70%"],
-          shape: "circle",
-          center: ["50%", "50%"],
-          axisName: {
-            textStyle: {
-              // 文字样式
-              color: "#58a5e6",
-            },
-            formatter: function (value, indicator) {
-              // value = value.replace(/\S{2}/g, function (match) {
-              //   return match + "\n";
-              // });
-              return value;
-            },
-          },
-          indicator: [
-            // 雷达图的指示器,用来指定雷达图中的多个变量(维度)
-          ],
-        },
-        // 雷达图背景的颜色,在这儿随便设置了一个颜色,完全不透明度为0,就实现了透明背景
-        splitArea: {
-          show: true,
-          areaStyle: {
-            color: "rgba(255,0,0,0)", // 图表背景的颜色
-          },
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            width: 1,
-            color: "rgba(131,141,158,.1)", // 设置网格的颜色
-          },
-        },
-        series: [
-          {
-            name: "目标得分占比", // tooltip中的标题
-            type: "radar", // 表示是雷达图
-            symbol: "circle", // 拐点的样式,还可以取值'rect','angle'等
-            symbolSize: 8, // 拐点的大小
-            areaStyle: {
-              normal: {
-                width: 1,
-                opacity: 0.2,
-              },
-            },
-            data: [
-              {
-                // 设置各个指标原始值
-                value: [],
-                // 设置区域边框和区域的颜色
-                itemStyle: {
-                  normal: {
-                    color: "#5c549f",
-                    lineStyle: {
-                      color: "#5c549f",
-                    },
-                  },
-                },
-              },
-            ],
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        if (this.type == 1 && this.eJson) {
-          const chartObj2 = this.$echarts.init(
-            //劳动课程
-            this.$el.querySelector("#person_canvas1")
-          );
-          // this.option2.series.data = [
-          //   {
-          //     name: "信息意识",
-          //     value: 15,
-          //     children: [
-          //       {
-          //         name: "信息应用意识",
-          //         value: this.randomNum(1, 5),
-          //       },
-          //       {
-          //         name: "信息安全意识",
-          //         value: this.randomNum(1, 5),
-          //       },
-          //       {
-          //         name: "信息感知意识",
-          //         value: this.randomNum(1, 5),
-          //       },
-          //     ],
-          //   },
-          //   {
-          //     name: "信息社会责任",
-          //     value: 15,
-          //     children: [
-          //       {
-          //         name: "信息伦理道德",
-          //         value: this.randomNum(1, 5),
-          //       },
-          //       {
-          //         name: "信息法律法规",
-          //         value: this.randomNum(1, 10),
-          //       },
-          //     ],
-          //   },
-          //   {
-          //     name: "信息知识与技能",
-          //     value: 15,
-          //     children: [
-          //       {
-          //         name: "信息应用技能",
-          //         value: 5,
-          //       },
-          //       {
-          //         name: "信息科学知识",
-          //         value: 10,
-          //       },
-          //     ],
-          //   },
-          //   {
-          //     name: "信息思维与行为",
-          //     value: 15,
-          //     children: [
-          //       {
-          //         name: "信息思维",
-          //         value: this.randomNum(1, 10),
-          //       },
-          //       {
-          //         name: "信息行为",
-          //         value: this.randomNum(1, 5),
-          //       },
-          //     ],
-          //   },
-          // ];
-          var res = this.eJson;
-          var _array = [];
-          let i = 0;
-          for (var item in res) {
-            let num = Object.keys(res);
-            let count = 10 / num.length;
-            let _item = res[item];
-            _array.push({ name: _item.name, value: count, children: [] });
-            let j = 0;
-            for (var item2 in _item.child) {
-              let num2 = Object.keys(res);
-              let count2 = count / num2.length;
-              let _item2 = _item.child[item2];
-              _array[i].children.push({
-                name: _item2.name,
-                value: count2,
-                children: [],
-              });
-              for (var item3 in _item2.child) {
-                let num3 = Object.keys(res);
-                let count3 = count2 / num3.length;
-                let _item3 = _item2.child[item3];
-                _array[i].children[j].children.push({
-                  name: _item3.name,
-                  value: count3,
-                });
-              }
-              j++;
-            }
-            i++;
-            console.log(item);
-          }
-          this.option2.series.data = _array
-          // 初始化雷达图
-          this.chartObj2 = chartObj2;
-          this.chartObj2.setOption(this.option2);
-        } else if (this.type == 2) {
-          // const chartObj3 = this.$echarts.init(
-          //   //劳动课程
-          //   this.$el.querySelector("#person_canvas2")
-          // );
-          // let _array21 = [];
-          // let _array22 = [];
-          // let _array23 = [];
-          // let _array24 = [];
-          // let _array25 = [];
-          // for (var i = 0; i < 5; i++) {
-          //   //   this.option.series[0].data[i].value = this.randomNum(30, 80);
-          //   _array21.push(this.randomNum(2, 20));
-          //   _array22.push(this.randomNum(2, 20));
-          //   _array23.push(this.randomNum(2, 20));
-          //   _array24.push(this.randomNum(2, 20));
-          //   _array25.push(this.randomNum(2, 20));
-          // }
-          // this.option3.series[0].data = _array21;
-          // this.option3.series[1].data = _array22;
-          // this.option3.series[2].data = _array23;
-          // this.option3.series[3].data = _array24;
-          // this.option3.series[4].data = _array25;
-          if (this.randarJson.length) {
-            const chartObj3 = this.$echarts.init(
-              //劳动课程
-              this.$el.querySelector("#person_canvas2")
-            );
-            let radarOption = JSON.parse(JSON.stringify(this.radarOption))
-            for (var i = 0; i < this.randarJson.length; i++) {
-              radarOption.radar.indicator.push({
-                name: this.randarJson[i].target,
-                max: 5,
-              });
-              radarOption.series[0].data[0].value.push((this.randarJson[i].value / this.randarJson[i].count).toFixed(1));
-            }
-
-
-            this.chartObj3 = chartObj3;
-            this.chartObj3.setOption(radarOption);
-
-          }
-
-          // var _work = []
-          // this.color = []
-          // for (var i = 0; i < this.workW.length; i++) {
-          //   _work[i] = { stage: this.workW[i].stage, task: this.workW[i].task, work: [], count: 0 }
-          //   for (var j = 0; j < this.workW[i].work.length; j++) {
-          //     for (var k = 0; k < this.workW[i].work[j].target.length; k++) {
-          //       this.color.push(this.color16())
-          //       _work[i].work.push(this.workW[i].work[j].target[k])
-          //       _work[i].count += this.workW[i].work[j].target[k].count
-          //     }
-          //   }
-          // }
-          // this.work = _work;
-          // console.log(_work);
-          // this.$forceUpdate();
-
-
-        }
-      });
-      let _this = this;
-      window.addEventListener("resize", () => {
-        // if (_this.chartObj2) {
-        //   _this.chartObj2.resize();
-        //   _this.chartObj3.resize();
-        // }
-
-        if (_this.chartObj2) {
-          _this.chartObj2.resize();
-
-        }
-        if (_this.chartObj3) {
-          _this.chartObj3.resize();
-        }
-      });
-    },
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    getInfo() {
-      this.isloading = true
-      let params = {
-        uid: this.userid,
-        cid: this.courseid,
-      };
-      console.log(this.userid);
-      if (!this.userid) {
-        return;
-      }
-      this.ajax
-        .get(this.$store.state.api + "getUserInfo", params)
-        .then((res) => {
-          this.isloading = false
-          let chapters = JSON.parse(res.data[2][0].chapters);
-          var tool = 0;
-          let workJson = []
-          let _pWork = res.data[3];
-          let _allWork = res.data[4];
-          let _allComment = res.data[5];
-          let _isWorks = res.data[6];
-          var randarJson = []
-          var randarAarray = []
-
-          this.eJson = res.data[2][0].content ? JSON.parse(res.data[2][0].content) : "";
-
-          for (var i = 0; i < chapters.length; i++) {
-            workJson[i] = { tool: 0, ptool: 0, work: 0, ishuo: 0, isCan: 0 }
-            for (
-              var j = 0;
-              j < chapters[i].chapterInfo[0].taskJson.length;
-              j++
-            ) {
-              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交,40.项目-学生互评 41.项目-下拉选择题 42.项目-录音功能
-              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
-              for (
-                var k = 0;
-                k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
-                k++
-              ) {
-                if (
-                  _toolsAarry.indexOf(
-                    chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool[0]
-                  ) != -1
-                ) {
-                  tool++;
-                  workJson[i].tool++
-                }
-              }
-            }
-
-            for (var k = 0; k < _pWork.length; k++) {
-              if (_pWork[k].stage == i) {
-                workJson[i].ptool++
-              }
-            }
-            for (var k = 0; k < _allComment.length; k++) {
-              if (_allComment[k].stage == i) {
-                workJson[i].ishuo++
-              }
-            }
-
-
-          }
-          this.userinfo = res.data[0][0];
-          this.ccount = tool;
-          this.islearn = tool - parseInt(res.data[1][0].vcount);
-
-          this.iscount = res.data[1][0].vcount;
-          this.vcount = 0;
-
-          for (var i = 0; i < workJson.length; i++) {
-            if (workJson[i].ptool > workJson[i].tool) {
-              workJson[i].work = 5
-            } else if (workJson[i].tool === 0) {
-              workJson[i].work = 5
-            } else {
-              workJson[i].work = Math.round(workJson[i].ptool / workJson[i].tool * 100 / 20)
-            }
-            if (workJson[i].ptool) {
-              workJson[i].isCan = 1
-            }
-          }
-          this.workJson = workJson
-
-          console.log(workJson);
-          this.setChart();
-          let _workW = []
-          for (var i = 0; i < _isWorks.length; i++) {
-            if (chapters[_isWorks[i].stage].chapterInfo[0].taskJson[_isWorks[i].task].eList && chapters[_isWorks[i].stage].chapterInfo[0].taskJson[_isWorks[i].task].eList.length) {
-              _workW.push({ stage: _isWorks[i].stage, task: _isWorks[i].task, rate: JSON.parse(_isWorks[i].rate), elist: chapters[_isWorks[i].stage].chapterInfo[0].taskJson[_isWorks[i].task].eList })
-            }
-            // else {
-            //   let elist = [
-            //     {
-            //       "value": "意识能力",
-            //       "score": 5,
-            //       "target": [
-            //         {
-            //           "name": "意识能力1",
-            //           "per": 0.5
-            //         },
-            //         {
-            //           "name": "意识能力2",
-            //           "per": 0.5
-            //         }
-            //       ]
-            //     },
-            //     {
-            //       "value": "科学探究能力",
-            //       "score": 5,
-            //       "target": [
-            //         {
-            //           "name": "科学探究能力1",
-            //           "per": 0.5
-            //         },
-            //         {
-            //           "name": "科学探究能力2",
-            //           "per": 0.5
-            //         }
-            //       ]
-            //     },
-            //     {
-            //       "value": "实践创新能力",
-            //       "score": 5,
-            //       "target": [
-            //         {
-            //           "name": "实践创新能力1",
-            //           "per": 0.5
-            //         },
-            //         {
-            //           "name": "实践创新能力2",
-            //           "per": 0.5
-            //         }
-            //       ]
-            //     },
-            //     {
-            //       "value": "学习反思能力",
-            //       "score": 5,
-            //       "target": [
-            //         {
-            //           "name": "学习反思能力1",
-            //           "per": 0.5
-            //         },
-            //         {
-            //           "name": "学习反思能力2",
-            //           "per": 0.5
-            //         }
-            //       ]
-            //     },
-            //     {
-            //       "value": "工程思维能力",
-            //       "score": 5,
-            //       "target": [
-            //         {
-            //           "name": "工程思维能力1",
-            //           "per": 0.5
-            //         },
-            //         {
-            //           "name": "工程思维能力2",
-            //           "per": 0.5
-            //         }
-            //       ]
-            //     }
-            //   ]
-            //   _workW.push({ stage: _isWorks[i].stage, task: _isWorks[i].task, rate: JSON.parse(_isWorks[i].rate), elist: elist })
-            // }
-          }
-          for (var i = 0; i < _workW.length; i++) {
-            _workW[i].work = []
-            for (var j = 0; j < _workW[i].elist.length; j++) {
-              if (_workW[i].elist[j].target) {
-                if (randarAarray.indexOf(_workW[i].elist[j].target) == -1) {
-                  randarAarray.push(_workW[i].elist[j].target)
-                }
-              }
-              // for (var k = 0; k < _workW[i].elist[j].target.length; k++) {
-              //   _workW[i].elist[j].target[k].count = _workW[i].rate[_workW[i].elist[j].value] * _workW[i].elist[j].target[k].per
-              // }
-              _workW[i].work.push({ name: _workW[i].elist[j].value, target: _workW[i].elist[j].target })
-              _workW[i].work[_workW[i].work.length - 1][_workW[i].elist[j].value] = _workW[i].rate[_workW[i].elist[j].value]
-              _workW[i].work[_workW[i].work.length - 1].value = _workW[i].rate[_workW[i].elist[j].value]
-            }
-          }
-          for (var k = 0; k < randarAarray.length; k++) {
-            randarJson.push({ target: randarAarray[k], count: 0, value: 0 })
-            for (var i = 0; i < _workW.length; i++) {
-              for (var j = 0; j < _workW[i].work.length; j++) {
-                if (_workW[i].work[j].target == randarAarray[k]) {
-                  randarJson[k].count++
-                  randarJson[k].value += _workW[i].work[j].value
-                }
-              }
-            }
-          }
-
-          console.log('chapter=-----', chapters);
-          console.log('_workW=-----', _workW);
-          console.log('randarAarray=-----', randarAarray);
-          console.log('randarJson=-----', randarJson);
-
-          this.workW = _workW
-          this.randarJson = randarJson
-
-        })
-        .catch((err) => {
-          this.isloading = false
-          console.error(err);
-        });
-    },
-    setType(type) {
-      this.type = type;
-      if (this.chartObj2) {
-        this.chartObj2.dispose();
-
-      }
-      if (this.chartObj3) {
-        this.chartObj3.dispose();
-
-      }
-      this.getInfo();
-    },
-    color16() {//十六进制颜色随机
-      var r = Math.floor(Math.random() * 256);
-      var g = Math.floor(Math.random() * 256);
-      var b = Math.floor(Math.random() * 256);
-      var color = '#' + r.toString(16) + g.toString(16) + b.toString(16);
-      return color;
-    }
-  },
-  watch: {
-    userid(newValue, oldValue) {
-      this.getInfo();
-    },
-  },
-  mounted() {
-    this.$nextTick(() => {
-      this.getInfo();
-    });
-  },
-};
-</script>
-
-<style scoped>
-.sd_person_button {
-  font-size: 16px;
-  display: flex;
-  margin-bottom: 10px;
-}
-
-.sd_person_button span {
-  margin-left: 20px;
-  padding: 0 0 6px;
-  cursor: pointer;
-}
-
-.sd_person_button .active {
-  border-bottom: 2px solid #5c549f;
-  color: #5c549f;
-}
-
-
-.target_box {
-  display: flex;
-  align-items: center;
-  width: 80%;
-  margin: 0 auto;
-}
-
-.target_box+.target_box {
-  margin-top: 10px;
-}
-
-.target_task {
-  width: 100px;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  color: rgb(91, 91, 91);
-}
-
-.target_content_box {
-  display: flex;
-  align-items: center;
-  width: calc(100% - 100px);
-}
-
-.target_content_box div {
-  height: 50px;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  cursor: pointer;
-}
-
-.box2 {
-  margin-top: 40px;
-  height: 80%;
-  width: 100%;
-  overflow: auto;
-}
-
-.targetA {
-  width: 100%;
-  height: 100%;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-}
-</style>

+ 0 - 203
src/components/pages/components/report/studentInfo.vue

@@ -1,203 +0,0 @@
-<template>
-  <div v-loading="isloading">
-    <div class="si_head"  v-if="Object.keys(userinfo).length">
-      <img class="si_img" src="@/assets/portal.png" alt="" />
-      <div class="si_content">
-        <div>
-          <span>姓名:</span><span>{{ userinfo.name }}</span>
-        </div>
-        <div>
-          <span>班级:</span><span>{{
-          userinfo.classname ? userinfo.classname : "暂无班级"
-          }}</span>
-        </div>
-        <div>
-          <span>账号:</span><span>{{ userinfo.username }}</span>
-        </div>
-      </div>
-    </div>
-    <div class="si_course"  v-if="Object.keys(userinfo).length">
-      <div class="si_course_head">项目概况</div>
-      <div class="si_course_content">
-        <div class="si_course_box">
-          <div>{{ ccount }}</div>
-          <div>全部任务</div>
-        </div>
-        <div class="si_course_box">
-          <div>{{ iscount }}</div>
-          <div>已完成</div>
-        </div>
-        <!-- <div class="si_course_box">
-          <div>{{ vcount }}</div>
-          <div>进行中</div>
-        </div> -->
-        <div class="si_course_box">
-          <div>{{ islearn }}</div>
-          <div>待学习</div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-
-export default {
-  props: ["userid", "courseid"],
-  data() {
-    return {
-      userinfo: {},
-      vcount: 0,
-      iscount: 0,
-      islearn: 0,
-      ccount: 0,
-      isloading:false,
-    };
-  },
-  methods: {
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    getInfo() {
-      this.isloading = true
-      let params = {
-        uid: this.userid,
-        cid: this.courseid,
-      };
-      console.log(this.userid);
-      if (!this.userid) {
-        return;
-      }
-      this.ajax
-        .get(this.$store.state.api + "getUserInfo", params)
-        .then((res) => {
-          this.isloading = false
-          let chapters = JSON.parse(res.data[2][0].chapters);
-          var tool = 0;
-          for (var i = 0; i < chapters.length; i++) {
-            for (
-              var j = 0;
-              j < chapters[i].chapterInfo[0].taskJson.length;
-              j++
-            ) {
-              // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交,40.项目-学生互评 41.项目-下拉选择题 42.项目-录音功能
-              let _toolsAarry = [1, 3, 6, 7, 16, 15, 4, 40, 41, 42];
-              for (
-                var k = 0;
-                k < chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
-                k++
-              ) {
-                if (
-                  _toolsAarry.indexOf(
-                    chapters[i].chapterInfo[0].taskJson[j].toolChoose[k].tool[0]
-                  ) != -1
-                ) {
-                  tool++;
-                }
-              }
-              // tool += chapters[i].chapterInfo[0].taskJson[j].toolChoose.length;
-            }
-          }
-          this.userinfo = res.data[0][0];
-          // this.ccount = res.data[1][0].ccount;
-          this.ccount = tool;
-          this.islearn = tool - parseInt(res.data[1][0].vcount);
-
-          // let count = this.randomNum(0, parseInt(res.data[1][0].vcount));
-          this.iscount = res.data[1][0].vcount;
-          this.vcount = 0;
-        })
-        .catch((err) => {
-          this.isloading = false
-          console.error(err);
-        });
-    },
-  },
-  watch: {
-    userid(newValue, oldValue) {
-      this.getInfo();
-    },
-  },
-  created() {
-    this.getInfo();
-  },
-};
-</script>
-
-<style scoped>
-.si_head {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-}
-
-.si_img {
-  width: 90px;
-  height: 90px;
-}
-
-.si_content {
-  width: calc(100% - 150px);
-  margin-left: 15px;
-  font-size: 14px;
-}
-
-.si_content div+div {
-  margin-top: 10px;
-}
-
-.si_content div {
-  display: flex;
-}
-
-.si_content span+span {
-  margin-left: 10px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  width: calc(100% - 50px);
-}
-
-.si_course {
-  width: calc(100% - 60px);
-  margin: 0 auto;
-  margin-top: 20px;
-}
-
-.si_course_head {
-  margin-bottom: 10px;
-}
-
-.si_course_content {
-  display: flex;
-  width: 100%;
-  justify-content: space-between;
-}
-
-.si_course_box div:nth-child(1) {
-  font-size: 22px;
-  text-align: center;
-  font-weight: 700;
-  color: rgb(47 70 136);
-}
-
-.si_course_box div:nth-child(2) {
-  font-size: 14px;
-  width: 60px;
-  border: 1px solid rgb(140, 140, 140);
-  text-align: center;
-  padding: 1px 0;
-  margin-top: 5px;
-  color: rgb(67, 67, 67);
-}
-</style>

+ 0 - 518
src/components/pages/components/reportGM.vue

@@ -1,518 +0,0 @@
-<template>
-  <div class="r_box">
-    <div class="r_cbox">
-      <span>学生姓名</span>
-      <el-select
-        multiple
-        collapse-tags
-        class="r_select"
-        v-model="uname"
-        placeholder="全部"
-        filterable
-      >
-        <el-option
-          v-for="item in userAarray"
-          :key="item.userid"
-          :label="item.username"
-          :value="item.userid"
-        >
-        </el-option>
-      </el-select>
-    </div>
-    <div class="r_cbox">
-      <span>选择阶段</span>
-      <el-select
-        class="r_select"
-        v-model="chap"
-        multiple
-        collapse-tags
-        placeholder="全部"
-        @change="changeChap"
-      >
-        <el-option
-          v-for="(item, index) in dyList"
-          :key="index"
-          :label="item.name"
-          :value="item.id"
-        ></el-option>
-      </el-select>
-    </div>
-    <div class="r_cbox">
-      <span>任务内容</span>
-      <el-select
-        class="r_select"
-        v-model="task"
-        multiple
-        collapse-tags
-        placeholder="全部"
-      >
-        <el-option-group
-          v-for="(group, index) in dyAarray"
-          :key="index"
-          :label="group.name"
-        >
-          <el-option
-            v-for="(item, index2) in group.taskList"
-            :key="index + '-' + index2"
-            :label="item.name"
-            :value="group.id + '-' + item.id"
-          >
-          </el-option>
-        </el-option-group>
-      </el-select>
-    </div>
-    <div class="btn_box">
-      <el-button class="btn btnClassGM" type="primary" @click="confirm">确定</el-button>
-    </div>
-  </div>
-</template>
-
-<script>
-import htmlDocx from "html-docx-js/dist/html-docx";
-import saveAs from "file-saver";
-export default {
-  props: ["cid"],
-  data() {
-    return {
-      uname: [],
-      chap: [],
-      task: [],
-      dyAarray: [],
-      dyList: [],
-      userAarray: [],
-      imgList: [],
-      askList: [],
-      questList: [],
-      wordList: [],
-      course: {},
-    };
-  },
-  methods: {
-    getCourseDetail() {
-      let params = {
-        cid: this.cid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseWorksReport", params)
-        .then((res) => {
-          this.course = res.data[0][0];
-          var dyJSON = JSON.parse(res.data[0][0].chapters);
-          let dyList = [];
-          for (var i = 0; i < dyJSON.length; i++) {
-            dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
-            var a = dyJSON[i].chapterInfo[0].taskJson;
-            for (var j = 0; j < a.length; j++) {
-              dyList[i].taskList.push({ name: a[j].task, id: j });
-            }
-          }
-          this.dyList = dyList;
-          this.userAarray = res.data[1];
-          console.log(res.data[0][1]);
-          this.imgList = res.data[2];
-          this.askList = res.data[3];
-          this.questList = res.data[4];
-          this.wordList = res.data[5];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    confirm() {
-      var _uname = [];
-      var _userA = this.userAarray;
-      var _chap = JSON.parse(JSON.stringify(this.chap));
-      var _task = this.task;
-      if (this.uname.length) {
-        for (var i = 0; i < _userA.length; i++) {
-          if (this.uname.join(",").indexOf(_userA[i].userid) != -1) {
-            _uname.push(_userA[i]);
-          }
-        }
-      } else {
-        for (var i = 0; i < _userA.length; i++) {
-          _uname.push(_userA[i]);
-        }
-      }
-
-      if (!_chap.length) {
-        for (var i = 0; i < this.dyList.length; i++) {
-          _chap.push(this.dyList[i].id);
-        }
-      }
-
-      let imgList = this.imgList;
-      let askList = this.askList;
-      let questList = this.questList;
-      let wordList = this.wordList;
-
-      let workArray = [];
-
-      // json{
-      //       img: [],
-      //       askList: [],
-      //       questList: {},
-      //       wordList: [],
-      //       chapName: "",
-      //       taskName: "",
-      //       username:""
-      //     }
-
-      for (let i = 0; i < _uname.length; i++) {
-        for (let chapI = 0; chapI < _chap.length; chapI++) {
-          if (_task.length) {
-            for (let taskI = 0; taskI < _task.length; taskI++) {
-              let _tI = _task[taskI].split("-");
-              if (_tI[0] == _chap[chapI]) {
-                let _workjson = {
-                  img: [],
-                  askList: [],
-                  questList: [],
-                  wordList: [],
-                  chapName:
-                    "第" +
-                    (parseInt(_chap[chapI]) + 1) +
-                    "阶段 " +
-                    this.dyList[_chap[chapI]].name,
-                  taskName:
-                    "任务" +
-                    (parseInt(_tI[1]) + 1) +
-                    this.dyList[_chap[chapI]].taskList[_tI[1]].name,
-                  username: _uname[i].username,
-                };
-                // imgList;askList;questList;wordList;
-                for (let a = 0; a < imgList.length; a++) {
-                  if (
-                    imgList[a].stage == _chap[chapI] &&
-                    imgList[a].task == _tI[1] &&
-                    imgList[a].userid == _uname[i].userid
-                  ) {
-                    _workjson.img.push({ src: imgList[a].content });
-                  }
-                }
-                for (let b = 0; b < askList.length; b++) {
-                  if (
-                    askList[b].stage == _chap[chapI] &&
-                    askList[b].task == _tI[1] &&
-                    askList[b].userid == _uname[i].userid
-                  ) {
-                    const element = askList[b];
-                    let a1 = JSON.parse(element.content)[0];
-                    let b1 = a1.anwer.split(",");
-                    let c1 = [];
-                    for (var j1 = 0; j1 < b1.length; j1++) {
-                      c1.push(parseInt(b1[j1]));
-                    }
-                    a1.askJson.radio = c1;
-                    a1.askJson.time = element.time;
-                    _workjson.askList.push(a1.askJson);
-                  }
-                }
-                for (let c = 0; c < questList.length; c++) {
-                  if (
-                    questList[c].stage == _chap[chapI] &&
-                    questList[c].task == _tI[1] &&
-                    questList[c].userid == _uname[i].userid
-                  ) {
-                    const element = questList[c];
-                    _workjson.questList.push(JSON.parse(element.content)[0]);
-                  }
-                }
-                for (let d = 0; d < wordList.length; d++) {
-                  if (
-                    wordList[d].stage == _chap[chapI] &&
-                    wordList[d].task == _tI[1] &&
-                    wordList[d].userid == _uname[i].userid
-                  ) {
-                    const element = wordList[d];
-                    _workjson.wordList.push(element.content);
-                  }
-                }
-                workArray.push(_workjson);
-              }
-            }
-          } else {
-            for (
-              let taskI = 0;
-              taskI < this.dyList[_chap[chapI]].taskList.length;
-              taskI++
-            ) {
-              let _tI = [
-                _chap[chapI],
-                this.dyList[_chap[chapI]].taskList[taskI].id,
-              ];
-              if (_tI[0] == _chap[chapI]) {
-                let _workjson = {
-                  img: [],
-                  askList: [],
-                  questList: [],
-                  wordList: [],
-                  chapName:
-                    "第" +
-                    (parseInt(_chap[chapI]) + 1) +
-                    "阶段 " +
-                    this.dyList[_chap[chapI]].name,
-                  taskName:
-                    "任务" +
-                    (parseInt(_tI[1]) + 1) +
-                    this.dyList[_chap[chapI]].taskList[_tI[1]].name,
-                  username: _uname[i].username,
-                };
-                // imgList;askList;questList;wordList;
-                for (let a = 0; a < imgList.length; a++) {
-                  if (
-                    imgList[a].stage == _chap[chapI] &&
-                    imgList[a].task == _tI[1] &&
-                    imgList[a].userid == _uname[i].userid
-                  ) {
-                    _workjson.img.push({ src: imgList[a].content });
-                  }
-                }
-                for (let b = 0; b < askList.length; b++) {
-                  if (
-                    askList[b].stage == _chap[chapI] &&
-                    askList[b].task == _tI[1] &&
-                    askList[b].userid == _uname[i].userid
-                  ) {
-                    const element = askList[b];
-                    let a1 = JSON.parse(element.content)[0];
-                    let b1 = a1.anwer.split(",");
-                    let c1 = [];
-                    for (var j1 = 0; j1 < b1.length; j1++) {
-                      c1.push(parseInt(b1[j1]));
-                    }
-                    a1.askJson.radio = c1;
-                    a1.askJson.time = element.time;
-                    _workjson.askList.push(a1.askJson);
-                  }
-                }
-                for (let c = 0; c < questList.length; c++) {
-                  if (
-                    questList[c].stage == _chap[chapI] &&
-                    questList[c].task == _tI[1] &&
-                    questList[c].userid == _uname[i].userid
-                  ) {
-                    const element = questList[c];
-                    _workjson.questList.push(JSON.parse(element.content)[0]);
-                  }
-                }
-                for (let d = 0; d < wordList.length; d++) {
-                  if (
-                    wordList[d].stage == _chap[chapI] &&
-                    wordList[d].task == _tI[1] &&
-                    wordList[d].userid == _uname[i].userid
-                  ) {
-                    const element = wordList[d];
-                    _workjson.wordList.push(element.content);
-                  }
-                }
-                workArray.push(_workjson);
-              }
-            }
-          }
-        }
-      }
-      var _course = `<h1>${this.course.title}</h1>`;
-      let html = "";
-      for (let i = 0; i < workArray.length; i++) {
-        let _html = this.setHtml(workArray[i]);
-        html += _html;
-      }
-
-      this.generate(_course + html);
-      console.log(workArray);
-    },
-    setHtml(workJson) {
-      var _title =
-      // style='display:flex;align-items:center'
-        "<div >" +
-        "<h2>" +
-        workJson.chapName +
-        "-" +
-        workJson.username;
-      ("</h2>");
-      ("</div>");
-      var _subtitle = "<h3>" + workJson.taskName + "</h3>";
-      var _img = "";
-      if (workJson.img.length > 0) {
-        for (var i = 0; i < workJson.img.length; i++) {
-          // _img+=`<div style="margin-top:10px"><div>图片${
-          //   i + 1
-          // }:<a href='${ workJson.img[i].src}'>${ workJson.img[i].src}</a></div>`
-          _img += `<div style="margin-top:10px"><div>图片${
-            i + 1
-          }</div><img style="max-width:500px" src="${
-            workJson.img[i].src
-          }"/></div>`;
-        }
-      }
-
-      var _ask = "";
-      if (workJson.askList.length > 0) {
-        var _ask = "<h3>问卷调查</h3>";
-        for (var i = 0; i < workJson.askList.length; i++) {
-          var _div = document.createElement("div");
-          _div.innerHTML = `<h4>问卷标题:${workJson.askList[i].askTitle}</h4>`;
-          for (var j = 0; j < workJson.askList[i].askJson.length; j++) {
-            var _div2 = document.createElement("div");
-            _div2.innerHTML = `<h5>第${j + 1}题:${
-              workJson.askList[i].askJson[j].askstitle
-            }  选择:${workJson.askList[i].radio[j] + 1}</h5> `;
-            var _div3 = document.createElement("div");
-            for (
-              var z = 0;
-              z < workJson.askList[i].askJson[j].checkList.length;
-              z++
-            ) {
-              _div3.innerHTML += `<span style="margin-right:5px">${z + 1}.${
-                workJson.askList[i].askJson[j].checkList[z]
-              }</span>`;
-            }
-            _div2.innerHTML += `<div>${_div3.innerHTML}</div>`;
-            _div.innerHTML += `<div>${_div2.innerHTML}</div>`;
-          }
-          _ask += `<div>${_div.innerHTML}</div>`;
-        }
-      }
-
-      var _answer = "";
-      if (workJson.questList.length > 0) {
-        var _answer = "<h3>问答</h3>";
-        for (var i = 0; i < workJson.questList.length; i++) {
-          var _div = document.createElement("div");
-          _div.innerHTML = `<h4>问答:${workJson.questList[i].answerTitle}</h4>`;
-          _div.innerHTML += `<div>${workJson.questList[i].answer}</div>`;
-          _answer += `<div>${_div.innerHTML}</div>`;
-        }
-      }
-
-      var _link = "";
-      if (workJson.wordList.length > 0) {
-        for (var i = 0; i < workJson.wordList.length; i++) {
-          _link += `<div style="margin-top:10px"><a href='${workJson.wordList[i]}'>${workJson.wordList[i]}</a></div>`;
-        }
-      }
-
-      if (
-        !workJson.img.length &&
-        !workJson.askList.length &&
-        !workJson.questList.length &&
-        !workJson.wordList.length
-      ) {
-        return "";
-      }
-      return _title + _subtitle + _img + _ask + _answer + _link;
-    },
-    async generate(a) {
-      // 将html文件中需要用到的数据挂载到store上
-      this.$store.commit("update", ["report", a]);
-      console.log(this.$store.state.report);
-      const content = `<!DOCTYPE html>
-      <html lang="en">
-      <head>
-          <meta charset="UTF-8">
-          <meta http-equiv="X-UA-Compatible" content="IE=edge">
-          <meta name="viewport" content="width=device-width, initial-scale=1.0">
-          <title>报告</title>
-      </head>
-      <body>
-      ${this.$store.state.report}
-      </body>
-      </html>`;
-      // debugger
-      //生成报告
-      const link = document.createElement("a");
-      // link.download = "报告.html"; // 文件名
-      let dname = this.course.title+'-'
-      var _uname = [];
-      var _userA = this.userAarray;
-      if (this.uname.length) {
-        for (var i = 0; i < _userA.length; i++) {
-          if (this.uname.join(",").indexOf(_userA[i].userid) != -1) {
-            _uname.push(_userA[i].username);
-          }
-        }
-        dname+=_uname.join('、')+'.html'
-      } else {
-        dname+='全部学生.html'
-      }
-      link.download = dname; // 文件名
-      link.style.display = "none";
-      // 创建文件流
-      // 创建bolb实例时,内容一定要放在[]中
-      const blob = new Blob([content], {
-        type: "text/plain;charset='utf-8'",
-      });
-      link.href = window.URL.createObjectURL(blob);
-      document.body.appendChild(link);
-      link.click();
-      document.body.removeChild(link);
-      // saveAs(
-      //   htmlDocx.asBlob(content, {
-      //     orientation: "landscape", //跨域设置
-      //   }),
-      //   //文件名
-      //   "报告.doc"
-      // );
-    },
-    changeChap() {
-      let _dyList = this.dyList;
-      this.dyAarray = [];
-      this.task = [];
-      for (var i = 0; i < _dyList.length; i++) {
-        if (this.chap.indexOf(_dyList[i].id) != -1) {
-          this.dyAarray.push(_dyList[i]);
-        }
-      }
-    },
-  },
-  watch: {
-    cid(newValue, oldValue) {
-      this.getCourseDetail();
-    },
-  },
-  mounted() {
-    this.getCourseDetail();
-  },
-};
-</script>
-
-<style scoped>
-.r_box {
-}
-.r_cbox {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  margin-bottom: 20px;
-}
-.r_cbox span {
-  margin-right: 20px;
-}
-
-.r_box .r_select {
-  width: 400px;
-}
-
-.btn_box {
-  margin: 40px 0 0 0;
-  width: 100%;
-  display: flex;
-  justify-content: center;
-}
-.btn_box .btn {
-  width: 60%;
-  /* background: rgb(14, 114, 230); */
-}
-
-.r_cbox >>> .el-select .el-input.is-focus .el-input__inner {
-  border-color: #5c549f;
-}
-.r_cbox.student_search >>> .el-select .el-input__inner:focus {
-  border-color: #5c549f;
-}
-
-.el-select-dropdown__item.selected {
-  color: #5c549f !important;
-}
-
-</style>

+ 0 - 567
src/components/pages/components/studentData.vue

@@ -1,567 +0,0 @@
-<template>
-  <div>
-    <div class="sd_name">
-      <span>学生姓名:</span>
-      <span>{{studentInfo.sName}}</span>
-    </div>
-
-    <div class="sd_class">
-      <div class="sd_tTitle">課堂表現</div>
-      <div class="sd_module">
-        <div class="sd_module_content">
-          <div class="sd_module_children">
-            <span class="s">課堂活動</span>
-            <span class="s2">
-              <span>{{randomNum(1,20)}}</span>次
-            </span>
-            <span>已經擊敗99%學生</span>
-          </div>
-          <div class="sd_module_count">
-            <span>挑戰:</span>
-            <span>{{randomNum(1,5)}}</span>次
-          </div>
-          <div class="sd_module_count">
-            <span>選項挑戰:</span>
-            <span>{{randomNum(1,5)}}</span>次
-          </div>
-          <div class="sd_module_count">
-            <span>分數挑戰:</span>
-            <span>{{randomNum(1,5)}}</span>次
-          </div>
-        </div>
-        <div class="sd_module_content">
-          <div class="sd_module_children">
-            <span class="s">課堂生成</span>
-            <span class="s2">
-              <span>{{randomNum(1,10)}}</span>次
-            </span>
-            <span>已經擊敗99%學生</span>
-          </div>
-          <div class="sd_module_count">
-            <span>作品上傳:</span>
-            <span>{{randomNum(1,20)}}</span>张
-          </div>
-          <div class="sd_module_count">
-            <span>視頻上傳:</span>
-            <span>{{randomNum(1,5)}}</span>部
-          </div>
-        </div>
-
-        <div class="sd_module_content">
-          <div class="sd_module_children">
-            <span class="s">自主活動</span>
-            <span class="s2">
-              <span>{{randomNum(1,15)}}</span>分
-              <span>{{randomNum(1,60)}}</span>秒
-            </span>
-            <span>已經擊敗99%學生</span>
-          </div>
-          <div class="sd_module_count">
-            <span>計時:</span>
-            <span>{{randomNum(1,5)}}</span>分
-          </div>
-          <div class="sd_module_count">
-            <span>小組計分:</span>
-            <span>{{randomNum(1,10)}}</span>次
-          </div>
-          <div class="sd_module_count">
-            <span>個人計分:</span>
-            <span>{{randomNum(1,10)}}</span>次
-          </div>
-        </div>
-      </div>
-      <div class="sd_module_data">
-        <div
-          id="charts_canvas"
-          class="echart"
-          style="width: 100%; height: 100%; margin: 0 0 0 1rem"
-        ></div>
-      </div>
-    </div>
-    <div class="sd_class">
-      <div class="sd_tTitle">個人能力</div>
-      <div class="sd_person_button">
-        <span @click="setType(1)" :class="{'active':type == 1}">語文</span>
-        <span @click="setType(2)" :class="{'active':type == 2}">數學</span>
-        <span @click="setType(3)" :class="{'active':type == 3}">英語</span>
-        <span @click="setType(4)" :class="{'active':type == 4}">資訊科技</span>
-        <span @click="setType(5)" :class="{'active':type == 5}">藝術</span>
-        <span @click="setType(6)" :class="{'active':type == 6}">跨學科素養</span>
-      </div>
-      <div class="sd_person_data">
-        <div
-          id="person_canvas1"
-          class="echart"
-          style="width: 50%; height: 100%; margin: 0 0 0 1rem"
-        ></div>
-        <div
-          id="person_canvas2"
-          class="echart"
-          style="width: 50%; height: 100%; margin: 0 0 0 1rem"
-        ></div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-export default {
-  props: ["studentInfo"],
-  data() {
-    return {
-      type: 6,
-      chartObj: null,
-      chartObj2: null,
-      chartObj3: null,
-      ooption: [],
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        legend: {
-          orient: "vertical",
-          left: "50",
-          top: "center",
-        },
-        series: [
-          {
-            type: "pie",
-            radius: "60%",
-            center: ["65%", "50%"],
-            label: {
-              color: "inherit",
-              formatter: "{b|{b}:} {d}%  ",
-              rich: {
-                b: {
-                  fontSize: 14,
-                  fontWeight: "bold",
-                  lineHeight: 33,
-                },
-              },
-            },
-            data: [
-              { value: 0, name: "学习时间" },
-              { value: 0, name: "自我介绍" },
-              { value: 0, name: "能力闯关" },
-              { value: 0, name: "提交探究表" },
-              { value: 0, name: "提交活动表" },
-              { value: 0, name: "讨论交流" },
-              { value: 0, name: "与大家分享你的“神兽”" },
-              { value: 0, name: "总结其它动物保护自己" },
-              { value: 0, name: "作业提交" },
-              { value: 0, name: "拓展思考,讨论交流" },
-              { value: 0, name: "提交倡议书" },
-              { value: 0, name: "提交学习手册" },
-              { value: 0, name: "能力测试" },
-              { value: 0, name: "自我评价调查问卷" },
-              { value: 0, name: "课程满意度调查问卷" },
-              { value: 0, name: "家长评价问卷调查" },
-            ],
-            emphasis: {
-              itemStyle: {
-                shadowBlur: 10,
-                shadowOffsetX: 0,
-                shadowColor: "rgba(0, 0, 0, 0.5)",
-              },
-            },
-          },
-        ],
-      },
-      data: [],
-      //const colors = ['red', 'blue', 'green', 'purple'];
-      option2: {
-        //color:colors,
-        tooltip: {
-          trigger: "item",
-        },
-        legend: {
-          left: "50",
-          top: "center",
-        },
-        series: {
-          type: "sunburst",
-          data: [],
-          radius: [20, "90%"],
-          itemStyle: {
-            borderRadius: 7,
-            borderWidth: 2,
-          },
-          label: {
-            show: true,
-          },
-        },
-      },
-      option3: {
-        xAxis: {
-          type: "category",
-          data: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"],
-          boundaryGap: false,
-          splitLine: {
-            show: true,
-          },
-          axisLine: {
-            show: false,
-          },
-        },
-        yAxis: {
-          type: "category",
-          data: [
-            "資訊應用意識",
-            "資訊安全意識",
-            "資訊感知意識",
-            "資訊社會責任",
-            "資訊法律法規",
-            "資訊應用技能",
-            "資訊科學知識",
-            "資訊思維",
-            "資訊行為",
-          ],
-          axisLine: {
-            show: false,
-          },
-        },
-        grid: {
-          left: 100,
-          bottom: 50,
-          right: 30,
-          top: 50,
-        },
-        series: [
-          {
-            name: "Punch Card",
-            type: "scatter",
-            symbolSize: function (val) {
-              return val[2] * 2;
-            },
-            data: [],
-            animationDelay: function (idx) {
-              return idx * 5;
-            },
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-        );
-        var optionB = [
-          { value: this.randomNum(0, 300), name: "學習時間" },
-          { value: this.randomNum(0, 300), name: "自我介紹" },
-          { value: this.randomNum(0, 300), name: "能力闖關" },
-          { value: this.randomNum(0, 300), name: "提交探究錶" },
-          { value: this.randomNum(0, 300), name: "提交活動錶" },
-          { value: this.randomNum(0, 300), name: "討論交流" },
-          { value: this.randomNum(0, 300), name: "與大家分享你的“神獸”" },
-          { value: this.randomNum(0, 300), name: "總結其它動物保護自己" },
-          { value: this.randomNum(0, 300), name: "作业提交" },
-          { value: this.randomNum(0, 300), name: "拓展思考,討論交流" },
-          { value: this.randomNum(0, 300), name: "提交倡議書" },
-          { value: this.randomNum(0, 300), name: "提交學習手册" },
-          { value: this.randomNum(0, 300), name: "能力測試" },
-          { value: this.randomNum(0, 300), name: "自我評價調查問卷" },
-          { value: this.randomNum(0, 300), name: "課程滿意度調查問卷" },
-          { value: this.randomNum(0, 300), name: "家長評估問卷調查" },
-        ];
-        this.option.series[0].data = optionB;
-        const chartObj2 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#person_canvas1")
-        );
-        this.option2.series.data = [
-          {
-            name: "資訊意識",
-            value: 15,
-            children: [
-              {
-                name: "資訊應用意識",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "資訊安全意識",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "資訊感知意識",
-                value: this.randomNum(1, 5),
-              },
-            ],
-          },
-          {
-            name: "資訊社會責任",
-            value: 15,
-            children: [
-              {
-                name: "資訊倫理道德",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "資訊法律法規",
-                value: this.randomNum(1, 10),
-              },
-            ],
-          },
-          {
-            name: "資訊知識與技能",
-            value: 15,
-            children: [
-              {
-                name: "資訊應用技能",
-                value: 5,
-              },
-              {
-                name: "資訊科學知識",
-                value: 10,
-              },
-            ],
-          },
-          {
-            name: "資訊思維與行為",
-            value: 15,
-            children: [
-              {
-                name: "資訊思維",
-                value: this.randomNum(1, 10),
-              },
-              {
-                name: "資訊行為",
-                value: this.randomNum(1, 5),
-              },
-            ],
-          },
-        ];
-        const chartObj3 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#person_canvas2")
-        );
-        let data = [];
-        for (var i = 1; i < 10; i++) {
-          for (var j = 0; j < 9; j++) {
-            var x = i;
-            var y = j;
-            var z = this.randomNum(0, 10);
-            data.push([x, y, z]);
-          }
-        }
-        this.option3.series[0].data = data;
-        // console.log(this.option.series[0].data);
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj2 = chartObj2;
-        this.chartObj3 = chartObj3;
-        this.chartObj.setOption(this.option);
-        this.chartObj2.setOption(this.option2);
-        this.chartObj3.setOption(this.option3);
-      });
-    },
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-
-    setType(type) {
-      this.type = type;
-      this.option2.series.data = [
-        {
-          name: "資訊意識",
-          value: 15,
-          children: [
-            {
-              name: "資訊應用意識",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "資訊安全意識",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "資訊感知意識",
-              value: this.randomNum(1, 5),
-            },
-          ],
-        },
-        {
-          name: "資訊社會責任",
-          value: 15,
-          children: [
-            {
-              name: "資訊倫理道德",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "資訊法律法規",
-              value: this.randomNum(1, 10),
-            },
-          ],
-        },
-        {
-          name: "資訊知識與技能",
-          value: 15,
-          children: [
-            {
-              name: "資訊應用技能",
-              value: 5,
-            },
-            {
-              name: "資訊科學知識",
-              value: 10,
-            },
-          ],
-        },
-        {
-          name: "資訊思維與行為2",
-          value: 15,
-          children: [
-            {
-              name: "資訊思維",
-              value: this.randomNum(1, 10),
-            },
-            {
-              name: "資訊行為",
-              value: this.randomNum(1, 5),
-            },
-          ],
-        },
-      ];
-      this.chartObj2.setOption(this.option2);
-      let data = [];
-      for (var i = 1; i < 10; i++) {
-        for (var j = 0; j < 9; j++) {
-          var x = i;
-          var y = j;
-          var z = this.randomNum(0, 10);
-          data.push([x, y, z]);
-        }
-      }
-      this.option3.series[0].data = data;
-      this.chartObj3.setOption(this.option3);
-    },
-  },
-  mounted() {
-    this.setChart();
-  },
-};
-</script>
-
-<style scoped>
-.sd_name {
-  font-size: 20px;
-}
-
-.sd_class {
-  width: 100%;
-}
-.sd_tTitle {
-  width: 100%;
-  background: rgb(199, 217, 212);
-  padding: 10px 10px;
-  border-radius: 5px;
-  border: 1px solid rgb(165, 182, 177);
-  font-size: 18px;
-  font-weight: 500;
-  margin: 20px 0;
-  box-sizing: border-box;
-  font-weight: 600;
-}
-.sd_module {
-  display: flex;
-  justify-content: space-between;
-}
-.sd_module_content {
-  width: calc(100% / 3 - 10px);
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-.sd_module_content:nth-child(1) .sd_module_children {
-  background: rgb(232, 141, 105);
-}
-.sd_module_content:nth-child(2) .sd_module_children {
-  background: rgb(87, 156, 238);
-}
-.sd_module_content:nth-child(3) .sd_module_children {
-  background: rgb(112, 221, 232);
-}
-.sd_module_children {
-  width: 100%;
-  height: 130px;
-  position: relative;
-  border-radius: 5px;
-  color: #fff;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-}
-.sd_module_children .s {
-  position: absolute;
-  font-size: 16px;
-  top: 10px;
-  left: 10px;
-}
-.sd_module_children .s2 span {
-  font-size: 45px;
-  margin-right: 3px;
-}
-
-.sd_module_count {
-  font-size: 18px;
-  margin: 20px 0 0 0;
-}
-.sd_module_count {
-  display: flex;
-  align-items: center;
-}
-.sd_module_count span:nth-child(1) {
-  width: 100px;
-  text-align: right;
-}
-.sd_module_count span:nth-child(2) {
-  width: 100px;
-  text-align: center;
-  color: rgb(214, 132, 150);
-}
-.sd_module_data {
-  height: 700px;
-  width: 100%;
-}
-
-.sd_person_data {
-  height: 500px;
-  width: 100%;
-  display: flex;
-}
-.sd_person_button {
-  font-size: 16px;
-  display: flex;
-}
-
-.sd_person_button span {
-  margin-left: 20px;
-  padding: 0 0 6px;
-  cursor: pointer;
-}
-
-.sd_person_button .active {
-  border-bottom: 2px solid rgb(30, 146, 255);
-  color: rgb(30, 146, 255);
-}
-</style>

+ 0 - 191
src/components/pages/components/studentReport.vue

@@ -1,191 +0,0 @@
-<template>
-  <div style="width: 100%; height: 100%">
-    <div class="sr_head">学生成长报告</div>
-    <div class="sr_body">
-      <div class="sr_box">
-        <div class="sr_first">
-          <div class="first">
-            <div class="sub_title"><span>学生基本信息</span></div>
-            <StudentInfo class="r_box" :userid="userid" :courseid="courseid"></StudentInfo>
-          </div>
-          <div class="second">
-            <div class="sub_title"><span>项目基本信息</span></div>
-            <CourseInfo class="r_box" :courseid="courseid"></CourseInfo>
-          </div>
-        </div>
-        <div class="sr_second">
-          <div class="first">
-            <div class="sub_title"><span>学生综合能力评估</span></div>
-            <StudentAbility class="r_box"  :userid="userid" :courseid="courseid"></StudentAbility>
-          </div>
-          <!-- <div class="second">
-            <div class="sub_title"><span>项目详细报告</span></div>
-            <CourseDetailReport class="r_box"></CourseDetailReport>
-          </div> -->
-        </div>
-        <div class="sr_third">
-          <div class="first">
-            <div class="sub_title"><span>阶段完成情况</span></div>
-            <CourseRadar class="r_box" :userid="userid" :courseid="courseid"></CourseRadar>
-          </div>
-          <div class="second">
-            <div class="sub_title"><span>阶段评价平均分</span></div>
-            <CoursePie class="r_box" :userid="userid" :courseid="courseid"></CoursePie>
-          </div>
-        </div>
-      </div>
-      <div style="height:100%;min-width: 1100px;">
-        <worksDetail3 class="r_box" :cid="courseid" :uid="userid" :ooid="scoid"></worksDetail3>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import StudentInfo from "./report/studentInfo.vue";
-import CourseInfo from "./report/courseInfo.vue";
-import StudentAbility from "./report/studentAbility.vue";
-import CourseRadar from "./report/courseRadar.vue";
-import CoursePie from "./report/coursePie.vue";
-import CourseDetailReport from "./report/courseDetailReport.vue";
-import worksDetail3 from "./worksDetail3.vue";
-export default {
-  props: ["checkCourse", "checkStudent","oid"],
-  components: {
-    StudentInfo,
-    CourseInfo,
-    StudentAbility,
-    CourseRadar,
-    CoursePie,
-    CourseDetailReport,
-    worksDetail3
-  },
-  data() {
-    return {
-      userid: "",
-      courseid: "",
-      scoid:"",
-    };
-  },
-  watch: {
-    checkStudent(newValue, oldValue) {
-      this.userid = this.checkStudent;
-      this.courseid = this.checkCourse;
-      this.scoid = this.oid;
-    },
-  },
-  created() {
-    this.userid = this.checkStudent;
-    this.courseid = this.checkCourse;
-    this.scoid = this.oid;
-  },
-};
-</script>
-
-<style scoped>
-.sr_head {
-  color: rgb(21, 80, 183);
-  font-size: 30px;
-  font-weight: bolder;
-  text-align: center;
-  margin-bottom: 15px;
-}
-.sr_body {
-  width: 100%;
-  height: calc(100% - 55px);
-  overflow: auto;
-}
-
-.sr_box {
-  width: 100%;
-  height: 100%;
-  display: flex;
-  min-width: 1100px;
-  min-height: 700px;
-}
-
-.sr_first {
-  width: calc(100% / 3.75);
-  height: 100%;
-}
-
-.sr_second {
-  width: calc(100% / 3.75 * 2);
-  height: 100%;
-}
-.sr_third {
-  width: calc(100% / 3.75 * 0.75);
-  height: 100%;
-}
-.sr_first,
-.sr_second,
-.sr_third {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-.sr_first .first,
-.sr_first .second,
-.sr_second .first,
-.sr_second .second,
-.sr_third .first,
-.sr_third .second {
-  background: #fff;
-  border-radius: 10px;
-  width: 98%;
-  overflow: hidden;
-}
-.sr_first .first {
-  height: calc(100% / 3 * 1.1);
-  margin-bottom: 20px;
-}
-.sr_first .second {
-  height: calc(100% / 3 * 1.9);
-}
-
-.sr_second .first {
-  /* height: calc(100% / 3.5 * 2); */
-  height: calc(100%);
-  /* margin-bottom: 20px; */
-}
-.sr_second .second {
-  /* height: calc(100% / 3.5 * 1.5); */
-}
-.sr_third .first {
-  height: calc(100% / 2.25 * 1.25);
-  margin-bottom: 20px;
-}
-.sr_third .second {
-  height: calc(100% / 2.25);
-}
-.sub_title {
-  display: flex;
-  color: rgb(0, 107, 180);
-  align-items: center;
-  justify-content: space-between;
-  height: 40px;
-  width: 200px;
-  margin: 0 auto;
-}
-.sub_title span {
-}
-.sub_title::after {
-  content: "";
-  width: 20px;
-  height: 20px;
-  background-image: url(../../../assets/report/left_coin.png);
-  background-size: 100% 100%;
-}
-.sub_title::before {
-  content: "";
-  width: 20px;
-  height: 20px;
-  background-image: url(../../../assets/report/right_coin.png);
-  background-size: 100% 100%;
-}
-
-.r_box {
-  height: calc(100% - 40px);
-  width: 100%;
-}
-</style>

+ 0 - 191
src/components/pages/components/studentReportGM.vue

@@ -1,191 +0,0 @@
-<template>
-  <div style="width: 100%; height: 100%">
-    <div class="sr_head">学生成长报告</div>
-    <div class="sr_body">
-      <div class="sr_box">
-        <div class="sr_first">
-          <div class="first">
-            <div class="sub_title"><span>学生基本信息</span></div>
-            <StudentInfo class="r_box" :userid="userid" :courseid="courseid"></StudentInfo>
-          </div>
-          <div class="second">
-            <div class="sub_title"><span>项目基本信息</span></div>
-            <CourseInfo class="r_box" :courseid="courseid"></CourseInfo>
-          </div>
-        </div>
-        <div class="sr_second">
-          <div class="first">
-            <div class="sub_title"><span>学生综合能力评估</span></div>
-            <StudentAbility class="r_box"  :userid="userid" :courseid="courseid"></StudentAbility>
-          </div>
-          <!-- <div class="second">
-            <div class="sub_title"><span>项目详细报告</span></div>
-            <CourseDetailReport class="r_box"></CourseDetailReport>
-          </div> -->
-        </div>
-        <div class="sr_third">
-          <div class="first">
-            <div class="sub_title"><span>阶段完成情况</span></div>
-            <CourseRadar class="r_box" :userid="userid" :courseid="courseid"></CourseRadar>
-          </div>
-          <div class="second">
-            <div class="sub_title"><span>阶段评价平均分</span></div>
-            <CoursePie class="r_box" :userid="userid" :courseid="courseid"></CoursePie>
-          </div>
-        </div>
-      </div>
-      <div style="height:100%;min-width: 1100px;">
-        <worksDetail3 class="r_box" :cid="courseid" :uid="userid" :ooid="scoid"></worksDetail3>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import StudentInfo from "./report/studentInfo.vue";
-import CourseInfo from "./report/courseInfoGM.vue";
-import StudentAbility from "./report/studentAbilityGM.vue";
-import CourseRadar from "./report/courseRadar.vue";
-import CoursePie from "./report/coursePieGM.vue";
-import CourseDetailReport from "./report/courseDetailReport.vue";
-import worksDetail3 from "./worksDetail3GM.vue";
-export default {
-  props: ["checkCourse", "checkStudent","oid"],
-  components: {
-    StudentInfo,
-    CourseInfo,
-    StudentAbility,
-    CourseRadar,
-    CoursePie,
-    CourseDetailReport,
-    worksDetail3
-  },
-  data() {
-    return {
-      userid: "",
-      courseid: "",
-      scoid:"",
-    };
-  },
-  watch: {
-    checkStudent(newValue, oldValue) {
-      this.userid = this.checkStudent;
-      this.courseid = this.checkCourse;
-      this.scoid = this.oid;
-    },
-  },
-  created() {
-    this.userid = this.checkStudent;
-    this.courseid = this.checkCourse;
-    this.scoid = this.oid;
-  },
-};
-</script>
-
-<style scoped>
-.sr_head {
-  color: #5c549f;
-  font-size: 30px;
-  font-weight: bolder;
-  text-align: center;
-  margin-bottom: 15px;
-}
-.sr_body {
-  width: 100%;
-  height: calc(100% - 55px);
-  overflow: auto;
-}
-
-.sr_box {
-  width: 100%;
-  height: 100%;
-  display: flex;
-  min-width: 1100px;
-  min-height: 700px;
-}
-
-.sr_first {
-  width: calc(100% / 3.75);
-  height: 100%;
-}
-
-.sr_second {
-  width: calc(100% / 3.75 * 2);
-  height: 100%;
-}
-.sr_third {
-  width: calc(100% / 3.75 * 0.75);
-  height: 100%;
-}
-.sr_first,
-.sr_second,
-.sr_third {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-.sr_first .first,
-.sr_first .second,
-.sr_second .first,
-.sr_second .second,
-.sr_third .first,
-.sr_third .second {
-  background: #fff;
-  border-radius: 10px;
-  width: 98%;
-  overflow: hidden;
-}
-.sr_first .first {
-  height: calc(100% / 3 * 1.1);
-  margin-bottom: 20px;
-}
-.sr_first .second {
-  height: calc(100% / 3 * 1.9);
-}
-
-.sr_second .first {
-  /* height: calc(100% / 3.5 * 2); */
-  height: calc(100%);
-  /* margin-bottom: 20px; */
-}
-.sr_second .second {
-  /* height: calc(100% / 3.5 * 1.5); */
-}
-.sr_third .first {
-  height: calc(100% / 2.25 * 1.25);
-  margin-bottom: 20px;
-}
-.sr_third .second {
-  height: calc(100% / 2.25);
-}
-.sub_title {
-  display: flex;
-  color: #5c549f;
-  align-items: center;
-  justify-content: space-between;
-  height: 40px;
-  width: 200px;
-  margin: 0 auto;
-}
-.sub_title span {
-}
-.sub_title::after {
-  content: "";
-  width: 20px;
-  height: 20px;
-  background-image: url(../../../assets/report/left_coinGM.png);
-  background-size: 100% 100%;
-}
-.sub_title::before {
-  content: "";
-  width: 20px;
-  height: 20px;
-  background-image: url(../../../assets/report/right_coinGM.png);
-  background-size: 100% 100%;
-}
-
-.r_box {
-  height: calc(100% - 40px);
-  width: 100%;
-}
-</style>

+ 0 - 1014
src/components/pages/components/workData.vue

@@ -1,1014 +0,0 @@
-<template>
-  <div>
-    <div class="cp_title" v-if="false">
-      <span>{{ this.dataJson.title }}</span>
-    </div>
-    <div class="cp_title" v-if="false">
-      <span>{{ "教师姓名:" + this.dataJson.uname }}</span>
-    </div>
-    <div class="data_body" v-if="false">
-      <div class="data_c">
-        <WorkData :workJson="workJson" :chapters="chapters"></WorkData>
-      </div>
-      <div class="data_c">
-        <ProblelmData
-          :problemJson="problemJson"
-          :chapters="chapters"
-        ></ProblelmData>
-      </div>
-      <div class="data_c">
-        <ToolsData :toolsJson="toolsJson" :tools="tools"></ToolsData>
-      </div>
-      <div class="data_c">
-        <ScoreData :scoreJson="scoreJson"></ScoreData>
-      </div>
-    </div>
-    <div class="sd_class" v-if="false">
-      <div class="sd_tTitle">课堂表现</div>
-      <div class="wd_class_body">
-        <div class="wd_module">
-          <div class="sd_module_content">
-            <div
-              class="sd_module_children"
-              style="
-                font-size: 25px;
-                padding: 0 25px;
-                box-sizing: border-box;
-                text-align: center;
-              "
-            >
-              <span>课程人数:共100人,已完成人数{{ randomNum(50, 100) }}人</span>
-            </div>
-            <div class="sd_module_children">
-              <span class="s">课堂时长</span>
-              <span class="s2">
-                <span>{{ randomNum(5, 15) }}</span
-                >次 <span>{{ randomNum(1, 60) }}</span
-                >分 <span>{{ randomNum(1, 59) }}</span
-                >秒
-              </span>
-              <span>已经击败99%教师</span>
-            </div>
-            <div class="sd_module_children">
-              <span class="s">课堂节数</span>
-              <span class="s2">
-                <span>{{ randomNum(5, 20) }}</span
-                >节
-              </span>
-              <span>已经击败99%教师</span>
-            </div>
-          </div>
-          <div style="width: 45%; position: relative">
-            <div
-              id="gauge_canvas"
-              class="echart"
-              style="width: 100%; height: 100%"
-            ></div>
-            <div
-              style="
-                position: absolute;
-                bottom: 25px;
-                display: flex;
-                justify-content: space-between;
-                font-size: 20px;
-                width: 100%;
-                padding: 0 100px;
-                box-sizing: border-box;
-              "
-            >
-              <span>教师为中心</span>
-              <span>学生为中心</span>
-            </div>
-          </div>
-          <div class="sd_module_content">
-            <div class="sd_module_children">
-              <span class="s">课堂互动</span>
-              <span class="s2">
-                <span>{{ randomNum(10, 20) }}</span
-                >次
-              </span>
-              <span>已经击败99%教师</span>
-            </div>
-            <div class="sd_module_children">
-              <span class="s">课堂生成</span>
-              <span class="s2">
-                <span>{{ randomNum(7, 15) }}</span
-                >节
-              </span>
-              <span>已经击败99%教师</span>
-            </div>
-            <div class="sd_module_children">
-              <span class="s">自主活动</span>
-              <span class="s2">
-                <span>{{ randomNum(10, 20) }}</span
-                >分 <span>{{ randomNum(10, 59) }}</span
-                >秒
-              </span>
-              <span>已经击败99%教师</span>
-            </div>
-          </div>
-        </div>
-        <div class="wd_bottom">
-          <div class="bdiv">
-            <div
-              id="line_canvas"
-              class="echart"
-              style="width: 100%; height: 100%"
-            ></div>
-          </div>
-          <div class="bdiv">
-            <div
-              id="bar_canvas"
-              class="echart"
-              style="width: 100%; height: 100%"
-            ></div>
-          </div>
-        </div>
-      </div>
-      <!-- <img src="../../../assets/data/tu1.png" alt style="width:100%" /> -->
-    </div>
-    <div class="sd_class">
-      <div class="sd_tTitle" v-if="false">班级学生能力分析</div>
-      <div style="background: #fff; padding: 10px 0">
-        <div class="sd_person_button" v-if="false">
-          <span @click="setType(1)" :class="{ active: type == 1 }">语文</span>
-          <span @click="setType(2)" :class="{ active: type == 2 }">数学</span>
-          <span @click="setType(3)" :class="{ active: type == 3 }">英语</span>
-          <span @click="setType(4)" :class="{ active: type == 4 }"
-            >信息科技</span
-          >
-          <span @click="setType(5)" :class="{ active: type == 5 }">艺术</span>
-          <span @click="setType(6)" :class="{ active: type == 6 }"
-            >跨学科素养</span
-          >
-        </div>
-        <div style="display: flex; flex-wrap: wrap">
-          <div style="width: 50%; height: 500px"  v-if="false">
-            <div
-              id="sunburst_canvas"
-              class="echart"
-              style="width: 100%; height: 100%"
-            ></div>
-          </div>
-          <div style="width: 50%; height: 500px" v-if="false">
-            <div
-              id="scatter_canvas"
-              class="echart"
-              style="width: 100%; height: 100%"
-            ></div>
-          </div>
-          <div style="width: 100%">
-            <WorksDetail2 :cid="cid" :uid="uid" :ooid="ooid"></WorksDetail2>
-            <!-- <el-table
-              ref="table"
-              :data="tableData"
-              border
-              :height="500"
-              :fit="true"
-              style="width: 100%; height: 60%"
-              :header-cell-style="{ background: '#f1f1f1' }"
-              :row-class-name="tableRowClassName"
-            >
-              <el-table-column prop="name" label="姓名" min-width="20%" align="center"></el-table-column>
-              <el-table-column prop="number" label="学号" min-width="20%" align="center"></el-table-column>
-              <el-table-column prop="class" label="班级" min-width="20%" align="center"></el-table-column>
-              <el-table-column prop="score" label="分数" min-width="20%" align="center"></el-table-column>
-              <el-table-column label="操作" min-width="20%">
-                <template>
-                  <el-button type="primary" size="small">查看</el-button>
-                </template>
-              </el-table-column>
-            </el-table>-->
-          </div>
-          <!-- <img src="../../../assets/data/tu3.png" alt style="width:50%" />
-          <img src="../../../assets/data/tu2.png" alt style="width:50%" />-->
-          <!-- <img src="../../../assets/data/tu4.png" alt style="width:100%" /> -->
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import WorkData from "./data/workData";
-import ProblelmData from "./data/problelmData";
-import ToolsData from "./data/toolsData";
-import ScoreData from "./data/scoreData";
-import WorksDetail2 from "./worksDetail2";
-
-export default {
-  props: ["dataJson", "cid", "uid", "ooid"],
-  components: {
-    WorkData,
-    ProblelmData,
-    ToolsData,
-    ScoreData,
-    WorksDetail2,
-  },
-  data() {
-    return {
-      tableData: [
-        {
-          name: "卓曾向",
-          number: "202205311",
-          class: "三年级七班",
-          score: "100",
-        },
-        {
-          name: "王志成",
-          number: "202205411",
-          class: "四年级一班",
-          score: "99",
-        },
-        {
-          name: "李沛郡",
-          number: "202205361",
-          class: "三年级六班",
-          score: "89",
-        },
-        {
-          name: "李世昌",
-          number: "202205321",
-          class: "三年级二班",
-          score: "88",
-        },
-        {
-          name: "李佳薇",
-          number: "202205471",
-          class: "四年级七班",
-          score: "69",
-        },
-        {
-          name: "叶玉卿",
-          number: "202205671",
-          class: "六年级七班",
-          score: "78",
-        },
-        {
-          name: "冯翊泽",
-          number: "202205571",
-          class: "五年级七班",
-          score: "68",
-        },
-        { name: "乐舞", number: "202205372", class: "三年级七班", score: "77" },
-        {
-          name: "关晓辉",
-          number: "202205475",
-          class: "四年级七班",
-          score: "68",
-        },
-        {
-          name: "谭晶陈",
-          number: "202205271",
-          class: "二年级七班",
-          score: "79",
-        },
-      ],
-      Course: this.dataJson,
-      courseId: "",
-      tools: [],
-      chapters: [],
-      workJson: [], //多少人提交作业数据
-      scoreJson: [], //量规评分数据
-      problemJson: [], //问答数据
-      toolsJson: [], //工具数据
-      type: 6,
-      chartObj: null,
-      chartObj2: null,
-      chartObj3: null,
-      chartObj4: null,
-      chartObj5: null,
-      gaugeOption: {
-        series: [
-          {
-            type: "gauge",
-            radius: "100%",
-            axisLine: {
-              lineStyle: {
-                width: 10,
-                color: [
-                  [
-                    100,
-                    {
-                      type: "linear",
-                      x: 0,
-                      y: 0,
-                      x2: 0,
-                      y2: 1,
-                      colorStops: [
-                        {
-                          offset: 1,
-                          color: "rgb(240,50,243)", // 0% 处的颜色
-                        },
-
-                        {
-                          offset: 0,
-                          color: "rgb(37,61,249)", // 100% 处的颜色
-                        },
-                      ],
-                      global: false, // 缺省为 false
-                    },
-                  ],
-                ],
-              },
-            },
-            pointer: {
-              width: 8,
-              length: "65%",
-              itemStyle: {
-                color: "auto",
-              },
-            },
-
-            axisLabel: {
-              color: "auto",
-              distance: 20,
-              fontSize: 20,
-            },
-            detail: {
-              valueAnimation: true,
-              formatter: "{value}",
-            },
-            data: [
-              {
-                value: 60,
-                name: "課堂類型",
-                title: {
-                  offsetCenter: [0, "80%"],
-                  fontSize: 30,
-                },
-              },
-            ],
-          },
-        ],
-      },
-      lineOption: {
-        title: {
-          text: "課堂時間",
-        },
-        tooltip: {
-          trigger: "axis",
-        },
-        legend: {
-          data: ["課堂時長", "麻吉星時長"],
-        },
-        grid: {
-          left: "3%",
-          right: "4%",
-          bottom: "3%",
-          containLabel: true,
-        },
-        toolbox: {
-          // feature: {
-          //   saveAsImage: {},
-          // },
-        },
-        xAxis: {
-          type: "category",
-          data: ["05-25", "05-26", "05-27", "05-28", "05-29", "05-30", "05-31"],
-        },
-        yAxis: {
-          type: "value",
-          axisLabel: {
-            formatter: "{value}M",
-          },
-        },
-        series: [
-          {
-            name: "課堂時長",
-            type: "line",
-            data: [10, 20, 30, 11, 15, 16, 18],
-          },
-          {
-            name: "麻吉星時長",
-            type: "line",
-            data: [22, 16, 18, 15, 19, 28, 17],
-          },
-        ],
-      },
-      barOption: {
-        title: {
-          text: "任教班級",
-        },
-        tooltip: {
-          trigger: "axis",
-          axisPointer: {
-            // Use axis to trigger tooltip
-            type: "shadow", // 'shadow' as default; can also be 'line' or 'shadow'
-          },
-        },
-        legend: {},
-        grid: {
-          left: "3%",
-          right: "4%",
-          bottom: "3%",
-          containLabel: true,
-        },
-        xAxis: {
-          type: "category",
-          data: ["中山五年5班", "中山五年5班"],
-        },
-        yAxis: {
-          type: "value",
-        },
-        series: [
-          {
-            name: "圖片",
-            type: "bar",
-            data: [220, 150],
-          },
-          {
-            name: "視頻",
-            type: "bar",
-            data: [120, 132],
-          },
-          {
-            name: "互動",
-            type: "bar",
-            data: [110, 132],
-          },
-          {
-            name: "投票",
-            type: "bar",
-
-            data: [120, 132],
-          },
-          {
-            name: "挑戰",
-            type: "bar",
-            data: [221, 110],
-          },
-          {
-            name: "評估",
-            type: "bar",
-            data: [120, 133],
-          },
-          {
-            name: "棄權",
-            type: "bar",
-            data: [105, 132],
-          },
-        ],
-      },
-      sunburstOption: {
-        //color:colors,
-        tooltip: {
-          trigger: "item",
-        },
-        legend: {
-          left: "50",
-          top: "center",
-        },
-        series: {
-          type: "sunburst",
-          data: [],
-          radius: [20, "90%"],
-          itemStyle: {
-            borderRadius: 7,
-            borderWidth: 2,
-          },
-          label: {
-            show: true,
-            color: "#fff",
-          },
-        },
-      },
-      scatterOption: {
-        xAxis: {
-          type: "category",
-          data: ["问题意识", "科学探究", "实践创新", "工程思维", "学习反思"],
-          splitLine: {
-            show: true,
-          },
-          axisLine: {
-            show: false,
-          },
-          name: "能力指标",
-        },
-        yAxis: {
-          type: "value",
-          name: "分值",
-          minInterval: 1,
-          max: 5,
-          axisLine: {
-            show: false,
-          },
-        },
-        grid: {
-          left: 100,
-          bottom: 50,
-          right: 100,
-          top: 70,
-        },
-        legend: {
-          color: "rgb(222,126,62)",
-          left: "right",
-          top: "0%",
-        },
-        series: [
-          {
-            name: "学生百分数(单位:%)",
-            type: "scatter",
-            symbolSize: function (val) {
-              return val[2] * 1.5;
-            },
-            color: "rgb(222,126,62,.5)",
-            data: [[1, 2, 50]],
-            label: {
-              color: "rgb(222,126,62)",
-              show: true,
-              position: "inside",
-              fontSize: 16,
-              formatter: function (a, b, c) {
-                return a.data[2];
-              },
-            },
-            animationDelay: function (idx) {
-              return idx * 5;
-            },
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    getData() {
-      let params = {
-        cid: this.courseId,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getWorkData", params)
-        .then((res) => {
-          let _data = res.data[1]; //所有作业数据
-          let _data2 = res.data[2]; //问答提交数据
-          let _data3 = res.data[3]; //工具使用数据
-          let workJson = [];
-          let scoreJson = [];
-          let problemJson = [];
-          let toolsJson = [];
-          _data.forEach((item, index) => {
-            workJson.push({ stage: item.stage, userid: item.userid });
-            scoreJson.push({ rate: JSON.parse(item.rate) });
-          });
-          _data2.forEach((item, index) => {
-            problemJson.push({ stage: item.chapterid });
-          });
-          _data3.forEach((item, index) => {
-            toolsJson.push({ tools: item.tools, count: item.count });
-          });
-          this.workJson = workJson;
-          this.scoreJson = scoreJson;
-          this.problemJson = problemJson;
-          this.toolsJson = toolsJson;
-          this.$forceUpdate();
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#gauge_canvas")
-        );
-        this.gaugeOption.series[0].data[0].value = this.randomNum(10, 100);
-        const chartObj2 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#line_canvas")
-        );
-        var _array1 = [];
-        var _array2 = [];
-        for (let index = 0; index < 7; index++) {
-          _array1.push(this.randomNum(40, 50));
-          _array2.push(this.randomNum(40, 50));
-        }
-        this.lineOption.series[0].data = _array1;
-        this.lineOption.series[1].data = _array2;
-        const chartObj3 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#bar_canvas")
-        );
-        var _arraybar1 = [];
-        var _arraybar2 = [];
-        var _arraybar3 = [];
-        var _arraybar4 = [];
-        var _arraybar5 = [];
-        var _arraybar6 = [];
-        var _arraybar7 = [];
-        for (let index = 0; index < 7; index++) {
-          _arraybar1.push(this.randomNum(20, 70));
-          _arraybar2.push(this.randomNum(20, 70));
-          _arraybar3.push(this.randomNum(20, 70));
-          _arraybar4.push(this.randomNum(20, 70));
-          _arraybar5.push(this.randomNum(20, 70));
-          _arraybar6.push(this.randomNum(20, 70));
-          _arraybar7.push(this.randomNum(20, 70));
-        }
-        this.barOption.series[0].data = _arraybar1;
-        this.barOption.series[1].data = _arraybar2;
-        this.barOption.series[2].data = _arraybar3;
-        this.barOption.series[3].data = _arraybar4;
-        this.barOption.series[4].data = _arraybar5;
-        this.barOption.series[5].data = _arraybar6;
-        this.barOption.series[6].data = _arraybar7;
-        const chartObj4 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#sunburst_canvas")
-        );
-        this.sunburstOption.series.data = [
-          {
-            name: "学习反思能力",
-            value: 15,
-            children: [
-              {
-                name: "终生学习",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "自我进步",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "自我反思",
-                value: this.randomNum(1, 5),
-              },
-            ],
-          },
-          {
-            name: "工程思维能力",
-            value: 15,
-            children: [
-              {
-                name: "工程思维能力",
-                value: this.randomNum(1, 15),
-              },
-            ],
-          },
-          {
-            name: "实践创新能力",
-            value: 15,
-            children: [
-              {
-                name: "实践创新能力",
-                value: this.randomNum(5, 15),
-              },
-            ],
-          },
-          {
-            name: "科学探究能力",
-            value: 15,
-            children: [
-              {
-                name: "科学探究能力",
-                value: this.randomNum(5, 15),
-              },
-            ],
-          },
-          {
-            name: "问题意识",
-            value: 15,
-            children: [
-              {
-                name: "问题意识",
-                value: this.randomNum(5, 15),
-              },
-            ],
-          },
-        ];
-        const chartObj5 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#scatter_canvas")
-        );
-        var scatterArray = [];
-        for (var i = 0; i < 5; i++) {
-          scatterArray[i] = [];
-          var a = 0;
-          for (var j = 0; j < 5; j++) {
-            var b = this.randomNum(0, 20);
-            a += b;
-            if (j == 4) {
-              scatterArray[i].push(100 - a);
-              scatterArray[i].sort(function () {
-                return Math.random() - 0.5;
-              });
-            } else {
-              scatterArray[i].push(b);
-            }
-          }
-        }
-
-        var _arrayScatter = [];
-        for (var i = 0; i < 5; i++) {
-          for (var j = 1; j < 6; j++) {
-            var x = i;
-            var y = j;
-            // var z = this.randomNum(0, 100);
-            var z = scatterArray[i][j - 1];
-            _arrayScatter.push([x, y, z]);
-          }
-        }
-        this.scatterOption.series[0].data = _arrayScatter;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj2 = chartObj2;
-        this.chartObj3 = chartObj3;
-        this.chartObj4 = chartObj4;
-        this.chartObj5 = chartObj5;
-        this.chartObj.setOption(this.gaugeOption);
-        this.chartObj2.setOption(this.lineOption);
-        this.chartObj3.setOption(this.barOption);
-        this.chartObj4.setOption(this.sunburstOption);
-        this.chartObj5.setOption(this.scatterOption);
-        this.tableData = this.tableData.sort(function () {
-          return Math.random() - 0.5;
-        });
-      });
-    },
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    setType(type) {
-      this.type = type;
-      this.sunburstOption.series.data = [
-        {
-          name: "学习反思能力",
-          value: 15,
-          children: [
-            {
-              name: "终生学习",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "自我进步",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "自我反思",
-              value: this.randomNum(1, 5),
-            },
-          ],
-        },
-        {
-          name: "工程思维能力",
-          value: 15,
-          children: [
-            {
-              name: "工程思维能力",
-              value: this.randomNum(5, 15),
-            },
-          ],
-        },
-        {
-          name: "实践创新能力",
-          value: 15,
-          children: [
-            {
-              name: "实践创新能力",
-              value: this.randomNum(5, 15),
-            },
-          ],
-        },
-        {
-          name: "科学探究能力",
-          value: 15,
-          children: [
-            {
-              name: "科学探究能力",
-              value: this.randomNum(5, 15),
-            },
-          ],
-        },
-        {
-          name: "问题意识",
-          value: 15,
-          children: [
-            {
-              name: "问题意识",
-              value: this.randomNum(5, 15),
-            },
-          ],
-        },
-      ];
-      var scatterArray = [];
-      for (var i = 0; i < 5; i++) {
-        scatterArray[i] = [];
-        var a = 0;
-        for (var j = 0; j < 5; j++) {
-          var b = this.randomNum(0, 20);
-          a += b;
-          if (j == 4) {
-            scatterArray[i].push(100 - a);
-            scatterArray[i].sort(function () {
-              return Math.random() - 0.5;
-            });
-          } else {
-            scatterArray[i].push(b);
-          }
-        }
-      }
-
-      var _arrayScatter = [];
-      for (var i = 0; i < 5; i++) {
-        for (var j = 1; j < 6; j++) {
-          var x = i;
-          var y = j;
-          // var z = this.randomNum(0, 100);
-          var z = scatterArray[i][j - 1];
-          _arrayScatter.push([x, y, z]);
-        }
-      }
-      this.scatterOption.series[0].data = _arrayScatter;
-      this.chartObj4.setOption(this.sunburstOption);
-      this.chartObj5.setOption(this.scatterOption);
-    },
-  },
-  watch: {
-    // 使用监听的方式,监听数据的变化
-    dataJson(val) {
-      this.Course = val;
-      this.courseId = val.courseId;
-      var _chapters = JSON.parse(val.chapters);
-      this.chapters = [];
-      this.tools = [];
-      _chapters.forEach((element) => {
-        this.chapters.push({
-          name: element.dyName,
-          id: element.chapterInfo[0].chapterid,
-        });
-        if (element.chapterInfo[0].toolChoose) {
-          this.tools.push(...element.chapterInfo[0].toolChoose);
-        }
-      });
-      this.tools.push(...[1, 1, 1, 1, 2, 2, 2, 2]);
-      this.tools = Array.from(new Set(this.tools)).sort();
-      this.getData();
-    },
-  },
-  mounted() {
-    this.courseId = this.dataJson.courseId;
-    var _chapters = JSON.parse(this.dataJson.chapters);
-    this.chapters = [];
-    this.tools = [];
-    _chapters.forEach((element) => {
-      this.chapters.push({
-        name: element.dyName,
-        id: element.chapterInfo[0].chapterid,
-      });
-      if (element.chapterInfo[0].toolChoose) {
-        this.tools.push(...element.chapterInfo[0].toolChoose);
-      }
-    });
-    this.tools = Array.from(new Set(this.tools)).sort();
-    this.getData();
-    this.setChart();
-  },
-};
-</script>
-
-<style scoped>
-.cp_title {
-  font-size: 24px;
-  margin: 0 auto;
-  width: 95%;
-}
-.data_body {
-  display: flex;
-  flex-wrap: wrap;
-}
-.data_body .data_c {
-  width: 50%;
-}
-.sd_class {
-  width: 95%;
-  margin: 0 auto;
-}
-.sd_tTitle {
-  width: 100%;
-  background: rgb(199, 217, 212);
-  padding: 10px 10px;
-  border-radius: 5px;
-  border: 1px solid rgb(165, 182, 177);
-  font-size: 18px;
-  font-weight: 500;
-  margin: 20px 0;
-  box-sizing: border-box;
-  font-weight: 600;
-}
-
-.sd_person_button {
-  font-size: 16px;
-  display: flex;
-  margin-bottom: 10px;
-}
-
-.sd_person_button span {
-  margin-left: 20px;
-  padding: 0 0 6px;
-  cursor: pointer;
-}
-
-.sd_person_button .active {
-  border-bottom: 2px solid rgb(30, 146, 255);
-  color: rgb(30, 146, 255);
-}
-
-.sd_module_content {
-  width: calc(50% / 2);
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-.sd_module_content:nth-child(1) .sd_module_children:nth-child(1) {
-  background: rgb(68, 228, 116);
-}
-.sd_module_content:nth-child(1) .sd_module_children:nth-child(2) {
-  background: rgb(244, 132, 101);
-}
-.sd_module_content:nth-child(1) .sd_module_children:nth-child(3) {
-  background: rgb(99, 205, 156);
-}
-.sd_module_content:nth-child(3) .sd_module_children:nth-child(1) {
-  background: rgb(253, 183, 184);
-}
-.sd_module_content:nth-child(3) .sd_module_children:nth-child(2) {
-  background: rgb(60, 174, 254);
-}
-.sd_module_content:nth-child(3) .sd_module_children:nth-child(3) {
-  background: rgb(61, 223, 234);
-}
-.sd_module_children {
-  width: 100%;
-  height: 130px;
-  position: relative;
-  border-radius: 5px;
-  color: #fff;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-}
-.sd_module_children + .sd_module_children {
-  margin-top: 20px;
-}
-.sd_module_children .s {
-  position: absolute;
-  font-size: 16px;
-  top: 10px;
-  left: 10px;
-}
-.sd_module_children .s2 span {
-  font-size: 45px;
-  margin-right: 3px;
-}
-
-.wd_class_body {
-  background: rgb(242, 242, 242);
-  padding: 20px 0;
-  border-radius: 5px;
-}
-.wd_module {
-  display: flex;
-  justify-content: space-between;
-  width: 95%;
-  margin: 0 auto;
-}
-
-.wd_bottom {
-  display: flex;
-  justify-content: space-between;
-  height: 500px;
-  margin: 20px 0 0 0;
-  width: 95%;
-  margin: 20px auto 0;
-}
-
-.wd_bottom .bdiv {
-  width: 48%;
-}
-.el-table >>> .even_row {
-  background-color: #f1f1f1;
-}
-</style>

+ 0 - 1014
src/components/pages/components/workDataGM.vue

@@ -1,1014 +0,0 @@
-<template>
-  <div>
-    <div class="cp_title" v-if="false">
-      <span>{{ this.dataJson.title }}</span>
-    </div>
-    <div class="cp_title" v-if="false">
-      <span>{{ "教师姓名:" + this.dataJson.uname }}</span>
-    </div>
-    <div class="data_body" v-if="false">
-      <div class="data_c">
-        <WorkData :workJson="workJson" :chapters="chapters"></WorkData>
-      </div>
-      <div class="data_c">
-        <ProblelmData
-          :problemJson="problemJson"
-          :chapters="chapters"
-        ></ProblelmData>
-      </div>
-      <div class="data_c">
-        <ToolsData :toolsJson="toolsJson" :tools="tools"></ToolsData>
-      </div>
-      <div class="data_c">
-        <ScoreData :scoreJson="scoreJson"></ScoreData>
-      </div>
-    </div>
-    <div class="sd_class" v-if="false">
-      <div class="sd_tTitle">课堂表现</div>
-      <div class="wd_class_body">
-        <div class="wd_module">
-          <div class="sd_module_content">
-            <div
-              class="sd_module_children"
-              style="
-                font-size: 25px;
-                padding: 0 25px;
-                box-sizing: border-box;
-                text-align: center;
-              "
-            >
-              <span>课程人数:共100人,已完成人数{{ randomNum(50, 100) }}人</span>
-            </div>
-            <div class="sd_module_children">
-              <span class="s">课堂时长</span>
-              <span class="s2">
-                <span>{{ randomNum(5, 15) }}</span
-                >次 <span>{{ randomNum(1, 60) }}</span
-                >分 <span>{{ randomNum(1, 59) }}</span
-                >秒
-              </span>
-              <span>已经击败99%教师</span>
-            </div>
-            <div class="sd_module_children">
-              <span class="s">课堂节数</span>
-              <span class="s2">
-                <span>{{ randomNum(5, 20) }}</span
-                >节
-              </span>
-              <span>已经击败99%教师</span>
-            </div>
-          </div>
-          <div style="width: 45%; position: relative">
-            <div
-              id="gauge_canvas"
-              class="echart"
-              style="width: 100%; height: 100%"
-            ></div>
-            <div
-              style="
-                position: absolute;
-                bottom: 25px;
-                display: flex;
-                justify-content: space-between;
-                font-size: 20px;
-                width: 100%;
-                padding: 0 100px;
-                box-sizing: border-box;
-              "
-            >
-              <span>教师为中心</span>
-              <span>学生为中心</span>
-            </div>
-          </div>
-          <div class="sd_module_content">
-            <div class="sd_module_children">
-              <span class="s">课堂互动</span>
-              <span class="s2">
-                <span>{{ randomNum(10, 20) }}</span
-                >次
-              </span>
-              <span>已经击败99%教师</span>
-            </div>
-            <div class="sd_module_children">
-              <span class="s">课堂生成</span>
-              <span class="s2">
-                <span>{{ randomNum(7, 15) }}</span
-                >节
-              </span>
-              <span>已经击败99%教师</span>
-            </div>
-            <div class="sd_module_children">
-              <span class="s">自主活动</span>
-              <span class="s2">
-                <span>{{ randomNum(10, 20) }}</span
-                >分 <span>{{ randomNum(10, 59) }}</span
-                >秒
-              </span>
-              <span>已经击败99%教师</span>
-            </div>
-          </div>
-        </div>
-        <div class="wd_bottom">
-          <div class="bdiv">
-            <div
-              id="line_canvas"
-              class="echart"
-              style="width: 100%; height: 100%"
-            ></div>
-          </div>
-          <div class="bdiv">
-            <div
-              id="bar_canvas"
-              class="echart"
-              style="width: 100%; height: 100%"
-            ></div>
-          </div>
-        </div>
-      </div>
-      <!-- <img src="../../../assets/data/tu1.png" alt style="width:100%" /> -->
-    </div>
-    <div class="sd_class">
-      <div class="sd_tTitle" v-if="false">班级学生能力分析</div>
-      <div style="background: #fff; padding: 10px 0">
-        <div class="sd_person_button" v-if="false">
-          <span @click="setType(1)" :class="{ active: type == 1 }">语文</span>
-          <span @click="setType(2)" :class="{ active: type == 2 }">数学</span>
-          <span @click="setType(3)" :class="{ active: type == 3 }">英语</span>
-          <span @click="setType(4)" :class="{ active: type == 4 }"
-            >信息科技</span
-          >
-          <span @click="setType(5)" :class="{ active: type == 5 }">艺术</span>
-          <span @click="setType(6)" :class="{ active: type == 6 }"
-            >跨学科素养</span
-          >
-        </div>
-        <div style="display: flex; flex-wrap: wrap">
-          <div style="width: 50%; height: 500px"  v-if="false">
-            <div
-              id="sunburst_canvas"
-              class="echart"
-              style="width: 100%; height: 100%"
-            ></div>
-          </div>
-          <div style="width: 50%; height: 500px" v-if="false">
-            <div
-              id="scatter_canvas"
-              class="echart"
-              style="width: 100%; height: 100%"
-            ></div>
-          </div>
-          <div style="width: 100%">
-            <WorksDetail2 :cid="cid" :uid="uid" :ooid="ooid"></WorksDetail2>
-            <!-- <el-table
-              ref="table"
-              :data="tableData"
-              border
-              :height="500"
-              :fit="true"
-              style="width: 100%; height: 60%"
-              :header-cell-style="{ background: '#f1f1f1' }"
-              :row-class-name="tableRowClassName"
-            >
-              <el-table-column prop="name" label="姓名" min-width="20%" align="center"></el-table-column>
-              <el-table-column prop="number" label="学号" min-width="20%" align="center"></el-table-column>
-              <el-table-column prop="class" label="班级" min-width="20%" align="center"></el-table-column>
-              <el-table-column prop="score" label="分数" min-width="20%" align="center"></el-table-column>
-              <el-table-column label="操作" min-width="20%">
-                <template>
-                  <el-button type="primary" size="small">查看</el-button>
-                </template>
-              </el-table-column>
-            </el-table>-->
-          </div>
-          <!-- <img src="../../../assets/data/tu3.png" alt style="width:50%" />
-          <img src="../../../assets/data/tu2.png" alt style="width:50%" />-->
-          <!-- <img src="../../../assets/data/tu4.png" alt style="width:100%" /> -->
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import WorkData from "./data/workData";
-import ProblelmData from "./data/problelmData";
-import ToolsData from "./data/toolsData";
-import ScoreData from "./data/scoreData";
-import WorksDetail2 from "./worksDetail2GM";
-
-export default {
-  props: ["dataJson", "cid", "uid", "ooid"],
-  components: {
-    WorkData,
-    ProblelmData,
-    ToolsData,
-    ScoreData,
-    WorksDetail2,
-  },
-  data() {
-    return {
-      tableData: [
-        {
-          name: "卓曾向",
-          number: "202205311",
-          class: "三年级七班",
-          score: "100",
-        },
-        {
-          name: "王志成",
-          number: "202205411",
-          class: "四年级一班",
-          score: "99",
-        },
-        {
-          name: "李沛郡",
-          number: "202205361",
-          class: "三年级六班",
-          score: "89",
-        },
-        {
-          name: "李世昌",
-          number: "202205321",
-          class: "三年级二班",
-          score: "88",
-        },
-        {
-          name: "李佳薇",
-          number: "202205471",
-          class: "四年级七班",
-          score: "69",
-        },
-        {
-          name: "叶玉卿",
-          number: "202205671",
-          class: "六年级七班",
-          score: "78",
-        },
-        {
-          name: "冯翊泽",
-          number: "202205571",
-          class: "五年级七班",
-          score: "68",
-        },
-        { name: "乐舞", number: "202205372", class: "三年级七班", score: "77" },
-        {
-          name: "关晓辉",
-          number: "202205475",
-          class: "四年级七班",
-          score: "68",
-        },
-        {
-          name: "谭晶陈",
-          number: "202205271",
-          class: "二年级七班",
-          score: "79",
-        },
-      ],
-      Course: this.dataJson,
-      courseId: "",
-      tools: [],
-      chapters: [],
-      workJson: [], //多少人提交作业数据
-      scoreJson: [], //量规评分数据
-      problemJson: [], //问答数据
-      toolsJson: [], //工具数据
-      type: 6,
-      chartObj: null,
-      chartObj2: null,
-      chartObj3: null,
-      chartObj4: null,
-      chartObj5: null,
-      gaugeOption: {
-        series: [
-          {
-            type: "gauge",
-            radius: "100%",
-            axisLine: {
-              lineStyle: {
-                width: 10,
-                color: [
-                  [
-                    100,
-                    {
-                      type: "linear",
-                      x: 0,
-                      y: 0,
-                      x2: 0,
-                      y2: 1,
-                      colorStops: [
-                        {
-                          offset: 1,
-                          color: "rgb(240,50,243)", // 0% 处的颜色
-                        },
-
-                        {
-                          offset: 0,
-                          color: "rgb(37,61,249)", // 100% 处的颜色
-                        },
-                      ],
-                      global: false, // 缺省为 false
-                    },
-                  ],
-                ],
-              },
-            },
-            pointer: {
-              width: 8,
-              length: "65%",
-              itemStyle: {
-                color: "auto",
-              },
-            },
-
-            axisLabel: {
-              color: "auto",
-              distance: 20,
-              fontSize: 20,
-            },
-            detail: {
-              valueAnimation: true,
-              formatter: "{value}",
-            },
-            data: [
-              {
-                value: 60,
-                name: "課堂類型",
-                title: {
-                  offsetCenter: [0, "80%"],
-                  fontSize: 30,
-                },
-              },
-            ],
-          },
-        ],
-      },
-      lineOption: {
-        title: {
-          text: "課堂時間",
-        },
-        tooltip: {
-          trigger: "axis",
-        },
-        legend: {
-          data: ["課堂時長", "麻吉星時長"],
-        },
-        grid: {
-          left: "3%",
-          right: "4%",
-          bottom: "3%",
-          containLabel: true,
-        },
-        toolbox: {
-          // feature: {
-          //   saveAsImage: {},
-          // },
-        },
-        xAxis: {
-          type: "category",
-          data: ["05-25", "05-26", "05-27", "05-28", "05-29", "05-30", "05-31"],
-        },
-        yAxis: {
-          type: "value",
-          axisLabel: {
-            formatter: "{value}M",
-          },
-        },
-        series: [
-          {
-            name: "課堂時長",
-            type: "line",
-            data: [10, 20, 30, 11, 15, 16, 18],
-          },
-          {
-            name: "麻吉星時長",
-            type: "line",
-            data: [22, 16, 18, 15, 19, 28, 17],
-          },
-        ],
-      },
-      barOption: {
-        title: {
-          text: "任教班級",
-        },
-        tooltip: {
-          trigger: "axis",
-          axisPointer: {
-            // Use axis to trigger tooltip
-            type: "shadow", // 'shadow' as default; can also be 'line' or 'shadow'
-          },
-        },
-        legend: {},
-        grid: {
-          left: "3%",
-          right: "4%",
-          bottom: "3%",
-          containLabel: true,
-        },
-        xAxis: {
-          type: "category",
-          data: ["中山五年5班", "中山五年5班"],
-        },
-        yAxis: {
-          type: "value",
-        },
-        series: [
-          {
-            name: "圖片",
-            type: "bar",
-            data: [220, 150],
-          },
-          {
-            name: "視頻",
-            type: "bar",
-            data: [120, 132],
-          },
-          {
-            name: "互動",
-            type: "bar",
-            data: [110, 132],
-          },
-          {
-            name: "投票",
-            type: "bar",
-
-            data: [120, 132],
-          },
-          {
-            name: "挑戰",
-            type: "bar",
-            data: [221, 110],
-          },
-          {
-            name: "評估",
-            type: "bar",
-            data: [120, 133],
-          },
-          {
-            name: "棄權",
-            type: "bar",
-            data: [105, 132],
-          },
-        ],
-      },
-      sunburstOption: {
-        //color:colors,
-        tooltip: {
-          trigger: "item",
-        },
-        legend: {
-          left: "50",
-          top: "center",
-        },
-        series: {
-          type: "sunburst",
-          data: [],
-          radius: [20, "90%"],
-          itemStyle: {
-            borderRadius: 7,
-            borderWidth: 2,
-          },
-          label: {
-            show: true,
-            color: "#fff",
-          },
-        },
-      },
-      scatterOption: {
-        xAxis: {
-          type: "category",
-          data: ["问题意识", "科学探究", "实践创新", "工程思维", "学习反思"],
-          splitLine: {
-            show: true,
-          },
-          axisLine: {
-            show: false,
-          },
-          name: "能力指标",
-        },
-        yAxis: {
-          type: "value",
-          name: "分值",
-          minInterval: 1,
-          max: 5,
-          axisLine: {
-            show: false,
-          },
-        },
-        grid: {
-          left: 100,
-          bottom: 50,
-          right: 100,
-          top: 70,
-        },
-        legend: {
-          color: "rgb(222,126,62)",
-          left: "right",
-          top: "0%",
-        },
-        series: [
-          {
-            name: "学生百分数(单位:%)",
-            type: "scatter",
-            symbolSize: function (val) {
-              return val[2] * 1.5;
-            },
-            color: "rgb(222,126,62,.5)",
-            data: [[1, 2, 50]],
-            label: {
-              color: "rgb(222,126,62)",
-              show: true,
-              position: "inside",
-              fontSize: 16,
-              formatter: function (a, b, c) {
-                return a.data[2];
-              },
-            },
-            animationDelay: function (idx) {
-              return idx * 5;
-            },
-          },
-        ],
-      },
-    };
-  },
-  methods: {
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    getData() {
-      let params = {
-        cid: this.courseId,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getWorkData", params)
-        .then((res) => {
-          let _data = res.data[1]; //所有作业数据
-          let _data2 = res.data[2]; //问答提交数据
-          let _data3 = res.data[3]; //工具使用数据
-          let workJson = [];
-          let scoreJson = [];
-          let problemJson = [];
-          let toolsJson = [];
-          _data.forEach((item, index) => {
-            workJson.push({ stage: item.stage, userid: item.userid });
-            scoreJson.push({ rate: JSON.parse(item.rate) });
-          });
-          _data2.forEach((item, index) => {
-            problemJson.push({ stage: item.chapterid });
-          });
-          _data3.forEach((item, index) => {
-            toolsJson.push({ tools: item.tools, count: item.count });
-          });
-          this.workJson = workJson;
-          this.scoreJson = scoreJson;
-          this.problemJson = problemJson;
-          this.toolsJson = toolsJson;
-          this.$forceUpdate();
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#gauge_canvas")
-        );
-        this.gaugeOption.series[0].data[0].value = this.randomNum(10, 100);
-        const chartObj2 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#line_canvas")
-        );
-        var _array1 = [];
-        var _array2 = [];
-        for (let index = 0; index < 7; index++) {
-          _array1.push(this.randomNum(40, 50));
-          _array2.push(this.randomNum(40, 50));
-        }
-        this.lineOption.series[0].data = _array1;
-        this.lineOption.series[1].data = _array2;
-        const chartObj3 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#bar_canvas")
-        );
-        var _arraybar1 = [];
-        var _arraybar2 = [];
-        var _arraybar3 = [];
-        var _arraybar4 = [];
-        var _arraybar5 = [];
-        var _arraybar6 = [];
-        var _arraybar7 = [];
-        for (let index = 0; index < 7; index++) {
-          _arraybar1.push(this.randomNum(20, 70));
-          _arraybar2.push(this.randomNum(20, 70));
-          _arraybar3.push(this.randomNum(20, 70));
-          _arraybar4.push(this.randomNum(20, 70));
-          _arraybar5.push(this.randomNum(20, 70));
-          _arraybar6.push(this.randomNum(20, 70));
-          _arraybar7.push(this.randomNum(20, 70));
-        }
-        this.barOption.series[0].data = _arraybar1;
-        this.barOption.series[1].data = _arraybar2;
-        this.barOption.series[2].data = _arraybar3;
-        this.barOption.series[3].data = _arraybar4;
-        this.barOption.series[4].data = _arraybar5;
-        this.barOption.series[5].data = _arraybar6;
-        this.barOption.series[6].data = _arraybar7;
-        const chartObj4 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#sunburst_canvas")
-        );
-        this.sunburstOption.series.data = [
-          {
-            name: "学习反思能力",
-            value: 15,
-            children: [
-              {
-                name: "终生学习",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "自我进步",
-                value: this.randomNum(1, 5),
-              },
-              {
-                name: "自我反思",
-                value: this.randomNum(1, 5),
-              },
-            ],
-          },
-          {
-            name: "工程思维能力",
-            value: 15,
-            children: [
-              {
-                name: "工程思维能力",
-                value: this.randomNum(1, 15),
-              },
-            ],
-          },
-          {
-            name: "实践创新能力",
-            value: 15,
-            children: [
-              {
-                name: "实践创新能力",
-                value: this.randomNum(5, 15),
-              },
-            ],
-          },
-          {
-            name: "科学探究能力",
-            value: 15,
-            children: [
-              {
-                name: "科学探究能力",
-                value: this.randomNum(5, 15),
-              },
-            ],
-          },
-          {
-            name: "问题意识",
-            value: 15,
-            children: [
-              {
-                name: "问题意识",
-                value: this.randomNum(5, 15),
-              },
-            ],
-          },
-        ];
-        const chartObj5 = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#scatter_canvas")
-        );
-        var scatterArray = [];
-        for (var i = 0; i < 5; i++) {
-          scatterArray[i] = [];
-          var a = 0;
-          for (var j = 0; j < 5; j++) {
-            var b = this.randomNum(0, 20);
-            a += b;
-            if (j == 4) {
-              scatterArray[i].push(100 - a);
-              scatterArray[i].sort(function () {
-                return Math.random() - 0.5;
-              });
-            } else {
-              scatterArray[i].push(b);
-            }
-          }
-        }
-
-        var _arrayScatter = [];
-        for (var i = 0; i < 5; i++) {
-          for (var j = 1; j < 6; j++) {
-            var x = i;
-            var y = j;
-            // var z = this.randomNum(0, 100);
-            var z = scatterArray[i][j - 1];
-            _arrayScatter.push([x, y, z]);
-          }
-        }
-        this.scatterOption.series[0].data = _arrayScatter;
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj2 = chartObj2;
-        this.chartObj3 = chartObj3;
-        this.chartObj4 = chartObj4;
-        this.chartObj5 = chartObj5;
-        this.chartObj.setOption(this.gaugeOption);
-        this.chartObj2.setOption(this.lineOption);
-        this.chartObj3.setOption(this.barOption);
-        this.chartObj4.setOption(this.sunburstOption);
-        this.chartObj5.setOption(this.scatterOption);
-        this.tableData = this.tableData.sort(function () {
-          return Math.random() - 0.5;
-        });
-      });
-    },
-    randomNum(minNum, maxNum) {
-      switch (arguments.length) {
-        case 1:
-          return parseInt(Math.random() * minNum + 1, 10);
-          break;
-        case 2:
-          return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
-          break;
-        default:
-          return 0;
-          break;
-      }
-    },
-    setType(type) {
-      this.type = type;
-      this.sunburstOption.series.data = [
-        {
-          name: "学习反思能力",
-          value: 15,
-          children: [
-            {
-              name: "终生学习",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "自我进步",
-              value: this.randomNum(1, 5),
-            },
-            {
-              name: "自我反思",
-              value: this.randomNum(1, 5),
-            },
-          ],
-        },
-        {
-          name: "工程思维能力",
-          value: 15,
-          children: [
-            {
-              name: "工程思维能力",
-              value: this.randomNum(5, 15),
-            },
-          ],
-        },
-        {
-          name: "实践创新能力",
-          value: 15,
-          children: [
-            {
-              name: "实践创新能力",
-              value: this.randomNum(5, 15),
-            },
-          ],
-        },
-        {
-          name: "科学探究能力",
-          value: 15,
-          children: [
-            {
-              name: "科学探究能力",
-              value: this.randomNum(5, 15),
-            },
-          ],
-        },
-        {
-          name: "问题意识",
-          value: 15,
-          children: [
-            {
-              name: "问题意识",
-              value: this.randomNum(5, 15),
-            },
-          ],
-        },
-      ];
-      var scatterArray = [];
-      for (var i = 0; i < 5; i++) {
-        scatterArray[i] = [];
-        var a = 0;
-        for (var j = 0; j < 5; j++) {
-          var b = this.randomNum(0, 20);
-          a += b;
-          if (j == 4) {
-            scatterArray[i].push(100 - a);
-            scatterArray[i].sort(function () {
-              return Math.random() - 0.5;
-            });
-          } else {
-            scatterArray[i].push(b);
-          }
-        }
-      }
-
-      var _arrayScatter = [];
-      for (var i = 0; i < 5; i++) {
-        for (var j = 1; j < 6; j++) {
-          var x = i;
-          var y = j;
-          // var z = this.randomNum(0, 100);
-          var z = scatterArray[i][j - 1];
-          _arrayScatter.push([x, y, z]);
-        }
-      }
-      this.scatterOption.series[0].data = _arrayScatter;
-      this.chartObj4.setOption(this.sunburstOption);
-      this.chartObj5.setOption(this.scatterOption);
-    },
-  },
-  watch: {
-    // 使用监听的方式,监听数据的变化
-    dataJson(val) {
-      this.Course = val;
-      this.courseId = val.courseId;
-      var _chapters = JSON.parse(val.chapters);
-      this.chapters = [];
-      this.tools = [];
-      _chapters.forEach((element) => {
-        this.chapters.push({
-          name: element.dyName,
-          id: element.chapterInfo[0].chapterid,
-        });
-        if (element.chapterInfo[0].toolChoose) {
-          this.tools.push(...element.chapterInfo[0].toolChoose);
-        }
-      });
-      this.tools.push(...[1, 1, 1, 1, 2, 2, 2, 2]);
-      this.tools = Array.from(new Set(this.tools)).sort();
-      this.getData();
-    },
-  },
-  mounted() {
-    this.courseId = this.dataJson.courseId;
-    var _chapters = JSON.parse(this.dataJson.chapters);
-    this.chapters = [];
-    this.tools = [];
-    _chapters.forEach((element) => {
-      this.chapters.push({
-        name: element.dyName,
-        id: element.chapterInfo[0].chapterid,
-      });
-      if (element.chapterInfo[0].toolChoose) {
-        this.tools.push(...element.chapterInfo[0].toolChoose);
-      }
-    });
-    this.tools = Array.from(new Set(this.tools)).sort();
-    this.getData();
-    this.setChart();
-  },
-};
-</script>
-
-<style scoped>
-.cp_title {
-  font-size: 24px;
-  margin: 0 auto;
-  width: 95%;
-}
-.data_body {
-  display: flex;
-  flex-wrap: wrap;
-}
-.data_body .data_c {
-  width: 50%;
-}
-.sd_class {
-  width: 95%;
-  margin: 0 auto;
-}
-.sd_tTitle {
-  width: 100%;
-  background: rgb(199, 217, 212);
-  padding: 10px 10px;
-  border-radius: 5px;
-  border: 1px solid rgb(165, 182, 177);
-  font-size: 18px;
-  font-weight: 500;
-  margin: 20px 0;
-  box-sizing: border-box;
-  font-weight: 600;
-}
-
-.sd_person_button {
-  font-size: 16px;
-  display: flex;
-  margin-bottom: 10px;
-}
-
-.sd_person_button span {
-  margin-left: 20px;
-  padding: 0 0 6px;
-  cursor: pointer;
-}
-
-.sd_person_button .active {
-  border-bottom: 2px solid rgb(30, 146, 255);
-  color: rgb(30, 146, 255);
-}
-
-.sd_module_content {
-  width: calc(50% / 2);
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-.sd_module_content:nth-child(1) .sd_module_children:nth-child(1) {
-  background: rgb(68, 228, 116);
-}
-.sd_module_content:nth-child(1) .sd_module_children:nth-child(2) {
-  background: rgb(244, 132, 101);
-}
-.sd_module_content:nth-child(1) .sd_module_children:nth-child(3) {
-  background: rgb(99, 205, 156);
-}
-.sd_module_content:nth-child(3) .sd_module_children:nth-child(1) {
-  background: rgb(253, 183, 184);
-}
-.sd_module_content:nth-child(3) .sd_module_children:nth-child(2) {
-  background: rgb(60, 174, 254);
-}
-.sd_module_content:nth-child(3) .sd_module_children:nth-child(3) {
-  background: rgb(61, 223, 234);
-}
-.sd_module_children {
-  width: 100%;
-  height: 130px;
-  position: relative;
-  border-radius: 5px;
-  color: #fff;
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-}
-.sd_module_children + .sd_module_children {
-  margin-top: 20px;
-}
-.sd_module_children .s {
-  position: absolute;
-  font-size: 16px;
-  top: 10px;
-  left: 10px;
-}
-.sd_module_children .s2 span {
-  font-size: 45px;
-  margin-right: 3px;
-}
-
-.wd_class_body {
-  background: rgb(242, 242, 242);
-  padding: 20px 0;
-  border-radius: 5px;
-}
-.wd_module {
-  display: flex;
-  justify-content: space-between;
-  width: 95%;
-  margin: 0 auto;
-}
-
-.wd_bottom {
-  display: flex;
-  justify-content: space-between;
-  height: 500px;
-  margin: 20px 0 0 0;
-  width: 95%;
-  margin: 20px auto 0;
-}
-
-.wd_bottom .bdiv {
-  width: 48%;
-}
-.el-table >>> .even_row {
-  background-color: #f1f1f1;
-}
-</style>

+ 0 - 2760
src/components/pages/components/worksDetail2.vue

@@ -1,2760 +0,0 @@
-<template>
-  <div class="pb_content" style="background: unset">
-    <div class="pb_content_body" style="
-        background: #fff;
-        padding: 25px 0 0;
-        box-sizing: border-box;
-        border-radius: 5px;
-      ">
-      <div class="student_head">
-        <!-- <div class="student_search">
-          <div>班级筛选</div>
-          <el-select v-model="sClass" placeholder="请选择班级" @change="searchWork">
-            <el-option label="所有班级" value></el-option>
-            <el-option
-              v-for="(item, index) in grade"
-              :key="index"
-              :label="item.name"
-              :value="item.id"
-            ></el-option>
-          </el-select>
-        </div>-->
-        <!-- chooseDy
-        chooseTask-->
-        <div class="student_search">
-          <div>课程筛选</div>
-          <div style="display: flex; width: 90%">
-            <el-select class="r_select" v-model="uname" placeholder="请选择学生" @change="searchWork2">
-              <el-option label="所有学生" value></el-option>
-              <el-option v-for="item in userAarray" :key="item.userid" :label="item.username" :value="item.userid">
-              </el-option>
-            </el-select>
-            <el-select v-model="chooseDy" placeholder="请选择阶段" @change="searchWork1">
-              <el-option label="所有阶段" value></el-option>
-              <el-option v-for="(item, index) in dyList" :key="index" :label="item.name" :value="item.id"></el-option>
-            </el-select>
-            <el-select v-model="chooseTask" placeholder="请选择任务" @change="searchWork2">
-              <el-option label="所有任务" value></el-option>
-              <el-option v-for="(item, index) in dyList[chooseDy]
-              ? dyList[chooseDy].taskList
-              : []" :key="index" :label="item.name" :value="item.id"></el-option>
-            </el-select>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div class="pb_content_body">
-      <div class="student_table">
-        <el-table ref="table" :data="tableData" border :height="tableHeight" :fit="true" v-loading="isLoading"
-          style="width: 100%" :header-cell-style="{ background: '#f1f1f1' }" :row-class-name="tableRowClassName" stripe>
-          <el-table-column prop="sName" label="姓名" min-width="15" align="center"></el-table-column>
-          <el-table-column prop="class" label="班级" min-width="20" align="center">
-            <template slot-scope="scope">
-              <div>{{ scope.row.class ? scope.row.class : "暂无班级" }}</div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="course" label="项目" min-width="20" align="center" show-overflow-tooltip>
-          </el-table-column>
-          <el-table-column prop="course" label="阶段" min-width="20" align="center" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <div>
-                {{ dyList.length > 0 ? dyList[scope.row.stage].name : "" }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="course" label="任务" min-width="20" align="center" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <div>
-                {{
-                dyList.length > 0
-                ? dyList[scope.row.stage].taskList[scope.row.task]
-                ? dyList[scope.row.stage].taskList[scope.row.task].name
-                : ""
-                : ""
-                }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="time" label="时间" width="100px" align="center"></el-table-column>
-          <el-table-column label="操作" width="200px">
-            <template slot-scope="scope">
-              <el-button type="primary" size="small" @click="
-                lookWork(
-                  scope.row.id,
-                  scope.row.userid,
-                  scope.row.stage,
-                  scope.row.task
-                )
-              ">查看作业</el-button>
-              <!-- <el-button
-                type="primary"
-                size="small"
-                @click="lookData(scope.row.userid)"
-                >生成报告</el-button
-              >-->
-              <el-button type="primary" size="small" @click="
-                lookWork2(
-                  scope.row.id,
-                  scope.row.userid,
-                  scope.row.stage,
-                  scope.row.task
-                )
-              ">导出报告</el-button>
-              <!-- <el-button
-                class="de_button"
-                type="primary"
-                size="small"
-                @click="deleteWork(scope.row.id)"
-              >删除</el-button>-->
-            </template>
-          </el-table-column>
-        </el-table>
-        <el-dialog title="查看作业" :visible.sync="dialogVisible3" :append-to-body="true" :before-close="handleClose"
-          width="100%" class="dialog_diy2 max_diy" :class="{ fullStyle: full }">
-          <div slot="title" class="header-title">
-            <div style="color: #fff">查看作业</div>
-            <div style="position: absolute; top: 14px; right: 50px">
-              <img src="../../../assets/full.png" style="height: 14px; cursor: pointer" alt="" @click="fullTools" />
-            </div>
-          </div>
-          <div class="zyBoxC">
-            <div class="courseTitle" v-if="allWorks.course">
-              <div class="txName">
-                <div class="tx"><img :src="tx" alt="" /></div>
-                <div>{{ allWorks.sName }}</div>
-              </div>
-              <div>{{ allWorks.course }}</div>
-            </div>
-            <div class="cBox">
-              <div class="pb_left">
-                <el-tooltip class="cTitle" effect="light" :content="allWorks.course" placement="top">
-                  <div>{{ allWorks.course }}</div>
-                </el-tooltip>
-                <div class="ml">目录</div>
-                <div class="cru_selectBox">
-                  <div v-for="(dy, dyIndex) in dyList2" :key="dyIndex">
-                    <div class="blue_box_one" @click="isOpen(dyIndex)">
-                      <div>第{{ dy.id + 1 }}阶段</div>
-                      <div>{{ dy.name }}</div>
-                    </div>
-                    <div class="twoChild" :class="{
-                      navActive: dy.isOpen,
-                    }">
-                      <div class="navChild" v-for="(nav, navIndex) in dy.taskList" :key="navIndex">
-                        <div class="navTask" @click="openTask(dy.id, nav.id)" :class="{
-                          openTaskActive:
-                            nav.id == taskCount &&
-                            dy.id + '-' + nav.id == navId &&
-                            dy.id == stageIndex,
-                        }">
-                          <div class="vedioNav" :class="{
-                            isClick:
-                              nav.id == taskCount &&
-                              dy.id + '-' + nav.id == navId &&
-                              dy.id == stageIndex,
-                          }" style="margin: 0">
-                            任务{{ navIndex + 1 }}
-                          </div>
-                          <el-tooltip class="navTaskname item" effect="light" :content="nav.name" placement="top">
-                            <div>{{ nav.name }}</div>
-                          </el-tooltip>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div class="shuBox" v-if="worksDetail.length" :class="{ fullBox: full }">
-                <div class="allBox" v-for="(sin, sIndex) in sInfo" :key="sIndex">
-                  <div class="zyBox" v-if="sin.course" :class="{ fullZyBox: full }">
-                    <div class="top">
-                      <div class="jdName">
-                        <div>
-                          {{
-                          "第" +
-                          (sin.stage + 1) +
-                          "阶段 " +
-                          dyList[sin.stage].name
-                          }}
-                        </div>
-                        <div class="taskName" style="width: 100%; justify-content: space-between">
-                          <div class="taskName" :id="sin.stage + '-' + sin.task" :scrollindex="sIndex">
-                            <div class="task">任务{{ sin.task + 1 }}</div>
-                            <div>
-                              {{ dyList[sin.stage].taskList[sin.task].name }}
-                            </div>
-                          </div>
-                          <div v-if="worksDetail[sIndex].wpptInfo.length > 0">
-                            <el-button type="primary" size="small" @click="openFile(worksDetail[sIndex].wpptInfo[0])">
-                              查看文档</el-button>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="contentBox">
-                      <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
-                        v-if="worksDetail[sIndex].img.length > 0">
-                        <div class="bigImg" v-if="
-                          worksDetail[sIndex].img &&
-                          worksDetail[sIndex].img.length
-                        ">
-                          <img @click="
-                            previewImg(
-                              worksDetail[sIndex].img[
-                                worksDetail[sIndex].imgIndex
-                              ].src
-                            )
-                          " :src="
-                            worksDetail[sIndex].img[
-                              worksDetail[sIndex].imgIndex
-                            ].src
-                          " alt />
-                        </div>
-                        <div class="thumbnail" v-if="
-                          worksDetail[sIndex].img &&
-                          worksDetail[sIndex].img.length
-                        ">
-                          <div v-for="(item, index) in worksDetail[sIndex].img" :key="index" :class="
-                            worksDetail[sIndex].imgIndex == index
-                              ? 'isClick'
-                              : ''
-                          ">
-                            <img :src="item.src" alt @click="worksDetail[sIndex].imgIndex = index" />
-                          </div>
-                        </div>
-                        <div class="work_nopicture" v-else>暂无上传截图</div>
-                      </div>
-                      <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
-                        v-else-if="worksDetail[sIndex].answerInfo.length > 0">
-                        <div class="answerbox">
-                          <div style="min-width: 80px">问答标题</div>
-                          <div>
-                            {{ worksDetail[sIndex].answerInfo[0].answerTitle }}
-                          </div>
-                        </div>
-                        <div class="answerbox1">
-                          <div>学生回答</div>
-                          <div>
-                            {{ worksDetail[sIndex].answerInfo[0].answer }}
-                          </div>
-                        </div>
-                      </div>
-                      <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
-                        v-else-if="worksDetail[sIndex].askInfo.length > 0">
-                        <div>
-                          <div class="a_add_title" style="
-                              display: flex;
-                              flex-direction: row;
-                              align-items: center;
-                              justify-content: center;
-                              flex-wrap: wrap;
-                            ">
-                            <div style="margin-right: 20px; font-size: 20px">
-                              标题:
-                            </div>
-                            <div style="font-size: 20px">
-                              {{ worksDetail[sIndex].askInfo[0].askTitle }}
-                            </div>
-                          </div>
-                          <div class="a_addBox">
-                            <div style="font-size: 16px; color: #c7c7c7">
-                              内容
-                            </div>
-                            <div class="a_add_box" v-for="(item1, index1) in worksDetail[sIndex]
-                            .askInfo[0].askCount" :key="index1">
-                              <div class="a_add_head">
-                                <div style="display: flex">
-                                  {{ index1 + 1 + "、" }}
-                                  <div>
-                                    题目:{{
-                                    worksDetail[sIndex].askInfo[0].askJson[
-                                    index1
-                                    ].askstitle
-                                    }}
-                                  </div>
-                                </div>
-                              </div>
-                              <div class="a_add_body">
-                                <div class="a_add_input">
-                                  <el-radio-group v-model="
-                                    worksDetail[sIndex].askInfo[0].radio[
-                                      index1
-                                    ]
-                                  ">
-                                    <el-radio v-for="(item2, checkIndex) in worksDetail[
-                                      sIndex
-                                    ].askInfo[0].askJson[index1].checkList" :key="checkIndex" :label="checkIndex"
-                                      disabled class="redioStyle"><span v-html="item2"></span></el-radio>
-                                  </el-radio-group>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                      <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
-                        v-else-if="worksDetail[sIndex].wpptInfo.length > 0">
-                        <div style="height: 238px" @click="openFile(worksDetail[sIndex].wpptInfo[0])">
-                          <div @click="openFile(worksDetail[sIndex].wpptInfo[0])" style="
-                              width: 300px;
-                              height: 300px;
-                              position: absolute;
-                              z-index: 999;
-                            "></div>
-                          <pdf v-if="showPDF" :pdfUrl="worksDetail[sIndex].wpptInfo[0]"
-                            style="width: 100%; height: 520px; overflow: auto"></pdf>
-                          <iframe v-else :src="worksDetail[sIndex].wpptInfo[0]" frameborder="0" width="100%"
-                            height="100%"></iframe>
-                        </div>
-                      </div>
-                      <div class="right_top" v-show="worksDetail[sIndex].eList.length">
-                        <div class="ech">
-                          <img src="../../../assets/icon/pj/ech.png" alt="" />
-                        </div>
-                        <div class="data_body">
-                          <div style="width: 100%">
-                            <div class="echart charts_canvas" style="
-                                width: 100%;
-                                height: 100%;
-                                margin: 0 0 0 1rem;
-                              "></div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="right_score" :class="{ rightScoreFullBox: full }">
-                    <div class="sd_score" style="
-                        box-sizing: border-box;
-                        width: 100%;
-                        box-shadow: none;
-                        position: relative;
-                      ">
-                      <div class="worksTime">
-                        作业提交时间:<span style="width: auto">{{ worksDetail[sIndex].time }}
-                        </span>
-                      </div>
-                      <div class="ech" style="margin-left: 23px">
-                        <img src="../../../assets/icon/pj/score.png" alt="" />
-                      </div>
-                      <div style="height: 80%;overflow: auto;">
-                        <div class="score_box" v-for="(item, index) in worksDetail[sIndex].eList" :key="index">
-                          <el-tooltip class="item" effect="dark" :content="item.value" placement="top-start">
-                            <span>{{ item.value }}</span>
-                          </el-tooltip>
-                          <el-rate class="rate_size" style="min-width: 120px"
-                            v-model="worksDetail[sIndex].rateList[item.value]" @change="getStar(sIndex)"></el-rate>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="buttonCss">
-              <el-button type="primary" size="small" @click="updatePj">保存评分</el-button>
-            </div>
-          </div>
-        </el-dialog>
-      </div>
-      <div class="student_page">
-        <el-pagination background layout="prev, pager, next" :page-size="10" :total="total" v-if="page"
-          @current-change="handleCurrentChange"></el-pagination>
-      </div>
-    </div>
-    <el-dialog :visible.sync="pictureDialog" size="tiny">
-      <img width="100%" :src="dialogImageUrl" alt />
-    </el-dialog>
-    <el-dialog title="项目评分" :visible.sync="dataVisible" :append-to-body="true" width="1100px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="a_addBox2">
-          <StudentData :studentInfo="studentInfo"></StudentData>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dataVisible = false">关 闭</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="查看选择题" :visible.sync="dialogVisible4" :append-to-body="true" width="800px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="a_add_title" style="
-            display: flex;
-            flex-direction: row;
-            align-items: center;
-            justify-content: center;
-          ">
-          <div style="font-size: 20px">{{ askJson.askTitle }}</div>
-        </div>
-        <div class="a_addBox">
-          <div style="font-size: 16px; color: #c7c7c7">内容</div>
-          <div class="a_add_box" v-for="(item, index) in askJson.askJson" :key="index">
-            <div class="a_add_head">
-              <div style="display: flex">
-                {{ index + 1 + "、" }}
-                <div>题目:{{ item.askstitle }}</div>
-              </div>
-            </div>
-            <div class="a_add_body">
-              <div class="a_add_input">
-                <el-radio-group v-model="askJson.radio[index]">
-                  <el-radio v-for="(item3, checkIndex1) in item.checkList" :key="checkIndex1" :label="checkIndex1"
-                    class="redioStyle" disabled>{{ item3 }}</el-radio>
-                </el-radio-group>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="dialogVisible4 = false">关 闭</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="文件预览" :visible.sync="dialogVisible6" width="100%" :before-close="handleClose" class="full_diy"
-      :append-to-body="true">
-      <div slot="title" class="header-title">
-        <div style="color: #fff">文件预览</div>
-      </div>
-      <pdf v-if="showPDF" :pdfUrl="pptImgUrl" style="width: 100%; height: 520px; overflow: auto"></pdf>
-      <iframe v-else :src="pptImgUrl" frameborder="0" width="100%" height="600"></iframe>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import StudentData from "./studentData";
-import htmlDocx from "html-docx-js/dist/html-docx";
-import saveAs from "file-saver";
-export default {
-  components: {
-    StudentData,
-  },
-  props: ["cid", "uid", "ooid"],
-  data() {
-    return {
-      tableHeight: "500px",
-      isLoading: false,
-      id: this.cid,
-      userid: this.uid,
-      oid: this.ooid,
-      formLabelWidth: "100px",
-      dialogImageUrl: "",
-      pictureDialog: false,
-      dialogVisible: false,
-      dialogVisible1: false,
-      dialogVisible2: false,
-      dialogVisible3: false,
-      dialogVisible4: false,
-      dataVisible: false,
-      full: true,
-      isStar: 0,
-      studentInfo: {},
-      courseByUser: "诗词中的植物",
-      userName: "林点",
-      answerName: "宿赞公房",
-      studentAnswer: "雨荒深院菊,霜倒半池莲.唐杜甫《宿赞公房》",
-      commentCount: 0,
-      publicIndex: 0,
-      allWorks: [],
-      playerOptions: {
-        playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
-        autoplay: false, //如果true,浏览器准备好时开始回放。
-        muted: false, // 默认情况下将会消除任何音频。
-        loop: false, // 导致视频一结束就重新开始。
-        preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
-        language: "zh-CN",
-        aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
-        fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
-        sources: [
-          {
-            type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目   || "video/ogg"|| "video/webm"
-            src: "", //url地址require("../../../assets/media/aaa.mp4")
-          },
-        ],
-        // poster: require("../../../assets/tu31.png"), //你的封面地址
-        // poster: dataRes.imgUrl, //你的封面地址
-        notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
-        controlBar: {
-          timeDivider: true, //当前时间和持续时间的分隔符
-          durationDisplay: true, //显示持续时间
-          remainingTimeDisplay: false, //是否显示剩余时间功能
-          fullscreenToggle: true, //全屏按钮
-        },
-      },
-      playerO: {},
-      commentName: "谭子松",
-      commentTime: "2021/2/5",
-      commentAnswer:
-        "作为家长我很高兴看到孩子的进步,希望这个进步只是一个开始,在新学期能够继续延续,这样才能不负老师的期望",
-      tableData: [],
-      uploadBoolean: false,
-      studentMessage: [],
-      subject: "",
-      sClass: "",
-      stageIndex: "",
-      taskCount: "",
-      navId: "",
-      chooseDy: "",
-      uname: "",
-      chooseTask: "",
-      subjectJuri: [],
-      projectJuri: [],
-      pptImgUrl: "",
-      grade: [],
-      mr: require("../../../assets/icon/wheel.png"),
-      tx: require("../../../assets/avatar.png"),
-      projectchoose: "",
-      scopeId: "",
-      thumbnail: [],
-      rateList: {
-        ca: 0,
-        sia: 0,
-        eta: 0,
-        pia: 0,
-        lra: 0,
-        content: "",
-      },
-      rateParams: [],
-      page: 1,
-      total: 0,
-      worksDetail: [],
-      suserId: "",
-      sInfo: {},
-      chapInfo: [],
-      showPDF: false,
-      dialogVisible6: false,
-      vedio: [],
-      file: [],
-      tType: 0,
-      chartObj: [],
-      pptImgUrl: "",
-      ooption: [],
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        series: [
-          {
-            name: "量规评分",
-            type: "pie",
-            radius: "70%",
-            center: ["50%", "50%"],
-            data: [
-              { value: 0, name: "意识能力" },
-              { value: 0, name: "科学探究能力" },
-              { value: 0, name: "实践创新能力" },
-              { value: 0, name: "学习反思能力" },
-              { value: 0, name: "工程思维能力" },
-            ],
-            itemStyle: {
-              emphasis: {
-                shadowBlur: 10,
-                shadowOffsetX: 0,
-                shadowColor: "rgba(0, 0, 0, 0.5)",
-              },
-              normal: {
-                label: {
-                  show: true,
-                  formatter: "{d}%",
-                  inside: true,
-                  position: "inner",
-                },
-                labelLine: { show: false },
-              },
-            },
-          },
-        ],
-      },
-      // 雷达图的数据
-      radarOption: {
-        splitNumber: 5,
-        tooltip: {
-          triggerOn: "mousemove",
-          //雷达图的tooltip不会超出div,也可以设置position属性,position定位的tooltip 不会随着鼠标移动而位置变化,不友好
-          confine: true,
-          enterable: true, //鼠标是否可以移动到tooltip区域内
-          backgroundColor: "rgba(255,255,255,0.7)",
-          textStyle: {
-            // 文字样式
-            align: "left",
-          },
-          left: "right",
-          top: "bottom",
-        },
-        radar: {
-          radius: ["0%", "70%"],
-          shape: "circle",
-          center: ["50%", "50%"],
-          axisName: {
-            textStyle: {
-              // 文字样式
-              color: "#58a5e6",
-            },
-            formatter: function (value, indicator) {
-              // value = value.replace(/\S{2}/g, function (match) {
-              //   return match + "\n";
-              // });
-              return value;
-            },
-          },
-          indicator: [
-            // 雷达图的指示器,用来指定雷达图中的多个变量(维度)
-          ],
-        },
-        // 雷达图背景的颜色,在这儿随便设置了一个颜色,完全不透明度为0,就实现了透明背景
-        splitArea: {
-          show: true,
-          areaStyle: {
-            color: "rgba(255,0,0,0)", // 图表背景的颜色
-          },
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            width: 1,
-            color: "rgba(131,141,158,.1)", // 设置网格的颜色
-          },
-        },
-        series: [
-          {
-            name: "能力图", // tooltip中的标题
-            type: "radar", // 表示是雷达图
-            symbol: "circle", // 拐点的样式,还可以取值'rect','angle'等
-            symbolSize: 8, // 拐点的大小
-            areaStyle: {
-              normal: {
-                width: 1,
-                opacity: 0.2,
-              },
-            },
-            data: [
-              {
-                // 设置各个指标原始值
-                value: [],
-                // 设置区域边框和区域的颜色
-                itemStyle: {
-                  normal: {
-                    color: "#58a5e6",
-                    lineStyle: {
-                      color: "#58a5e6",
-                    },
-                  },
-                },
-              },
-            ],
-          },
-        ],
-      },
-      askJson: {},
-      dyList: [],
-      dyList2: [],
-      userAarray: [],
-    };
-  },
-  mounted() {
-    this.$nextTick(function () {
-      this.tableHeight =
-        window.innerHeight - this.$refs.table.$el.offsetTop - 200;
-      if (this.tableHeight <= 530) {
-        this.tableHeight = 530;
-      }
-      // 监听窗口大小变化
-      let self = this;
-      window.onresize = function () {
-        self.tableHeight =
-          window.innerHeight - self.$refs.table.$el.offsetTop - 200;
-        if (self.tableHeight <= 530) {
-          self.tableHeight = 530;
-        }
-      };
-    });
-  },
-  methods: {
-    previewImg(url) {
-      this.$hevueImgPreview(url);
-    },
-    lookData(uid) {
-      let params = {
-        uid: uid,
-        cid: this.id,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail", params)
-        .then((res) => {
-          this.studentInfo = res.data[0][0];
-          this.dataVisible = true;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    handleClose(done) {
-      done();
-    },
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    handleCurrentChange(val) {
-      this.page = val;
-      this.getWorks();
-    },
-    lookWork(id, uid, stage, task) {
-      // this.scopeId = id;
-      let params = {
-        uid: uid,
-        cid: this.id,
-        stage: stage,
-        task: task,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail3", params)
-        .then((res) => {
-          this.sInfo = res.data[0];
-          var chapters = [],
-            eList = [],
-            _ooption = [],
-            _rate = [],
-            _rateList = [];
-          var worksDetail = res.data[1];
-          // this.scopeId = res.data[2][0].id;
-          // var scopeId = res.data[2][0].id;
-          var askInfo = res.data[3];
-          var answerInfo = res.data[4];
-          var pptInfo = res.data[5];
-          var workJson = [];
-          for (var k = 0; k < res.data[0].length; k++) {
-            this.allWorks = res.data[0][k];
-            this.chapInfo.push(JSON.parse(res.data[0][k].chapters));
-            chapters.push(JSON.parse(res.data[0][k].chapters));
-            if (!chapters[0][res.data[0][k].stage].chapterInfo[0].taskJson[
-              res.data[0][k].task
-            ]) {
-              continue
-            }
-
-            workJson.push({
-              img: [],
-              imgIndex: 0,
-              eList: [],
-              rateList: {},
-              askInfo: [],
-              answerInfo: [],
-              wpptInfo: [],
-              scopeId: res.data[0][k].id,
-              stagetask: "",
-              time: "",
-            });
-
-            eList =
-              chapters[0][res.data[0][k].stage].chapterInfo[0].taskJson[
-                res.data[0][k].task
-              ].eList;
-            workJson[k].time = res.data[0][k].time;
-            workJson[k].stagetask =
-              res.data[0][k].stage + "-" + res.data[0][k].task;
-            if (eList && eList.length) {
-              _ooption = [];
-              workJson[k].eList = eList;
-              for (var i = 0; i < eList.length; i++) {
-                _ooption.push({ value: 0, name: eList[i].value });
-                workJson[k].rateList[eList[i].value] = 0;
-              }
-              workJson[k].rateList.content = "";
-              this.ooption[k] = _ooption;
-            }
-            // else {
-            //   _ooption = [];
-            //   workJson[k].eList = [
-            //     { value: "意识能力", detail: "", score: 5 },
-            //     { value: "科学探究能力", detail: "", score: 5 },
-            //     { value: "实践创新能力", detail: "", score: 5 },
-            //     { value: "学习反思能力", detail: "", score: 5 },
-            //     { value: "工程思维能力", detail: "", score: 5 },
-            //   ];
-            //   for (var i = 0; i < workJson[k].eList.length; i++) {
-            //     _ooption.push({ value: 0, name: workJson[k].eList[i].value });
-            //     workJson[k].rateList[workJson[k].eList[i].value] = 0;
-            //   }
-            //   workJson[k].rateList.content = "";
-            //   this.ooption[k] = [
-            //     { value: 0, name: "意识能力" },
-            //     { value: 0, name: "科学探究能力" },
-            //     { value: 0, name: "实践创新能力" },
-            //     { value: 0, name: "学习反思能力" },
-            //     { value: 0, name: "工程思维能力" },
-            //   ];
-            // }
-            if (res.data[0][k].rate && eList && eList.length) {
-              _rate[k] = JSON.parse(res.data[0][k].rate);
-              _rateList[k] = Object.keys(JSON.parse(res.data[0][k].rate));
-              for (var i = 0; i < _rateList[k].length; i++) {
-                var _c = Object.keys(workJson[k].rateList);
-                if (_c.indexOf(_rateList[k][i]) != -1) {
-                  workJson[k].rateList[_rateList[k][i]] =
-                    _rate[k][_rateList[k][i]];
-                }
-              }
-              for (var i = 0; i < this.ooption[k].length; i++) {
-                if (_rateList[k].indexOf(this.ooption[k][i].name) != -1) {
-                  this.ooption[k][i].value = _rate[k][this.ooption[k][i].name];
-                }
-              }
-            } else {
-              _rate[k] = [];
-              _rateList[k] = [];
-            }
-
-            for (var i = 0; i < worksDetail.length; i++) {
-              if (
-                res.data[0][k].stage == worksDetail[i].stage &&
-                res.data[0][k].task == worksDetail[i].task
-              ) {
-                workJson[k].img.push({ src: worksDetail[i].content, id: i });
-              }
-            }
-            for (var i = 0; i < askInfo.length; i++) {
-              if (
-                res.data[0][k].stage == askInfo[i].stage &&
-                res.data[0][k].task == askInfo[i].task
-              ) {
-                const element = askInfo[i];
-                let a = JSON.parse(element.content)[0];
-                let b = a.anwer.split(",");
-                let c = [];
-                for (var j = 0; j < b.length; j++) {
-                  c.push(parseInt(b[j]));
-                }
-                a.askJson.radio = c;
-                a.askJson.time = element.time;
-                workJson[k].askInfo.push(a.askJson);
-              }
-            }
-
-            for (var i = 0; i < pptInfo.length; i++) {
-              if (
-                res.data[0][k].stage == pptInfo[i].stage &&
-                res.data[0][k].task == pptInfo[i].task
-              ) {
-                var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
-                if (
-                  a.indexOf(
-                    pptInfo[i].content
-                      .split(".")
-                    [
-                      pptInfo[i].content.split(".").length - 1
-                    ].toLocaleUpperCase()
-                  ) != -1
-                ) {
-                  var a =
-                    "https://view.officeapps.live.com/op/view.aspx?src=" +
-                    pptInfo[i].content;
-                  workJson[k].wpptInfo.push(a);
-                  this.showPDF = false;
-                } else if (
-                  pptInfo[i].content
-                    .split(".")
-                  [
-                    pptInfo[i].content.split(".").length - 1
-                  ].toLocaleUpperCase() == "PDF"
-                ) {
-                  workJson[k].wpptInfo.push(pptInfo[i].content);
-                  this.showPDF = true;
-                }
-              }
-            }
-
-            for (var i = 0; i < answerInfo.length; i++) {
-              if (
-                res.data[0][k].stage == answerInfo[i].stage &&
-                res.data[0][k].task == answerInfo[i].task
-              ) {
-                const element = answerInfo[i];
-                workJson[k].answerInfo.push(JSON.parse(element.content)[0]);
-              }
-            }
-          }
-
-          this.worksDetail = workJson;
-
-          this.courseDetail = res.data[0][0];
-
-          this.$forceUpdate;
-          this.dialogVisible3 = true;
-          setTimeout(() => {
-            for (var p = 0; p < res.data[0].length; p++) {
-              if (!this.ooption[p]) {
-                this.chartObj[p] = null;
-                continue
-              }
-              var _ooption = JSON.parse(JSON.stringify(this.ooption[p]));
-              var _option = JSON.parse(JSON.stringify(this.radarOption));
-              _option.radar.indicator = [];
-              _option.series[0].data[0].value = [];
-              for (var i = 0; i < _ooption.length; i++) {
-                _option.radar.indicator.push({
-                  name: _ooption[i].name,
-                  max: 5,
-                });
-                _option.series[0].data[0].value.push(_ooption[i].value);
-              }
-              console.log(_option);
-              this.setChart(_option, p);
-            }
-          }, 0);
-
-          let _dyList = JSON.parse(JSON.stringify(this.dyList));
-          let _dyList2 = [];
-          let _dyList3 = [];
-          for (var c = 0; c < _dyList.length; c++) {
-            _dyList[c].taskList = [];
-            _dyList2.push(_dyList[c]);
-          }
-          _dyList = JSON.parse(JSON.stringify(this.dyList));
-          for (var c = 0; c < workJson.length; c++) {
-            let _stage = workJson[c].stagetask.split("-")[0];
-            let _task = workJson[c].stagetask.split("-")[1];
-            _dyList2[_stage].taskList.push(_dyList[_stage].taskList[_task]);
-            _dyList2[_stage].taskList;
-          }
-          for (var c = 0; c < _dyList2.length; c++) {
-            if (_dyList2[c].taskList.length) {
-              _dyList2[c].isOpen = c === 0 ? true : false;
-              _dyList3.push(_dyList2[c]);
-            }
-          }
-          this.dyList2 = _dyList3;
-          this.stageIndex = this.dyList2[0].id;
-          this.taskCount = this.dyList2[0].taskList[0].id;
-          this.navId =
-            this.dyList2[0].id + "-" + this.dyList2[0].taskList[0].id;
-          // this.sInfo = res.data[0][0];
-          // this.chapInfo = JSON.parse(res.data[0][0].chapters);
-          // var chapters = JSON.parse(res.data[0][0].chapters);
-          // var worksDetail = res.data[1];
-          // // var askArray = res.data[2];
-          // this.scopeId = res.data[2].length ? res.data[2][0].id : this.sInfo.id;
-          // var askInfo = res.data[3];
-          // var answerInfo = res.data[4];
-          // var workJson = {
-          //   img: [],
-          //   imgIndex: 0,
-          //   eList: [],
-          //   rateList: {},
-          //   askInfo: [],
-          //   answerInfo: [],
-          // };
-          // var eList =
-          //   chapters[this.sInfo.stage].chapterInfo[0].taskJson[this.sInfo.task]
-          //     .eList;
-          // var _ooption = [];
-          // if (eList) {
-          //   workJson.eList = eList;
-          //   for (var i = 0; i < eList.length; i++) {
-          //     _ooption.push({ value: 0, name: eList[i].value });
-          //     workJson.rateList[eList[i].value] = 0;
-          //   }
-          //   workJson.rateList.content = "";
-          //   this.ooption = _ooption;
-          // } else {
-          //   workJson.eList = [
-          //     { value: "意识能力", detail: "", score: 5 },
-          //     { value: "科学探究能力", detail: "", score: 5 },
-          //     { value: "实践创新能力", detail: "", score: 5 },
-          //     { value: "学习反思能力", detail: "", score: 5 },
-          //     { value: "工程思维能力", detail: "", score: 5 },
-          //   ];
-          //   for (var i = 0; i < workJson.eList.length; i++) {
-          //     _ooption.push({ value: 0, name: workJson.eList[i].value });
-          //     workJson.rateList[workJson.eList[i].value] = 0;
-          //   }
-          //   workJson.rateList.content = "";
-          //   this.ooption = [
-          //     { value: 0, name: "意识能力" },
-          //     { value: 0, name: "科学探究能力" },
-          //     { value: 0, name: "实践创新能力" },
-          //     { value: 0, name: "学习反思能力" },
-          //     { value: 0, name: "工程思维能力" },
-          //   ];
-          // }
-          // if (this.sInfo.rate) {
-          //   var _rate = JSON.parse(this.sInfo.rate);
-          //   var _rateList = Object.keys(JSON.parse(this.sInfo.rate));
-          //   for (var i = 0; i < _rateList.length; i++) {
-          //     var _c = Object.keys(workJson.rateList);
-          //     if (_c.indexOf(_rateList[i]) != -1) {
-          //       workJson.rateList[_rateList[i]] = _rate[_rateList[i]];
-          //     }
-          //   }
-          //   for (var i = 0; i < this.ooption.length; i++) {
-          //     if (_rateList.indexOf(this.ooption[i].name) != -1) {
-          //       this.ooption[i].value = _rate[this.ooption[i].name];
-          //     }
-          //   }
-          // }
-
-          // for (var i = 0; i < worksDetail.length; i++) {
-          //   workJson.img.push({ src: worksDetail[i].content, id: i });
-          // }
-          // for (var i = 0; i < askInfo.length; i++) {
-          //   const element = askInfo[i];
-          //   let a = JSON.parse(element.content)[0];
-          //   let b = a.anwer.split(",");
-          //   let c = [];
-          //   for (var j = 0; j < b.length; j++) {
-          //     c.push(parseInt(b[j]));
-          //   }
-          //   a.askJson.radio = c;
-          //   a.askJson.time = element.time;
-          //   workJson.askInfo.push(a.askJson);
-          // }
-
-          // for (var i = 0; i < answerInfo.length; i++) {
-          //   const element = answerInfo[i];
-          //   workJson.answerInfo.push(JSON.parse(element.content)[0]);
-          // }
-
-          // this.worksDetail = workJson;
-
-          // this.courseDetail = res.data[0][0];
-
-          // this.$forceUpdate;
-          // this.dialogVisible3 = true;
-
-          // setTimeout(() => {
-          //   var _ooption = JSON.parse(JSON.stringify(this.ooption));
-          //   var _option = this.radarOption;
-          //   _option.radar.indicator = [];
-          //   _option.series[0].data[0].value = [];
-          //   for (var i = 0; i < _ooption.length; i++) {
-          //     _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-          //     _option.series[0].data[0].value.push(_ooption[i].value);
-          //   }
-          //   console.log(_option);
-          //   this.setChart(_option);
-
-          // }, 0);
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    checkAsk(askJson) {
-      this.askJson = askJson;
-      this.dialogVisible4 = true;
-    },
-    setChart(option, k) {
-      let _this = this;
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        console.log(_this.option);
-
-        const chartObj = _this.$echarts.init(
-          //劳动课程
-          // _this.$el.querySelector("#charts_canvas")
-          document.getElementsByClassName("charts_canvas")[k]
-        );
-        // 初始化雷达图
-        _this.chartObj[k] = chartObj;
-        _this.chartObj[k].setOption(option);
-      });
-    },
-    giveScore() {
-      this.rateList = this.chapInfo[this.publicIndex].rate;
-      this.dialogVisible2 = true;
-    },
-    openFile(f) {
-      this.pptImgUrl = f;
-      this.dialogVisible6 = true;
-    },
-    //获取班级列表
-    getClass() {
-      this.isLoading = true;
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectClassBySchool", params)
-        .then((res) => {
-          this.isLoading = false;
-          this.grade = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    //获取分组分类
-    getGroup() {
-      let params = {};
-      this.ajax
-        .get(this.$store.state.api + "getGroup", params)
-        .then((res) => {
-          this.subjectJuri = res.data[0];
-          this.projectJuri = res.data[0];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    searchWork1() {
-      this.page = 1;
-      this.chooseTask = "";
-      this.getWorks();
-    },
-    searchWork2() {
-      this.page = 1;
-      this.getWorks();
-    },
-    fullTools() {
-      this.full = !this.full;
-    },
-    //获取作业
-    getWorks() {
-      this.isLoading = true;
-      var mr = this.mr;
-      let params = {
-        cid: this.id,
-        uname: this.uname,
-        stage: this.chooseDy,
-        task: this.chooseTask,
-        page: this.page,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseWorks3", params)
-        .then((res) => {
-          this.isLoading = false;
-          this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
-          this.tableData = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    getCourseDetail() {
-      let params = {
-        cid: this.cid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseWorksReport", params)
-        .then((res) => {
-          this.course = res.data[0][0];
-          var dyJSON = JSON.parse(res.data[0][0].chapters);
-          let dyList = [];
-          for (var i = 0; i < dyJSON.length; i++) {
-            dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
-            var a = dyJSON[i].chapterInfo[0].taskJson;
-            for (var j = 0; j < a.length; j++) {
-              dyList[i].taskList.push({ name: a[j].task, id: j });
-            }
-          }
-          this.dyList = dyList;
-          this.userAarray = res.data[1];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    // getCourseDetail() {
-    //   const loading = this.$loading.service({
-    //     background: "rgba(255, 255, 255, 0.7)",
-    //     target: document.querySelector(".student_table"),
-    //   });
-    //   console.log(this.id);
-    //   let params = {
-    //     courseId: this.id,
-    //   };
-    //   this.ajax
-    //     .get(this.$store.state.api + "selectCourseDetail", params)
-    //     .then((res) => {
-    //       loading.close();
-    //       // this.chapInfo = JSON.parse(res.data[0][0].chapters);
-    //       var dyJSON = JSON.parse(res.data[0][0].chapters);
-    //       let dyList = [];
-    //       for (var i = 0; i < dyJSON.length; i++) {
-    //         dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
-    //         var a = dyJSON[i].chapterInfo[0].taskJson;
-    //         for (var j = 0; j < a.length; j++) {
-    //           dyList[i].taskList.push({ name: a[j].task, id: j });
-    //         }
-    //       }
-    //       console.log(dyList);
-    //       this.dyList = dyList;
-    //       // var dyJSON = JSON.parse()
-    //     })
-    //     .catch((err) => {
-    //       loading.close();
-    //       console.error(err);
-    //     });
-    // },
-    handlePictureCardPreview(url) {
-      this.dialogImageUrl = url;
-      this.pictureDialog = true;
-    },
-    updatePj() {
-      for (var i = 0; i < this.worksDetail.length; i++) {
-        if (!this.worksDetail[i].eList.length) {
-          continue
-        }
-        this.updateWorks(
-          this.worksDetail[i].scopeId,
-          this.worksDetail[i].rateList,
-          i
-        );
-      }
-    },
-    getStar(i) {
-      const k = i;
-      var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-      var _rate = this.worksDetail[i].rateList;
-      var _rateList = Object.keys(this.worksDetail[i].rateList);
-      for (var i = 0; i < _ooption.length; i++) {
-        if (_rateList.indexOf(_ooption[i].name) != -1) {
-          _ooption[i].value = _rate[_ooption[i].name];
-        }
-      }
-      // var _option = JSON.parse(JSON.stringify(this.radarOption));
-      var _option = this.radarOption;
-      _option.radar.indicator = [];
-      _option.series[0].data[0].value = [];
-      for (var i = 0; i < _ooption.length; i++) {
-        _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-        _option.series[0].data[0].value.push(_ooption[i].value);
-      }
-      if (this.chartObj && this.chartObj[k]) {
-        // _option.series[0].data = _ooption;
-        this.chartObj[k].setOption(_option);
-      } else {
-        this.setChart(_ooption);
-      }
-    },
-    updateWorks(scopeId, rateList, i) {
-      let params = {
-        rate: rateList,
-        tuid: this.userid,
-        id: scopeId,
-      };
-      const k = i;
-      this.ajax
-        .get(this.$store.state.api + "updateWorks", params)
-        .then((res) => {
-          var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-          // var _option = JSON.parse(JSON.stringify(this.option));
-
-          var _rate = rateList;
-          var _rateList = Object.keys(rateList);
-          for (var i = 0; i < _ooption.length; i++) {
-            if (_rateList.indexOf(_ooption[i].name) != -1) {
-              _ooption[i].value = _rate[_ooption[i].name];
-            }
-          }
-
-          // var _option = JSON.parse(JSON.stringify(this.radarOption));
-          var _option = this.radarOption;
-          _option.radar.indicator = [];
-          _option.series[0].data[0].value = [];
-          for (var i = 0; i < _ooption.length; i++) {
-            _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-            _option.series[0].data[0].value.push(_ooption[i].value);
-          }
-          console.log(_option);
-          if (this.chartObj) {
-            // _option.series[0].data = _ooption;
-            this.chartObj[k].setOption(_option);
-          } else {
-            this.setChart(_ooption);
-          }
-          // this.uploadBoolean = false;
-          // this.dialogVisible2 = false;
-          let _k = 0
-          for (var i = 0; i < this.worksDetail.length; i++) {
-            if (this.worksDetail[i].eList.length) {
-              _k = i
-            }
-          }
-          if (k == _k) {
-            this.$message({
-              message: "评价成功",
-              type: "success",
-            });
-          }
-        })
-        .catch((err) => {
-          this.$message.error("评价失败");
-          console.error(err);
-        });
-    },
-    switchVideo(media, index) {
-      this.playerO = {};
-      this.playerOptions.poster = "";
-      this.playerOptions.sources[0].src = media;
-      this.playerO = this.playerOptions;
-    },
-    onPlayerPlay() { },
-    // this.$store.commit("update", ["userInfo", userInfo]);
-    lookWork2(id, uid, stage, task) {
-      // this.scopeId = id;
-      let params = {
-        uid: uid,
-        cid: this.id,
-        stage: stage,
-        task: task,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail2", params)
-        .then((res) => {
-          this.sInfo = res.data[0][0];
-          this.chapInfo = JSON.parse(res.data[0][0].chapters);
-          var chapters = JSON.parse(res.data[0][0].chapters);
-          var worksDetail = res.data[1];
-          // var askArray = res.data[2];
-          this.scopeId = res.data[2].length ? res.data[2][0].id : this.sInfo.id;
-          var askInfo = res.data[3];
-          var answerInfo = res.data[4];
-          var linkInfo = res.data[5];
-          var workJson = {
-            img: [],
-            imgIndex: 0,
-            eList: [],
-            rateList: {},
-            wpptInfo: [],
-            askInfo: [],
-            answerInfo: [],
-          };
-          var eList =
-            chapters[this.sInfo.stage].chapterInfo[0].taskJson[this.sInfo.task]
-              .eList;
-          //           ooption: [
-          //   { value: 0, name: "意识能力" },
-          //   { value: 0, name: "科学探究能力" },
-          //   { value: 0, name: "实践创新能力" },
-          //   { value: 0, name: "学习反思能力" },
-          //   { value: 0, name: "工程思维能力" },
-          // ],
-          var _ooption = [];
-          if (eList) {
-            workJson.eList = eList;
-            for (var i = 0; i < eList.length; i++) {
-              _ooption.push({ value: 0, name: eList[i].value });
-              workJson.rateList[eList[i].value] = 0;
-            }
-            workJson.rateList.content = "";
-            this.ooption = _ooption;
-          } else {
-            workJson.eList = [
-              { value: "意识能力", detail: "", score: 5 },
-              { value: "科学探究能力", detail: "", score: 5 },
-              { value: "实践创新能力", detail: "", score: 5 },
-              { value: "学习反思能力", detail: "", score: 5 },
-              { value: "工程思维能力", detail: "", score: 5 },
-            ];
-            for (var i = 0; i < workJson.eList.length; i++) {
-              _ooption.push({ value: 0, name: workJson.eList[i].value });
-              workJson.rateList[workJson.eList[i].value] = 0;
-            }
-            workJson.rateList.content = "";
-            this.ooption = [
-              { value: 0, name: "意识能力" },
-              { value: 0, name: "科学探究能力" },
-              { value: 0, name: "实践创新能力" },
-              { value: 0, name: "学习反思能力" },
-              { value: 0, name: "工程思维能力" },
-            ];
-          }
-          if (this.sInfo.rate) {
-            var _rate = JSON.parse(this.sInfo.rate);
-            var _rateList = Object.keys(JSON.parse(this.sInfo.rate));
-            for (var i = 0; i < _rateList.length; i++) {
-              var _c = Object.keys(workJson.rateList);
-              if (_c.indexOf(_rateList[i]) != -1) {
-                workJson.rateList[_rateList[i]] = _rate[_rateList[i]];
-              }
-            }
-            for (var i = 0; i < this.ooption.length; i++) {
-              if (_rateList.indexOf(this.ooption[i].name) != -1) {
-                this.ooption[i].value = _rate[this.ooption[i].name];
-              }
-            }
-          }
-
-          for (var i = 0; i < worksDetail.length; i++) {
-            workJson.img.push({ src: worksDetail[i].content, id: i });
-          }
-          for (var i = 0; i < askInfo.length; i++) {
-            const element = askInfo[i];
-            let a = JSON.parse(element.content)[0];
-            let b = a.anwer.split(",");
-            let c = [];
-            for (var j = 0; j < b.length; j++) {
-              c.push(parseInt(b[j]));
-            }
-            a.askJson.radio = c;
-            a.askJson.time = element.time;
-            workJson.askInfo.push(a.askJson);
-          }
-
-          for (var i = 0; i < answerInfo.length; i++) {
-            const element = answerInfo[i];
-            workJson.answerInfo.push(JSON.parse(element.content)[0]);
-          }
-
-          this.worksDetail = workJson;
-
-          this.courseDetail = res.data[0][0];
-
-          this.$forceUpdate;
-
-          var _course = `<h1>${this.sInfo.course}</h1>`;
-          var _title =
-            "<h2>" +
-            "第" +
-            (this.sInfo.stage + 1) +
-            "阶段 " +
-            this.dyList[this.sInfo.stage].name +
-            "</h2>";
-          var _subtitle =
-            "<h3>" +
-            "任务" +
-            (this.sInfo.task + 1) +
-            " " +
-            this.dyList[this.sInfo.stage].taskList[this.sInfo.task].name +
-            "-" +
-            this.sInfo.sName +
-            "</h3>";
-          var _img = "";
-          if (workJson.img.length > 0) {
-            for (var i = 0; i < workJson.img.length; i++) {
-              // _img += `<div style="margin-top:10px"><div>图片${
-              //   i + 1
-              // }:<a href='${workJson.img[i].src}'>${
-              //   workJson.img[i].src
-              // }</a></div>`;
-              _img += `<div style="margin-top:10px"><div>图片${i + 1
-                }</div><img style="max-width:500px" src="${workJson.img[i].src
-                }"/></div>`;
-            }
-          }
-
-          var _ask = "";
-          if (workJson.askInfo.length > 0) {
-            var _ask = "<h3>选择题</h3>";
-            for (var i = 0; i < workJson.askInfo.length; i++) {
-              var _div = document.createElement("div");
-              _div.innerHTML = `<h4>标题:${workJson.askInfo[i].askTitle}</h4>`;
-              for (var j = 0; j < workJson.askInfo[i].askJson.length; j++) {
-                var _div2 = document.createElement("div");
-                _div2.innerHTML = `<h5>第${j + 1}题:${workJson.askInfo[i].askJson[j].askstitle
-                  }  选择:${workJson.askInfo[i].radio[j] + 1}</h5> `;
-                var _div3 = document.createElement("div");
-                for (
-                  var z = 0;
-                  z < workJson.askInfo[i].askJson[j].checkList.length;
-                  z++
-                ) {
-                  _div3.innerHTML += `<span style="margin-right:5px">${z + 1}.${workJson.askInfo[i].askJson[j].checkList[z]
-                    }</span>`;
-                }
-                _div2.innerHTML += `<div>${_div3.innerHTML}</div>`;
-                _div.innerHTML += `<div>${_div2.innerHTML}</div>`;
-              }
-              _ask += `<div>${_div.innerHTML}</div>`;
-            }
-          }
-
-          var _answer = "";
-          if (workJson.answerInfo.length > 0) {
-            var _answer = "<h3>问答</h3>";
-            for (var i = 0; i < workJson.answerInfo.length; i++) {
-              var _div = document.createElement("div");
-              _div.innerHTML = `<h4>问答:${workJson.answerInfo[i].answerTitle}</h4>`;
-              _div.innerHTML += `<div>${workJson.answerInfo[i].answer}</div>`;
-              _answer += `<div>${_div.innerHTML}</div>`;
-            }
-          }
-
-          var _link = "";
-          if (linkInfo.length > 0) {
-            for (var i = 0; i < linkInfo.length; i++) {
-              _link += `<div style="margin-top:10px"><a href='${linkInfo[i].content}'>${linkInfo[i].content}</a></div>`;
-            }
-          }
-
-          var _html =
-            _course + _title + _subtitle + _img + _ask + _answer + _link;
-          this.generate(_html);
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    isOpen(s) {
-      // this.stageIndex = s;
-      this.dyList2[s].isOpen = !this.dyList2[s].isOpen;
-    },
-    openTask(s, i) {
-      var a = s + "-" + i;
-      var b = document.getElementById(a);
-      var d = b.getAttribute("scrollindex");
-      var c = document.getElementsByClassName("shuBox")[0];
-      c.scrollTop = parseInt(d) * 375;
-      this.stageIndex = s;
-      this.taskCount = i;
-      this.navId = a;
-    },
-    async generate(a) {
-      // 将html文件中需要用到的数据挂载到store上
-      this.$store.commit("update", ["report", a]);
-      console.log(this.$store.state.report);
-      const content = `<!DOCTYPE html>
-      <html lang="en">
-      <head>
-          <meta charset="UTF-8">
-          <meta http-equiv="X-UA-Compatible" content="IE=edge">
-          <meta name="viewport" content="width=device-width, initial-scale=1.0">
-          <title>报告</title>
-      </head>
-      <body>
-      ${this.$store.state.report}
-      </body>
-      </html>`;
-      // debugger
-      // 生成报告
-      const link = document.createElement("a");
-      let dname = this.sInfo.course + "-" + this.sInfo.sName + ".html";
-      // link.download = "报告.html"; // 文件名
-      link.download = dname; // 文件名
-      link.style.display = "none";
-      // 创建文件流
-      // 创建bolb实例时,内容一定要放在[]中
-      const blob = new Blob([content], {
-        type: "text/plain;charset='utf-8'",
-      });
-      link.href = window.URL.createObjectURL(blob);
-      document.body.appendChild(link);
-      link.click();
-      document.body.removeChild(link);
-      // saveAs(
-      //   htmlDocx.asBlob(content, {
-      //     orientation: "landscape", //跨域设置
-      //   }),
-      //   //文件名
-      //   "报告.doc"
-      // );
-    },
-  },
-  created() {
-    this.page = 1;
-    this.getCourseDetail();
-    this.getClass();
-    this.getGroup();
-    this.getWorks();
-  },
-};
-</script>
-
-<style scoped>
-.pb_head>span:nth-child(2) {
-  font-size: 16px;
-  margin-left: 80px;
-  color: #ab582f;
-}
-
-.pb_head {
-  margin: 0 !important;
-  width: 100% !important;
-}
-
-.student_page {
-  margin-top: 10px;
-}
-
-.student_head {
-  margin-top: 10px;
-  padding-bottom: 15px;
-}
-
-.student_search {
-  display: flex;
-}
-
-.student_search>div:nth-child(1) {
-  line-height: 35px;
-  font-size: 14px;
-}
-
-.student_search>>>.el-input__inner {
-  width: 190px;
-  height: 35px;
-  margin-left: 10px;
-}
-
-.student_table>>>.el-table--border td {
-  border-right: 0px !important;
-}
-
-.add_work>>>.el-dialog__header {
-  padding: 20px 20px 10px;
-  text-align: center;
-  background: #32455b;
-}
-
-.add_work>>>.el-dialog__title {
-  font-size: 14px !important;
-  color: #fff !important;
-}
-
-.add_work>>>.el-dialog__headerbtn {
-  font-size: 20px !important;
-  top: 5px !important;
-  right: 8px !important;
-}
-
-.add_work>>>.el-form-item__label {
-  margin-left: 65px;
-}
-
-.add_work>>>.el-form-item {
-  display: flex;
-}
-
-.add_work>>>.el-form-item__content {
-  margin: 0 !important;
-}
-
-.add_work>>>.el-dialog__footer {
-  text-align: center !important;
-}
-
-.add_work>>>.el-dialog {
-  min-width: 650px !important;
-  width: 1080px;
-}
-
-.add_work>>>.el-dialog__body {
-  background: #fff;
-  height: 660px;
-  overflow: auto;
-}
-
-.header-title {
-  display: flex;
-}
-
-.logoImg {
-  width: 30px;
-}
-
-.logoImg>img {
-  width: 100%;
-  height: 100%;
-}
-
-.title_add_student {
-  margin: 0 auto;
-  color: #fff;
-}
-
-.first {
-  margin-top: 25px;
-  border-bottom: 1px solid #c5c5c5;
-}
-
-.one_top {
-  display: flex;
-  justify-content: space-between;
-}
-
-.one_top>div:nth-child(1) {
-  color: #2490bf;
-  font-size: 16px;
-}
-
-.one_top>button {
-  width: 100px;
-  background: #24a0a4;
-  height: 30px;
-  color: #e0e0e0;
-  font-size: 13px;
-  padding: 0 !important;
-}
-
-.work_Img {
-  width: 150px;
-  margin: 10px 0;
-}
-
-.assess_Img {
-  width: 400px;
-  margin: 0 auto;
-  padding: 15px 0;
-}
-
-.work_Img>img,
-.assess_Img>img {
-  width: 100%;
-  height: 100%;
-}
-
-.work_input {
-  border: 1px solid;
-  width: 135px;
-  height: 20px;
-  line-height: 20px;
-  font-size: 13px;
-  padding: 5px;
-}
-
-.poetry {
-  margin: 10px 0 15px 0;
-}
-
-.assess {
-  background: #169bd5 !important;
-}
-
-.assess_top {
-  border-bottom: 2px solid #eee;
-  padding-bottom: 10px;
-}
-
-.assess_top>div:nth-child(1) {
-  color: #2490bf;
-  font-size: 16px;
-}
-
-.student_Answer {
-  display: flex;
-  margin: 5px 10px;
-  /* padding-bottom: 25px; */
-}
-
-.workName {
-  font-size: 18px;
-  font-weight: bold;
-  margin: 5px 10px;
-}
-
-.toux {
-  width: 35px;
-  /* margin: auto 0; */
-  height: 35px;
-}
-
-.toux>img {
-  width: 100%;
-  height: 100%;
-}
-
-.nav {
-  display: flex;
-  flex-wrap: wrap;
-  margin-top: 10px;
-  flex-direction: column;
-}
-
-.studentName {
-  margin-left: 10px;
-  font-size: 13px;
-}
-
-.studentAnswer {
-  font-size: 12px;
-  margin: 5px 0 0 10px;
-  height: 42px;
-  overflow: auto;
-}
-
-.comment {
-  /* margin: 20px 0 0 10px;
-  overflow: auto;
-  height: 75%;
-  max-height: 330px; */
-  overflow: auto;
-  /* height: 290px; */
-  height: 525px;
-  background: #fff;
-  border-radius: 5px;
-  padding: 10px;
-  box-sizing: border-box;
-}
-
-.comment_body {
-  height: calc(100% - 25px);
-  overflow: auto;
-}
-
-.comment>.comment_title {
-  font-size: 18px;
-}
-
-.comment>.comment_title>span {
-  font-size: 14px;
-}
-
-.other_Answer {
-  display: flex;
-  margin: 5px 10px;
-  padding: 15px 0;
-  justify-content: center;
-}
-
-.nav {
-  margin-left: 5px;
-  width: 80%;
-}
-
-.nameAndTime {
-  display: flex;
-}
-
-.otherName {
-  font-weight: bold;
-  margin-left: 10px;
-  font-size: 13px;
-}
-
-.time {
-  margin-left: 25px;
-  font-size: 12px;
-  margin-top: 3px;
-}
-
-.otherAnswer {
-  width: 80%;
-  word-wrap: break-word;
-  word-break: break-all;
-  overflow: hidden;
-  font-size: 12px;
-  margin: 5px 0 0 10px;
-}
-
-.doingAssess {
-  margin: 0 auto;
-  width: 300px;
-  background: #169bd5;
-  height: 35px;
-  line-height: 35px;
-  border-radius: 3px;
-  font-size: 13px;
-  text-align: center;
-  color: #fff;
-  margin-top: 30px;
-  cursor: pointer;
-}
-
-.score_top {
-  display: flex;
-  margin-bottom: 10px;
-}
-
-.userTou {
-  width: 50px;
-}
-
-.userTou>img {
-  width: 100%;
-  height: 100%;
-}
-
-.score_user_name {
-  line-height: 53px;
-  margin-left: 15px;
-}
-
-.course_top {
-  display: flex;
-  align-items: center;
-}
-
-.course_top>div:nth-child(1) {
-  line-height: 25px;
-}
-
-.course_top>div:nth-child(2) {
-  border: 1px solid #ccc;
-  width: 250px;
-  text-align: center;
-  height: 25px;
-  line-height: 25px;
-  margin-left: 30px;
-}
-
-.sd_score {
-  font-size: 15px;
-  background: #fff;
-  height: 100%;
-  padding-top: 40px;
-  border-radius: 5px;
-  width: 90%;
-  box-shadow: 2px 2px 5px #909090;
-  overflow: auto;
-}
-
-.sd_score .score_box {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  margin-bottom: 15px;
-  /* margin-left: 30px; */
-}
-
-.sd_score .score_box:last-child {
-  margin-bottom: 0;
-}
-
-.rate_size>>>.el-rate__icon {
-  font-size: 25px;
-}
-
-.rate_size>>>.el-icon-star-off {
-  font-size: 22px;
-}
-
-.sd_score span {
-  width: 130px;
-  text-align: justify;
-  text-align-last: justify;
-  display: block;
-  margin-right: 20px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  font-size: 16px;
-}
-
-.moreSay {
-  margin: 0px 0 5px 20px;
-}
-
-.more_say_input {
-  margin-left: 20px;
-  width: 80%;
-}
-
-.more_say_input>>>.el-input__inner {
-  height: 75px;
-  font-size: 13px;
-  padding: 0 0 0 10px;
-}
-
-.assess_right {
-  width: 200px;
-  background: #82b0ee;
-  color: #fff;
-  text-align: center;
-  height: 30px;
-  line-height: 30px;
-  border-radius: 5px;
-  margin: 0 auto;
-  margin-top: 20px;
-  font-size: 13px;
-  cursor: pointer;
-}
-
-.student_page {
-  margin-top: 10px;
-}
-
-.display {
-  display: none;
-}
-
-.firstTop {
-  background: #fff;
-  display: flex;
-  margin-bottom: 15px;
-  flex-direction: column;
-  align-items: flex-start;
-  height: 90px;
-  padding: 10px 25px;
-  border-radius: 5px;
-  width: 90%;
-  box-shadow: 2px 2px 5px #909090;
-}
-
-.talkScore>>>.el-dialog__body {
-  background: #efefef;
-  margin: 0 !important;
-}
-
-.lastTop {
-  background: #fff;
-  border-radius: 5px;
-  width: 98%;
-  height: 120px;
-  box-shadow: 2px 2px 5px #909090;
-}
-
-.left,
-.right {
-  /* background: #fff; */
-  border-radius: 5px;
-  /* padding: 10px; */
-  box-sizing: border-box;
-}
-
-.left {
-  margin-right: 10px;
-  width: 30%;
-  min-height: 425px;
-}
-
-/* .left .left_top {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  margin-bottom: 15px;
-} */
-.left .left_bottom {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  height: 160px;
-}
-
-.right {
-  width: 20%;
-  background: none;
-  padding: 0;
-}
-
-.courseTitle {
-  font-size: 16px;
-  color: #7c7c7c;
-  width: 100%;
-  margin-bottom: 10px;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.course_t {
-  font-size: 19px;
-  display: flex;
-  align-items: flex-end;
-}
-
-.course_t span:nth-child(2) {
-  font-size: 16px;
-  margin-left: 10px;
-}
-
-.courseTitle span:nth-child(2) {
-  /* font-size: 14px;
-  cursor: pointer; */
-}
-
-.bigImg {
-  margin-top: 10px;
-  /* height: 300px; */
-  height: 150px;
-}
-
-.bigImg>img,
-.thumbnail>div>img {
-  width: 100%;
-  height: 100%;
-  object-fit: contain;
-}
-
-.thumbnail {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  margin: 5px 0 8px;
-  overflow-x: auto;
-  overflow-y: hidden;
-}
-
-.isClick {
-  border: 3px solid #5f89d4;
-  border-radius: 5px;
-}
-
-.thumbnail>div {
-  width: 80px;
-  height: 80px;
-  margin-right: 5px;
-  cursor: pointer;
-  flex-shrink: 0;
-  box-sizing: border-box;
-}
-
-.zyBoxC {
-  background: #ededed;
-  display: flex;
-  align-items: flex-start;
-  justify-content: center;
-  padding: 20px 0px;
-  flex-direction: column;
-  height: calc(100% - 50px);
-}
-
-.zyBox {
-  display: flex;
-  min-width: 600px;
-  width: 600px;
-  position: relative;
-  background: #fff;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  overflow: hidden;
-}
-
-.zyBoxC+.zyBoxC {
-  margin-top: 10px;
-}
-
-.rbButtom {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  background: #06a7ff;
-  width: 100px;
-  height: 30px;
-  border-radius: 5px;
-  text-align: center;
-  color: #fff;
-  line-height: 30px;
-  font-size: 14px;
-  cursor: pointer;
-  right: 10px;
-}
-
-.bigImg>>>.vjs-tech,
-.bigImg>>>.video-js {
-  height: 300px !important;
-}
-
-.el-table>>>.even_row {
-  background-color: #f1f1f1;
-}
-
-.data_body {
-  height: 200px;
-  display: flex;
-  position: relative;
-  border-radius: 5px;
-  box-sizing: border-box;
-  width: 100%;
-  background: #fff;
-}
-
-.data_body .title {
-  position: absolute;
-  top: 10px;
-  left: 10px;
-}
-
-.dialog_diy>>>.el-dialog__header {
-  padding: 9px 20px 10px;
-  background: #32455b !important;
-}
-
-.dialog_diy>>>.el-dialog__title {
-  color: #fff;
-  font-size: 15px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn {
-  top: 14px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__body,
-.dialog_diy>>>.el-dialog__footer {
-  background: #fafafa;
-}
-
-.max_diy>>>.el-dialog {
-  /* max-width: 1200px; */
-  max-width: 1300px;
-  /* height:800px */
-}
-
-.max_diy>>>.el-dialog__body {
-  height: 800px;
-}
-
-.dialog_diy2>>>.el-dialog__header {
-  padding: 9px 20px 10px;
-  background: #32455b !important;
-}
-
-.dialog_diy2>>>.el-dialog__title {
-  color: #fff;
-  font-size: 15px;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn {
-  top: 12px;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-
-.dialog_diy2>>>.el-dialog__body,
-.dialog_diy2>>>.el-dialog__footer {
-  background: #ededed;
-  padding: 15px 20px;
-}
-
-.a_addBox2 {
-  margin: 10px 0;
-  background: #fff;
-  padding: 15px;
-}
-
-.a_addBox {
-  margin: 10px 0;
-  background: #fff;
-  padding: 15px;
-  /* max-height: 400px; */
-  max-height: 160px;
-  overflow: auto;
-}
-
-.a_add_box {
-  border-bottom: 2px solid #eee;
-  padding-bottom: 10px;
-}
-
-.a_add_head {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  margin: 10px 0;
-  font-size: 18px;
-}
-
-.a_add_head .a_add_head_input {
-  width: 300px;
-}
-
-.a_add_head .a_add_head_div {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.a_add_body {
-  display: flex;
-  align-items: center;
-}
-
-.a_add_input {
-  display: flex;
-  align-items: center;
-  flex-wrap: wrap;
-  /* flex-direction: column; */
-  /* width: 100%; */
-}
-
-.a_add_input>>>el-radio-group {
-  margin: 10px 0;
-}
-
-.a_add_input>>>.el-radio-group {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-}
-
-.redioStyle>>>.el-radio__label {
-  font-size: 18px;
-}
-
-.task_title {
-  font-size: 18px;
-  font-weight: 700;
-}
-
-.ask_Answer {
-  /* margin-top: 10px; */
-}
-
-.ask_Answer_title {
-  font-size: 18px;
-}
-
-.ask_Answer_content {
-  display: flex;
-  justify-content: center;
-  margin: 10px 0;
-}
-
-.answer_body {
-  padding: 10px 0;
-  border-bottom: 1px solid #f5f5f5;
-}
-
-.answer_title {
-  font-size: 15px;
-  font-weight: 700;
-}
-
-.answer_content {
-  margin-top: 5px;
-}
-
-.ask_body {
-  display: flex;
-  font-size: 16px;
-  margin-top: 10px;
-  flex-direction: column;
-  height: 130px;
-  overflow: auto;
-  /* padding: 0 10px; */
-  box-sizing: border-box;
-}
-
-.ask_body div {
-  /* cursor: pointer; */
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.ask_body div .btn {
-  cursor: pointer;
-  color: #fff;
-  background-color: #409eff;
-  text-align: center;
-  font-size: 12px;
-  padding: 6px 12px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  width: 60px;
-}
-
-.ask_body div span:nth-child(1) {
-  max-width: 250px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.ask_body div+div {
-  margin-top: 10px;
-}
-
-.work_nopicture {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  /* height: 350px; */
-  height: 352px;
-}
-
-.student_table>>>.el-table,
-.student_table>>>.el-table__body-wrapper {
-  height: auto !important;
-}
-
-.tx {
-  width: 35px;
-}
-
-.ech {
-  width: 100px;
-}
-
-.tx>img,
-.ech>img {
-  width: 100%;
-  height: 100%;
-}
-
-.txName {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  margin-left: 10px;
-}
-
-.txName>div:nth-child(2) {
-  margin-left: 10px;
-}
-
-.top {
-  display: flex;
-  justify-content: space-between;
-  padding: 15px 0 15px 20px;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  width: 95%;
-}
-
-.jdName>div:nth-child(1) {
-  font-size: 20px;
-  font-weight: bold;
-}
-
-.taskName {
-  font-size: 14px;
-  margin-top: 10px;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-}
-
-.task {
-  background: #49a0f0;
-  color: #fff;
-  width: 50px;
-  height: 22px;
-  border-radius: 5px;
-  text-align: center;
-  line-height: 22px;
-  margin-right: 10px;
-}
-
-.contentBox {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  height: 253px;
-}
-
-.left_top {
-  width: 45%;
-  padding-left: 20px;
-}
-
-.right_top {
-  width: 53%;
-}
-
-.cBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  width: 100%;
-  height: calc(100% - 60px);
-  overflow: auto;
-}
-
-.right_score {
-  min-width: 370px;
-  height: 351px;
-  margin-left: 10px;
-}
-
-.pb_left {
-  width: 20%;
-  margin-right: 10px;
-  background: rgb(255, 255, 255);
-  /* padding-right: 10px; */
-  /* height: 500px; */
-  height: 100%;
-}
-
-.cTitle {
-  background: #205cc6;
-  width: 85%;
-  margin: 10px auto;
-  height: 50px;
-  color: #fff;
-  line-height: 50px;
-  text-align: center;
-  font-size: 20px;
-  font-weight: bold;
-  border-radius: 5px;
-  cursor: pointer;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  padding: 0 10px;
-}
-
-.ml {
-  margin-left: 20px;
-  color: #5b7dba;
-  border-left: 3px solid #5b7dba;
-  padding-left: 5px;
-  font-weight: bold;
-}
-
-.cru_selectBox {
-  width: 100%;
-  margin: 0 auto;
-  overflow: auto;
-  height: calc(100% - 90px);
-  overflow-x: hidden;
-}
-
-.cru_selectBox::-webkit-scrollbar {
-  /*滚动条整体样式*/
-  width: 6px;
-  /*高宽分别对应横竖滚动条的尺寸*/
-  height: 6px;
-}
-
-/*定义滚动条轨道 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-track {
-  border-radius: 10px;
-  background-color: #b8bdc9;
-}
-
-/*定义滑块 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-thumb {
-  border-radius: 10px;
-  -webkit-box-shadow: inset 0 0 6px rgb(96, 125, 184);
-  background-color: #2c5ab3;
-}
-
-.blue_box_one {
-  text-align: center;
-  color: #fff;
-  background-image: linear-gradient(90deg, #477cd7, #65b9fc);
-  border-radius: 7px;
-  margin: 10px auto;
-  cursor: pointer;
-  width: 95%;
-  height: 45px;
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  align-items: center;
-}
-
-.blue_box_one>div:nth-child(1) {
-  line-height: 30px;
-  margin: 0 5px 0 10px;
-  width: 30%;
-  min-width: 70px;
-  border-radius: 4px;
-}
-
-.blue_box_one>div:nth-child(2) {
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  word-break: break-all;
-  width: 70%;
-  text-align: left;
-  margin-right: 10px;
-  max-width: calc(100% - 85px);
-}
-
-.blue_box_one>div:nth-child(2):hover {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.twoChild {
-  width: 95%;
-  margin: 10px auto;
-  border-radius: 5px;
-  background: #f2f2f2;
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  justify-content: flex-start;
-  align-items: flex-start;
-  transition: all 0.5s;
-  overflow: hidden;
-  height: 0;
-  background: #e7f3ff;
-}
-
-.twoChild>div:nth-child(1) {
-  margin-top: 5px;
-}
-
-.navChild {
-  width: 100%;
-  cursor: pointer;
-  margin-bottom: 10px;
-}
-
-.navActive {
-  height: auto;
-}
-
-.navTask {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  align-content: flex-start;
-  height: 40px;
-  justify-content: flex-start;
-  padding: 0 10px;
-  width: 100%;
-  box-sizing: border-box;
-}
-
-.vedioNav {
-  margin: 10px 0 0 15px;
-  border-bottom: 1px solid #d7d7d7;
-  padding-bottom: 5px;
-  background: #96d1ff;
-  width: 55px;
-  min-width: 55px;
-  border-radius: 5px;
-  color: #fff;
-  text-align: center;
-  height: 20px;
-  line-height: 26px;
-  font-size: 14px;
-}
-
-.navTaskname {
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  word-break: break-all;
-  padding-left: 5px;
-}
-
-.allBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  width: 100%;
-  height: 351px;
-  margin-bottom: 20px;
-}
-
-.shuBox {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-  width: 100%;
-  flex-wrap: nowrap;
-  overflow: auto;
-  /* height: 500px; */
-  height: 100%;
-}
-
-.answerbox {
-  display: flex;
-  flex-direction: row;
-  /* align-items: center; */
-  margin-bottom: 20px;
-  font-size: 18px;
-  font-weight: bold;
-}
-
-.answerbox>div:nth-child(2) {
-  margin-left: 15px;
-}
-
-.answerbox1 {
-  display: flex;
-  flex-direction: column;
-  align-items: flex-start;
-  flex-wrap: nowrap;
-  font-size: 16px;
-}
-
-.answerbox1>div:nth-child(2) {
-  margin-top: 10px;
-  width: 265px;
-  max-height: 147px;
-  overflow: auto;
-}
-
-.jdName {
-  width: 100%;
-}
-
-.full_diy>>>.el-dialog {
-  margin: 0 !important;
-  height: 100%;
-}
-
-.full_diy>>>.el-dialog__body {
-  height: calc(100% - 100px);
-}
-
-.openTaskActive {
-  color: #4386e6;
-}
-
-.isClick {
-  background: #4d9def;
-}
-
-.buttonCss {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  justify-content: flex-end;
-  margin: 10px 0;
-}
-
-.fullStyle>>>.el-dialog__body {
-  height: 100% !important;
-  overflow: auto;
-}
-
-.fullStyle>>>.el-dialog,
-.fullStyle {
-  width: 100% !important;
-  max-width: 100% !important;
-  height: 100% !important;
-  margin: 0 !important;
-}
-
-.worksTime {
-  position: absolute;
-  top: 10px;
-  right: 0;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: baseline;
-}
-
-.fullBox {
-  /* overflow: unset !important;
-  height: auto !important; */
-}
-
-.fullZyBox {
-  width: 60% !important;
-}
-
-.rightScoreFullBox {
-  width: 40%;
-}
-</style>

+ 0 - 2780
src/components/pages/components/worksDetail2GM.vue

@@ -1,2780 +0,0 @@
-<template>
-  <div class="pb_content" style="background: unset">
-    <div class="pb_content_body" style="
-        background: #fff;
-        padding: 25px 0 0;
-        box-sizing: border-box;
-        border-radius: 5px;
-      ">
-      <div class="student_head">
-        <!-- <div class="student_search">
-          <div>班级筛选</div>
-          <el-select v-model="sClass" placeholder="请选择班级" @change="searchWork">
-            <el-option label="所有班级" value></el-option>
-            <el-option
-              v-for="(item, index) in grade"
-              :key="index"
-              :label="item.name"
-              :value="item.id"
-            ></el-option>
-          </el-select>
-        </div>-->
-        <!-- chooseDy
-        chooseTask-->
-        <div class="student_search">
-          <div>课程筛选</div>
-          <div style="display: flex; width: 90%">
-            <el-select class="r_select" v-model="uname" placeholder="请选择学生" @change="searchWork2">
-              <el-option label="所有学生" value></el-option>
-              <el-option v-for="item in userAarray" :key="item.userid" :label="item.username" :value="item.userid">
-              </el-option>
-            </el-select>
-            <el-select v-model="chooseDy" placeholder="请选择阶段" @change="searchWork1">
-              <el-option label="所有阶段" value></el-option>
-              <el-option v-for="(item, index) in dyList" :key="index" :label="item.name" :value="item.id"></el-option>
-            </el-select>
-            <el-select v-model="chooseTask" placeholder="请选择任务" @change="searchWork2">
-              <el-option label="所有任务" value></el-option>
-              <el-option v-for="(item, index) in dyList[chooseDy]
-              ? dyList[chooseDy].taskList
-              : []" :key="index" :label="item.name" :value="item.id"></el-option>
-            </el-select>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div class="pb_content_body">
-      <div class="student_table">
-        <el-table ref="table" :data="tableData" border :height="tableHeight" :fit="true" v-loading="isLoading"
-          style="width: 100%" :header-cell-style="{ background: '#f1f1f1' }" :row-class-name="tableRowClassName" stripe>
-          <el-table-column prop="sName" label="姓名" min-width="15" align="center"></el-table-column>
-          <el-table-column prop="class" label="班级" min-width="20" align="center">
-            <template slot-scope="scope">
-              <div>{{ scope.row.class ? scope.row.class : "暂无班级" }}</div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="course" label="项目" min-width="20" align="center" show-overflow-tooltip>
-          </el-table-column>
-          <el-table-column prop="course" label="阶段" min-width="20" align="center" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <div>
-                {{ dyList.length > 0 ? dyList[scope.row.stage].name : "" }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="course" label="任务" min-width="20" align="center" show-overflow-tooltip>
-            <template slot-scope="scope">
-              <div>
-                {{
-                dyList.length > 0
-                ? dyList[scope.row.stage].taskList[scope.row.task]
-                ? dyList[scope.row.stage].taskList[scope.row.task].name
-                : ""
-                : ""
-                }}
-              </div>
-            </template>
-          </el-table-column>
-          <el-table-column prop="time" label="时间" width="100px" align="center"></el-table-column>
-          <el-table-column label="操作" width="200px">
-            <template slot-scope="scope">
-              <el-button type="primary" size="small" class="btnClassGM" @click="
-                lookWork(
-                  scope.row.id,
-                  scope.row.userid,
-                  scope.row.stage,
-                  scope.row.task
-                )
-              ">查看作业</el-button>
-              <!-- <el-button
-                type="primary"
-                size="small"
-                @click="lookData(scope.row.userid)"
-                >生成报告</el-button
-              >-->
-              <el-button  class="btnClassGM" type="primary" size="small" @click="
-                lookWork2(
-                  scope.row.id,
-                  scope.row.userid,
-                  scope.row.stage,
-                  scope.row.task
-                )
-              ">导出报告</el-button>
-              <!-- <el-button
-                class="de_button"
-                type="primary"
-                size="small"
-                @click="deleteWork(scope.row.id)"
-              >删除</el-button>-->
-            </template>
-          </el-table-column>
-        </el-table>
-        <el-dialog title="查看作业" :visible.sync="dialogVisible3" :append-to-body="true" :before-close="handleClose"
-          width="100%" class="dialog_diy2 max_diy" :class="{ fullStyle: full }">
-          <div slot="title" class="header-title">
-            <div style="color: #fff">查看作业</div>
-            <div style="position: absolute; top: 14px; right: 50px">
-              <img src="../../../assets/full.png" style="height: 14px; cursor: pointer" alt="" @click="fullTools" />
-            </div>
-          </div>
-          <div class="zyBoxC">
-            <div class="courseTitle" v-if="allWorks.course">
-              <div class="txName">
-                <div class="tx"><img :src="tx" alt="" /></div>
-                <div>{{ allWorks.sName }}</div>
-              </div>
-              <div>{{ allWorks.course }}</div>
-            </div>
-            <div class="cBox">
-              <div class="pb_left">
-                <el-tooltip class="cTitle" effect="light" :content="allWorks.course" placement="top">
-                  <div>{{ allWorks.course }}</div>
-                </el-tooltip>
-                <div class="ml">目录</div>
-                <div class="cru_selectBox">
-                  <div v-for="(dy, dyIndex) in dyList2" :key="dyIndex">
-                    <div class="blue_box_one" @click="isOpen(dyIndex)">
-                      <div>第{{ dy.id + 1 }}阶段</div>
-                      <div>{{ dy.name }}</div>
-                    </div>
-                    <div class="twoChild" :class="{
-                      navActive: dy.isOpen,
-                    }">
-                      <div class="navChild" v-for="(nav, navIndex) in dy.taskList" :key="navIndex">
-                        <div class="navTask" @click="openTask(dy.id, nav.id)" :class="{
-                          openTaskActive:
-                            nav.id == taskCount &&
-                            dy.id + '-' + nav.id == navId &&
-                            dy.id == stageIndex,
-                        }">
-                          <div class="vedioNav" :class="{
-                            isClick:
-                              nav.id == taskCount &&
-                              dy.id + '-' + nav.id == navId &&
-                              dy.id == stageIndex,
-                          }" style="margin: 0">
-                            任务{{ navIndex + 1 }}
-                          </div>
-                          <el-tooltip class="navTaskname item" effect="light" :content="nav.name" placement="top">
-                            <div>{{ nav.name }}</div>
-                          </el-tooltip>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div class="shuBox" v-if="worksDetail.length" :class="{ fullBox: full }">
-                <div class="allBox" v-for="(sin, sIndex) in sInfo" :key="sIndex">
-                  <div class="zyBox" v-if="sin.course" :class="{ fullZyBox: full }">
-                    <div class="top">
-                      <div class="jdName">
-                        <div>
-                          {{
-                          "第" +
-                          (sin.stage + 1) +
-                          "阶段 " +
-                          dyList[sin.stage].name
-                          }}
-                        </div>
-                        <div class="taskName" style="width: 100%; justify-content: space-between">
-                          <div class="taskName" :id="sin.stage + '-' + sin.task" :scrollindex="sIndex">
-                            <div class="task">任务{{ sin.task + 1 }}</div>
-                            <div>
-                              {{ dyList[sin.stage].taskList[sin.task].name }}
-                            </div>
-                          </div>
-                          <div v-if="worksDetail[sIndex].wpptInfo.length > 0">
-                            <el-button class="btnClassGM" type="primary" size="small" @click="openFile(worksDetail[sIndex].wpptInfo[0])">
-                              查看文档</el-button>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                    <div class="contentBox">
-                      <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
-                        v-if="worksDetail[sIndex].img.length > 0">
-                        <div class="bigImg" v-if="
-                          worksDetail[sIndex].img &&
-                          worksDetail[sIndex].img.length
-                        ">
-                          <img @click="
-                            previewImg(
-                              worksDetail[sIndex].img[
-                                worksDetail[sIndex].imgIndex
-                              ].src
-                            )
-                          " :src="
-                            worksDetail[sIndex].img[
-                              worksDetail[sIndex].imgIndex
-                            ].src
-                          " alt />
-                        </div>
-                        <div class="thumbnail" v-if="
-                          worksDetail[sIndex].img &&
-                          worksDetail[sIndex].img.length
-                        ">
-                          <div v-for="(item, index) in worksDetail[sIndex].img" :key="index" :class="
-                            worksDetail[sIndex].imgIndex == index
-                              ? 'isClick2'
-                              : ''
-                          ">
-                            <img :src="item.src" alt @click="worksDetail[sIndex].imgIndex = index" />
-                          </div>
-                        </div>
-                        <div class="work_nopicture" v-else>暂无上传截图</div>
-                      </div>
-                      <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
-                        v-else-if="worksDetail[sIndex].answerInfo.length > 0">
-                        <div class="answerbox">
-                          <div style="min-width: 80px">问答标题</div>
-                          <div>
-                            {{ worksDetail[sIndex].answerInfo[0].answerTitle }}
-                          </div>
-                        </div>
-                        <div class="answerbox1">
-                          <div>学生回答</div>
-                          <div>
-                            {{ worksDetail[sIndex].answerInfo[0].answer }}
-                          </div>
-                        </div>
-                      </div>
-                      <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
-                        v-else-if="worksDetail[sIndex].askInfo.length > 0">
-                        <div>
-                          <div class="a_add_title" style="
-                              display: flex;
-                              flex-direction: row;
-                              align-items: center;
-                              justify-content: center;
-                              flex-wrap: wrap;
-                            ">
-                            <div style="margin-right: 20px; font-size: 20px">
-                              标题:
-                            </div>
-                            <div style="font-size: 20px">
-                              {{ worksDetail[sIndex].askInfo[0].askTitle }}
-                            </div>
-                          </div>
-                          <div class="a_addBox">
-                            <div style="font-size: 16px; color: #c7c7c7">
-                              内容
-                            </div>
-                            <div class="a_add_box" v-for="(item1, index1) in worksDetail[sIndex]
-                            .askInfo[0].askCount" :key="index1">
-                              <div class="a_add_head">
-                                <div style="display: flex">
-                                  {{ index1 + 1 + "、" }}
-                                  <div>
-                                    题目:{{
-                                    worksDetail[sIndex].askInfo[0].askJson[
-                                    index1
-                                    ].askstitle
-                                    }}
-                                  </div>
-                                </div>
-                              </div>
-                              <div class="a_add_body">
-                                <div class="a_add_input">
-                                  <el-radio-group v-model="
-                                    worksDetail[sIndex].askInfo[0].radio[
-                                      index1
-                                    ]
-                                  ">
-                                    <el-radio v-for="(item2, checkIndex) in worksDetail[
-                                      sIndex
-                                    ].askInfo[0].askJson[index1].checkList" :key="checkIndex" :label="checkIndex"
-                                      disabled class="redioStyle"><span v-html="item2"></span></el-radio>
-                                  </el-radio-group>
-                                </div>
-                              </div>
-                            </div>
-                          </div>
-                        </div>
-                      </div>
-                      <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}"
-                        v-else-if="worksDetail[sIndex].wpptInfo.length > 0">
-                        <div style="height: 238px" @click="openFile(worksDetail[sIndex].wpptInfo[0])">
-                          <div @click="openFile(worksDetail[sIndex].wpptInfo[0])" style="
-                              width: 300px;
-                              height: 300px;
-                              position: absolute;
-                              z-index: 999;
-                            "></div>
-                          <pdf v-if="showPDF" :pdfUrl="worksDetail[sIndex].wpptInfo[0]"
-                            style="width: 100%; height: 520px; overflow: auto"></pdf>
-                          <iframe v-else :src="worksDetail[sIndex].wpptInfo[0]" frameborder="0" width="100%"
-                            height="100%"></iframe>
-                        </div>
-                      </div>
-                      <div class="right_top" v-show="worksDetail[sIndex].eList.length">
-                        <div class="ech">
-                          <img src="../../../assets/icon/pj/ech.png" alt="" />
-                        </div>
-                        <div class="data_body">
-                          <div style="width: 100%">
-                            <div class="echart charts_canvas" style="
-                                width: 100%;
-                                height: 100%;
-                                margin: 0 0 0 1rem;
-                              "></div>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                  <div class="right_score" :class="{ rightScoreFullBox: full }">
-                    <div class="sd_score" style="
-                        box-sizing: border-box;
-                        width: 100%;
-                        box-shadow: none;
-                        position: relative;
-                      ">
-                      <div class="worksTime">
-                        作业提交时间:<span style="width: auto">{{ worksDetail[sIndex].time }}
-                        </span>
-                      </div>
-                      <div class="ech" style="margin-left: 23px">
-                        <img src="../../../assets/icon/pj/score.png" alt="" />
-                      </div>
-                      <div style="height: 80%;overflow: auto;">
-                        <div class="score_box" v-for="(item, index) in worksDetail[sIndex].eList" :key="index">
-                          <el-tooltip class="item" effect="dark" :content="item.value" placement="top-start">
-                            <span>{{ item.value }}</span>
-                          </el-tooltip>
-                          <el-rate class="rate_size" style="min-width: 120px"
-                            v-model="worksDetail[sIndex].rateList[item.value]" @change="getStar(sIndex)"></el-rate>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="buttonCss">
-              <el-button type="primary" size="small" @click="updatePj" class="btnClassGM">保存评分</el-button>
-            </div>
-          </div>
-        </el-dialog>
-      </div>
-      <div class="student_page">
-        <el-pagination background layout="prev, pager, next" :page-size="10" :total="total" v-if="page"
-          @current-change="handleCurrentChange"></el-pagination>
-      </div>
-    </div>
-    <el-dialog :visible.sync="pictureDialog" size="tiny">
-      <img width="100%" :src="dialogImageUrl" alt />
-    </el-dialog>
-    <el-dialog title="项目评分" :visible.sync="dataVisible" :append-to-body="true" width="1100px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="a_addBox2">
-          <StudentData :studentInfo="studentInfo"></StudentData>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dataVisible = false" class="cancel_button">关 闭</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="查看选择题" :visible.sync="dialogVisible4" :append-to-body="true" width="800px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="a_add_title" style="
-            display: flex;
-            flex-direction: row;
-            align-items: center;
-            justify-content: center;
-          ">
-          <div style="font-size: 20px">{{ askJson.askTitle }}</div>
-        </div>
-        <div class="a_addBox">
-          <div style="font-size: 16px; color: #c7c7c7">内容</div>
-          <div class="a_add_box" v-for="(item, index) in askJson.askJson" :key="index">
-            <div class="a_add_head">
-              <div style="display: flex">
-                {{ index + 1 + "、" }}
-                <div>题目:{{ item.askstitle }}</div>
-              </div>
-            </div>
-            <div class="a_add_body">
-              <div class="a_add_input">
-                <el-radio-group v-model="askJson.radio[index]">
-                  <el-radio v-for="(item3, checkIndex1) in item.checkList" :key="checkIndex1" :label="checkIndex1"
-                    class="redioStyle" disabled>{{ item3 }}</el-radio>
-                </el-radio-group>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="dialogVisible4 = false" class="cancel_button">关 闭</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="文件预览" :visible.sync="dialogVisible6" width="100%" :before-close="handleClose" class="full_diy"
-      :append-to-body="true">
-      <div slot="title" class="header-title">
-        <div style="color: #fff">文件预览</div>
-      </div>
-      <pdf v-if="showPDF" :pdfUrl="pptImgUrl" style="width: 100%; height: 520px; overflow: auto"></pdf>
-      <iframe v-else :src="pptImgUrl" frameborder="0" width="100%" height="600"></iframe>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import StudentData from "./studentData";
-import htmlDocx from "html-docx-js/dist/html-docx";
-import saveAs from "file-saver";
-export default {
-  components: {
-    StudentData,
-  },
-  props: ["cid", "uid", "ooid"],
-  data() {
-    return {
-      tableHeight: "500px",
-      isLoading: false,
-      id: this.cid,
-      userid: this.uid,
-      oid: this.ooid,
-      formLabelWidth: "100px",
-      dialogImageUrl: "",
-      pictureDialog: false,
-      dialogVisible: false,
-      dialogVisible1: false,
-      dialogVisible2: false,
-      dialogVisible3: false,
-      dialogVisible4: false,
-      dataVisible: false,
-      full: true,
-      isStar: 0,
-      studentInfo: {},
-      courseByUser: "诗词中的植物",
-      userName: "林点",
-      answerName: "宿赞公房",
-      studentAnswer: "雨荒深院菊,霜倒半池莲.唐杜甫《宿赞公房》",
-      commentCount: 0,
-      publicIndex: 0,
-      allWorks: [],
-      playerOptions: {
-        playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
-        autoplay: false, //如果true,浏览器准备好时开始回放。
-        muted: false, // 默认情况下将会消除任何音频。
-        loop: false, // 导致视频一结束就重新开始。
-        preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
-        language: "zh-CN",
-        aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
-        fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
-        sources: [
-          {
-            type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目   || "video/ogg"|| "video/webm"
-            src: "", //url地址require("../../../assets/media/aaa.mp4")
-          },
-        ],
-        // poster: require("../../../assets/tu31.png"), //你的封面地址
-        // poster: dataRes.imgUrl, //你的封面地址
-        notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
-        controlBar: {
-          timeDivider: true, //当前时间和持续时间的分隔符
-          durationDisplay: true, //显示持续时间
-          remainingTimeDisplay: false, //是否显示剩余时间功能
-          fullscreenToggle: true, //全屏按钮
-        },
-      },
-      playerO: {},
-      commentName: "谭子松",
-      commentTime: "2021/2/5",
-      commentAnswer:
-        "作为家长我很高兴看到孩子的进步,希望这个进步只是一个开始,在新学期能够继续延续,这样才能不负老师的期望",
-      tableData: [],
-      uploadBoolean: false,
-      studentMessage: [],
-      subject: "",
-      sClass: "",
-      stageIndex: "",
-      taskCount: "",
-      navId: "",
-      chooseDy: "",
-      uname: "",
-      chooseTask: "",
-      subjectJuri: [],
-      projectJuri: [],
-      pptImgUrl: "",
-      grade: [],
-      mr: require("../../../assets/icon/wheel.png"),
-      tx: require("../../../assets/avatar.png"),
-      projectchoose: "",
-      scopeId: "",
-      thumbnail: [],
-      rateList: {
-        ca: 0,
-        sia: 0,
-        eta: 0,
-        pia: 0,
-        lra: 0,
-        content: "",
-      },
-      rateParams: [],
-      page: 1,
-      total: 0,
-      worksDetail: [],
-      suserId: "",
-      sInfo: {},
-      chapInfo: [],
-      showPDF: false,
-      dialogVisible6: false,
-      vedio: [],
-      file: [],
-      tType: 0,
-      chartObj: [],
-      pptImgUrl: "",
-      ooption: [],
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        series: [
-          {
-            name: "量规评分",
-            type: "pie",
-            radius: "70%",
-            center: ["50%", "50%"],
-            data: [
-              { value: 0, name: "意识能力" },
-              { value: 0, name: "科学探究能力" },
-              { value: 0, name: "实践创新能力" },
-              { value: 0, name: "学习反思能力" },
-              { value: 0, name: "工程思维能力" },
-            ],
-            itemStyle: {
-              emphasis: {
-                shadowBlur: 10,
-                shadowOffsetX: 0,
-                shadowColor: "rgba(0, 0, 0, 0.5)",
-              },
-              normal: {
-                label: {
-                  show: true,
-                  formatter: "{d}%",
-                  inside: true,
-                  position: "inner",
-                },
-                labelLine: { show: false },
-              },
-            },
-          },
-        ],
-      },
-      // 雷达图的数据
-      radarOption: {
-        splitNumber: 5,
-        tooltip: {
-          triggerOn: "mousemove",
-          //雷达图的tooltip不会超出div,也可以设置position属性,position定位的tooltip 不会随着鼠标移动而位置变化,不友好
-          confine: true,
-          enterable: true, //鼠标是否可以移动到tooltip区域内
-          backgroundColor: "rgba(255,255,255,0.7)",
-          textStyle: {
-            // 文字样式
-            align: "left",
-          },
-          left: "right",
-          top: "bottom",
-        },
-        radar: {
-          radius: ["0%", "70%"],
-          shape: "circle",
-          center: ["50%", "50%"],
-          axisName: {
-            textStyle: {
-              // 文字样式
-              color: "#58a5e6",
-            },
-            formatter: function (value, indicator) {
-              // value = value.replace(/\S{2}/g, function (match) {
-              //   return match + "\n";
-              // });
-              return value;
-            },
-          },
-          indicator: [
-            // 雷达图的指示器,用来指定雷达图中的多个变量(维度)
-          ],
-        },
-        // 雷达图背景的颜色,在这儿随便设置了一个颜色,完全不透明度为0,就实现了透明背景
-        splitArea: {
-          show: true,
-          areaStyle: {
-            color: "rgba(255,0,0,0)", // 图表背景的颜色
-          },
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            width: 1,
-            color: "rgba(131,141,158,.1)", // 设置网格的颜色
-          },
-        },
-        series: [
-          {
-            name: "能力图", // tooltip中的标题
-            type: "radar", // 表示是雷达图
-            symbol: "circle", // 拐点的样式,还可以取值'rect','angle'等
-            symbolSize: 8, // 拐点的大小
-            areaStyle: {
-              normal: {
-                width: 1,
-                opacity: 0.2,
-              },
-            },
-            data: [
-              {
-                // 设置各个指标原始值
-                value: [],
-                // 设置区域边框和区域的颜色
-                itemStyle: {
-                  normal: {
-                    color: "#5c549f",
-                    lineStyle: {
-                      color: "#5c549f",
-                    },
-                  },
-                },
-              },
-            ],
-          },
-        ],
-      },
-      askJson: {},
-      dyList: [],
-      dyList2: [],
-      userAarray: [],
-    };
-  },
-  mounted() {
-    this.$nextTick(function () {
-      this.tableHeight =
-        window.innerHeight - this.$refs.table.$el.offsetTop - 200;
-      if (this.tableHeight <= 530) {
-        this.tableHeight = 530;
-      }
-      // 监听窗口大小变化
-      let self = this;
-      window.onresize = function () {
-        self.tableHeight =
-          window.innerHeight - self.$refs.table.$el.offsetTop - 200;
-        if (self.tableHeight <= 530) {
-          self.tableHeight = 530;
-        }
-      };
-    });
-  },
-  methods: {
-    previewImg(url) {
-      this.$hevueImgPreview(url);
-    },
-    lookData(uid) {
-      let params = {
-        uid: uid,
-        cid: this.id,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail", params)
-        .then((res) => {
-          this.studentInfo = res.data[0][0];
-          this.dataVisible = true;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    handleClose(done) {
-      done();
-    },
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    handleCurrentChange(val) {
-      this.page = val;
-      this.getWorks();
-    },
-    lookWork(id, uid, stage, task) {
-      // this.scopeId = id;
-      let params = {
-        uid: uid,
-        cid: this.id,
-        stage: stage,
-        task: task,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail3", params)
-        .then((res) => {
-          this.sInfo = res.data[0];
-          var chapters = [],
-            eList = [],
-            _ooption = [],
-            _rate = [],
-            _rateList = [];
-          var worksDetail = res.data[1];
-          // this.scopeId = res.data[2][0].id;
-          // var scopeId = res.data[2][0].id;
-          var askInfo = res.data[3];
-          var answerInfo = res.data[4];
-          var pptInfo = res.data[5];
-          var workJson = [];
-          for (var k = 0; k < res.data[0].length; k++) {
-            this.allWorks = res.data[0][k];
-            this.chapInfo.push(JSON.parse(res.data[0][k].chapters));
-            chapters.push(JSON.parse(res.data[0][k].chapters));
-            if (!chapters[0][res.data[0][k].stage].chapterInfo[0].taskJson[
-              res.data[0][k].task
-            ]) {
-              continue
-            }
-
-            workJson.push({
-              img: [],
-              imgIndex: 0,
-              eList: [],
-              rateList: {},
-              askInfo: [],
-              answerInfo: [],
-              wpptInfo: [],
-              scopeId: res.data[0][k].id,
-              stagetask: "",
-              time: "",
-            });
-
-            eList =
-              chapters[0][res.data[0][k].stage].chapterInfo[0].taskJson[
-                res.data[0][k].task
-              ].eList;
-            workJson[k].time = res.data[0][k].time;
-            workJson[k].stagetask =
-              res.data[0][k].stage + "-" + res.data[0][k].task;
-            if (eList && eList.length) {
-              _ooption = [];
-              workJson[k].eList = eList;
-              for (var i = 0; i < eList.length; i++) {
-                _ooption.push({ value: 0, name: eList[i].value });
-                workJson[k].rateList[eList[i].value] = 0;
-              }
-              workJson[k].rateList.content = "";
-              this.ooption[k] = _ooption;
-            }
-            // else {
-            //   _ooption = [];
-            //   workJson[k].eList = [
-            //     { value: "意识能力", detail: "", score: 5 },
-            //     { value: "科学探究能力", detail: "", score: 5 },
-            //     { value: "实践创新能力", detail: "", score: 5 },
-            //     { value: "学习反思能力", detail: "", score: 5 },
-            //     { value: "工程思维能力", detail: "", score: 5 },
-            //   ];
-            //   for (var i = 0; i < workJson[k].eList.length; i++) {
-            //     _ooption.push({ value: 0, name: workJson[k].eList[i].value });
-            //     workJson[k].rateList[workJson[k].eList[i].value] = 0;
-            //   }
-            //   workJson[k].rateList.content = "";
-            //   this.ooption[k] = [
-            //     { value: 0, name: "意识能力" },
-            //     { value: 0, name: "科学探究能力" },
-            //     { value: 0, name: "实践创新能力" },
-            //     { value: 0, name: "学习反思能力" },
-            //     { value: 0, name: "工程思维能力" },
-            //   ];
-            // }
-            if (res.data[0][k].rate && eList && eList.length) {
-              _rate[k] = JSON.parse(res.data[0][k].rate);
-              _rateList[k] = Object.keys(JSON.parse(res.data[0][k].rate));
-              for (var i = 0; i < _rateList[k].length; i++) {
-                var _c = Object.keys(workJson[k].rateList);
-                if (_c.indexOf(_rateList[k][i]) != -1) {
-                  workJson[k].rateList[_rateList[k][i]] =
-                    _rate[k][_rateList[k][i]];
-                }
-              }
-              for (var i = 0; i < this.ooption[k].length; i++) {
-                if (_rateList[k].indexOf(this.ooption[k][i].name) != -1) {
-                  this.ooption[k][i].value = _rate[k][this.ooption[k][i].name];
-                }
-              }
-            } else {
-              _rate[k] = [];
-              _rateList[k] = [];
-            }
-
-            for (var i = 0; i < worksDetail.length; i++) {
-              if (
-                res.data[0][k].stage == worksDetail[i].stage &&
-                res.data[0][k].task == worksDetail[i].task
-              ) {
-                workJson[k].img.push({ src: worksDetail[i].content, id: i });
-              }
-            }
-            for (var i = 0; i < askInfo.length; i++) {
-              if (
-                res.data[0][k].stage == askInfo[i].stage &&
-                res.data[0][k].task == askInfo[i].task
-              ) {
-                const element = askInfo[i];
-                let a = JSON.parse(element.content)[0];
-                let b = a.anwer.split(",");
-                let c = [];
-                for (var j = 0; j < b.length; j++) {
-                  c.push(parseInt(b[j]));
-                }
-                a.askJson.radio = c;
-                a.askJson.time = element.time;
-                workJson[k].askInfo.push(a.askJson);
-              }
-            }
-
-            for (var i = 0; i < pptInfo.length; i++) {
-              if (
-                res.data[0][k].stage == pptInfo[i].stage &&
-                res.data[0][k].task == pptInfo[i].task
-              ) {
-                var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
-                if (
-                  a.indexOf(
-                    pptInfo[i].content
-                      .split(".")
-                    [
-                      pptInfo[i].content.split(".").length - 1
-                    ].toLocaleUpperCase()
-                  ) != -1
-                ) {
-                  var a =
-                    "https://view.officeapps.live.com/op/view.aspx?src=" +
-                    pptInfo[i].content;
-                  workJson[k].wpptInfo.push(a);
-                  this.showPDF = false;
-                } else if (
-                  pptInfo[i].content
-                    .split(".")
-                  [
-                    pptInfo[i].content.split(".").length - 1
-                  ].toLocaleUpperCase() == "PDF"
-                ) {
-                  workJson[k].wpptInfo.push(pptInfo[i].content);
-                  this.showPDF = true;
-                }
-              }
-            }
-
-            for (var i = 0; i < answerInfo.length; i++) {
-              if (
-                res.data[0][k].stage == answerInfo[i].stage &&
-                res.data[0][k].task == answerInfo[i].task
-              ) {
-                const element = answerInfo[i];
-                workJson[k].answerInfo.push(JSON.parse(element.content)[0]);
-              }
-            }
-          }
-
-          this.worksDetail = workJson;
-
-          this.courseDetail = res.data[0][0];
-
-          this.$forceUpdate;
-          this.dialogVisible3 = true;
-          setTimeout(() => {
-            for (var p = 0; p < res.data[0].length; p++) {
-              if (!this.ooption[p]) {
-                this.chartObj[p] = null;
-                continue
-              }
-              var _ooption = JSON.parse(JSON.stringify(this.ooption[p]));
-              var _option = JSON.parse(JSON.stringify(this.radarOption));
-              _option.radar.indicator = [];
-              _option.series[0].data[0].value = [];
-              for (var i = 0; i < _ooption.length; i++) {
-                _option.radar.indicator.push({
-                  name: _ooption[i].name,
-                  max: 5,
-                });
-                _option.series[0].data[0].value.push(_ooption[i].value);
-              }
-              console.log(_option);
-              this.setChart(_option, p);
-            }
-          }, 0);
-
-          let _dyList = JSON.parse(JSON.stringify(this.dyList));
-          let _dyList2 = [];
-          let _dyList3 = [];
-          for (var c = 0; c < _dyList.length; c++) {
-            _dyList[c].taskList = [];
-            _dyList2.push(_dyList[c]);
-          }
-          _dyList = JSON.parse(JSON.stringify(this.dyList));
-          for (var c = 0; c < workJson.length; c++) {
-            let _stage = workJson[c].stagetask.split("-")[0];
-            let _task = workJson[c].stagetask.split("-")[1];
-            _dyList2[_stage].taskList.push(_dyList[_stage].taskList[_task]);
-            _dyList2[_stage].taskList;
-          }
-          for (var c = 0; c < _dyList2.length; c++) {
-            if (_dyList2[c].taskList.length) {
-              _dyList2[c].isOpen = c === 0 ? true : false;
-              _dyList3.push(_dyList2[c]);
-            }
-          }
-          this.dyList2 = _dyList3;
-          this.stageIndex = this.dyList2[0].id;
-          this.taskCount = this.dyList2[0].taskList[0].id;
-          this.navId =
-            this.dyList2[0].id + "-" + this.dyList2[0].taskList[0].id;
-          // this.sInfo = res.data[0][0];
-          // this.chapInfo = JSON.parse(res.data[0][0].chapters);
-          // var chapters = JSON.parse(res.data[0][0].chapters);
-          // var worksDetail = res.data[1];
-          // // var askArray = res.data[2];
-          // this.scopeId = res.data[2].length ? res.data[2][0].id : this.sInfo.id;
-          // var askInfo = res.data[3];
-          // var answerInfo = res.data[4];
-          // var workJson = {
-          //   img: [],
-          //   imgIndex: 0,
-          //   eList: [],
-          //   rateList: {},
-          //   askInfo: [],
-          //   answerInfo: [],
-          // };
-          // var eList =
-          //   chapters[this.sInfo.stage].chapterInfo[0].taskJson[this.sInfo.task]
-          //     .eList;
-          // var _ooption = [];
-          // if (eList) {
-          //   workJson.eList = eList;
-          //   for (var i = 0; i < eList.length; i++) {
-          //     _ooption.push({ value: 0, name: eList[i].value });
-          //     workJson.rateList[eList[i].value] = 0;
-          //   }
-          //   workJson.rateList.content = "";
-          //   this.ooption = _ooption;
-          // } else {
-          //   workJson.eList = [
-          //     { value: "意识能力", detail: "", score: 5 },
-          //     { value: "科学探究能力", detail: "", score: 5 },
-          //     { value: "实践创新能力", detail: "", score: 5 },
-          //     { value: "学习反思能力", detail: "", score: 5 },
-          //     { value: "工程思维能力", detail: "", score: 5 },
-          //   ];
-          //   for (var i = 0; i < workJson.eList.length; i++) {
-          //     _ooption.push({ value: 0, name: workJson.eList[i].value });
-          //     workJson.rateList[workJson.eList[i].value] = 0;
-          //   }
-          //   workJson.rateList.content = "";
-          //   this.ooption = [
-          //     { value: 0, name: "意识能力" },
-          //     { value: 0, name: "科学探究能力" },
-          //     { value: 0, name: "实践创新能力" },
-          //     { value: 0, name: "学习反思能力" },
-          //     { value: 0, name: "工程思维能力" },
-          //   ];
-          // }
-          // if (this.sInfo.rate) {
-          //   var _rate = JSON.parse(this.sInfo.rate);
-          //   var _rateList = Object.keys(JSON.parse(this.sInfo.rate));
-          //   for (var i = 0; i < _rateList.length; i++) {
-          //     var _c = Object.keys(workJson.rateList);
-          //     if (_c.indexOf(_rateList[i]) != -1) {
-          //       workJson.rateList[_rateList[i]] = _rate[_rateList[i]];
-          //     }
-          //   }
-          //   for (var i = 0; i < this.ooption.length; i++) {
-          //     if (_rateList.indexOf(this.ooption[i].name) != -1) {
-          //       this.ooption[i].value = _rate[this.ooption[i].name];
-          //     }
-          //   }
-          // }
-
-          // for (var i = 0; i < worksDetail.length; i++) {
-          //   workJson.img.push({ src: worksDetail[i].content, id: i });
-          // }
-          // for (var i = 0; i < askInfo.length; i++) {
-          //   const element = askInfo[i];
-          //   let a = JSON.parse(element.content)[0];
-          //   let b = a.anwer.split(",");
-          //   let c = [];
-          //   for (var j = 0; j < b.length; j++) {
-          //     c.push(parseInt(b[j]));
-          //   }
-          //   a.askJson.radio = c;
-          //   a.askJson.time = element.time;
-          //   workJson.askInfo.push(a.askJson);
-          // }
-
-          // for (var i = 0; i < answerInfo.length; i++) {
-          //   const element = answerInfo[i];
-          //   workJson.answerInfo.push(JSON.parse(element.content)[0]);
-          // }
-
-          // this.worksDetail = workJson;
-
-          // this.courseDetail = res.data[0][0];
-
-          // this.$forceUpdate;
-          // this.dialogVisible3 = true;
-
-          // setTimeout(() => {
-          //   var _ooption = JSON.parse(JSON.stringify(this.ooption));
-          //   var _option = this.radarOption;
-          //   _option.radar.indicator = [];
-          //   _option.series[0].data[0].value = [];
-          //   for (var i = 0; i < _ooption.length; i++) {
-          //     _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-          //     _option.series[0].data[0].value.push(_ooption[i].value);
-          //   }
-          //   console.log(_option);
-          //   this.setChart(_option);
-
-          // }, 0);
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    checkAsk(askJson) {
-      this.askJson = askJson;
-      this.dialogVisible4 = true;
-    },
-    setChart(option, k) {
-      let _this = this;
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        console.log(_this.option);
-
-        const chartObj = _this.$echarts.init(
-          //劳动课程
-          // _this.$el.querySelector("#charts_canvas")
-          document.getElementsByClassName("charts_canvas")[k]
-        );
-        // 初始化雷达图
-        _this.chartObj[k] = chartObj;
-        _this.chartObj[k].setOption(option);
-      });
-    },
-    giveScore() {
-      this.rateList = this.chapInfo[this.publicIndex].rate;
-      this.dialogVisible2 = true;
-    },
-    openFile(f) {
-      this.pptImgUrl = f;
-      this.dialogVisible6 = true;
-    },
-    //获取班级列表
-    getClass() {
-      this.isLoading = true;
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectClassBySchool", params)
-        .then((res) => {
-          this.isLoading = false;
-          this.grade = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    //获取分组分类
-    getGroup() {
-      let params = {};
-      this.ajax
-        .get(this.$store.state.api + "getGroup", params)
-        .then((res) => {
-          this.subjectJuri = res.data[0];
-          this.projectJuri = res.data[0];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    searchWork1() {
-      this.page = 1;
-      this.chooseTask = "";
-      this.getWorks();
-    },
-    searchWork2() {
-      this.page = 1;
-      this.getWorks();
-    },
-    fullTools() {
-      this.full = !this.full;
-    },
-    //获取作业
-    getWorks() {
-      this.isLoading = true;
-      var mr = this.mr;
-      let params = {
-        cid: this.id,
-        uname: this.uname,
-        stage: this.chooseDy,
-        task: this.chooseTask,
-        page: this.page,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseWorks3", params)
-        .then((res) => {
-          this.isLoading = false;
-          this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
-          this.tableData = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    getCourseDetail() {
-      let params = {
-        cid: this.cid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseWorksReport", params)
-        .then((res) => {
-          this.course = res.data[0][0];
-          var dyJSON = JSON.parse(res.data[0][0].chapters);
-          let dyList = [];
-          for (var i = 0; i < dyJSON.length; i++) {
-            dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
-            var a = dyJSON[i].chapterInfo[0].taskJson;
-            for (var j = 0; j < a.length; j++) {
-              dyList[i].taskList.push({ name: a[j].task, id: j });
-            }
-          }
-          this.dyList = dyList;
-          this.userAarray = res.data[1];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    // getCourseDetail() {
-    //   const loading = this.$loading.service({
-    //     background: "rgba(255, 255, 255, 0.7)",
-    //     target: document.querySelector(".student_table"),
-    //   });
-    //   console.log(this.id);
-    //   let params = {
-    //     courseId: this.id,
-    //   };
-    //   this.ajax
-    //     .get(this.$store.state.api + "selectCourseDetail", params)
-    //     .then((res) => {
-    //       loading.close();
-    //       // this.chapInfo = JSON.parse(res.data[0][0].chapters);
-    //       var dyJSON = JSON.parse(res.data[0][0].chapters);
-    //       let dyList = [];
-    //       for (var i = 0; i < dyJSON.length; i++) {
-    //         dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
-    //         var a = dyJSON[i].chapterInfo[0].taskJson;
-    //         for (var j = 0; j < a.length; j++) {
-    //           dyList[i].taskList.push({ name: a[j].task, id: j });
-    //         }
-    //       }
-    //       console.log(dyList);
-    //       this.dyList = dyList;
-    //       // var dyJSON = JSON.parse()
-    //     })
-    //     .catch((err) => {
-    //       loading.close();
-    //       console.error(err);
-    //     });
-    // },
-    handlePictureCardPreview(url) {
-      this.dialogImageUrl = url;
-      this.pictureDialog = true;
-    },
-    updatePj() {
-      for (var i = 0; i < this.worksDetail.length; i++) {
-        if (!this.worksDetail[i].eList.length) {
-          continue
-        }
-        this.updateWorks(
-          this.worksDetail[i].scopeId,
-          this.worksDetail[i].rateList,
-          i
-        );
-      }
-    },
-    getStar(i) {
-      const k = i;
-      var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-      var _rate = this.worksDetail[i].rateList;
-      var _rateList = Object.keys(this.worksDetail[i].rateList);
-      for (var i = 0; i < _ooption.length; i++) {
-        if (_rateList.indexOf(_ooption[i].name) != -1) {
-          _ooption[i].value = _rate[_ooption[i].name];
-        }
-      }
-      // var _option = JSON.parse(JSON.stringify(this.radarOption));
-      var _option = this.radarOption;
-      _option.radar.indicator = [];
-      _option.series[0].data[0].value = [];
-      for (var i = 0; i < _ooption.length; i++) {
-        _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-        _option.series[0].data[0].value.push(_ooption[i].value);
-      }
-      if (this.chartObj && this.chartObj[k]) {
-        // _option.series[0].data = _ooption;
-        this.chartObj[k].setOption(_option);
-      } else {
-        this.setChart(_ooption);
-      }
-    },
-    updateWorks(scopeId, rateList, i) {
-      let params = {
-        rate: rateList,
-        tuid: this.userid,
-        id: scopeId,
-      };
-      const k = i;
-      this.ajax
-        .get(this.$store.state.api + "updateWorks", params)
-        .then((res) => {
-          var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-          // var _option = JSON.parse(JSON.stringify(this.option));
-
-          var _rate = rateList;
-          var _rateList = Object.keys(rateList);
-          for (var i = 0; i < _ooption.length; i++) {
-            if (_rateList.indexOf(_ooption[i].name) != -1) {
-              _ooption[i].value = _rate[_ooption[i].name];
-            }
-          }
-
-          // var _option = JSON.parse(JSON.stringify(this.radarOption));
-          var _option = this.radarOption;
-          _option.radar.indicator = [];
-          _option.series[0].data[0].value = [];
-          for (var i = 0; i < _ooption.length; i++) {
-            _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-            _option.series[0].data[0].value.push(_ooption[i].value);
-          }
-          console.log(_option);
-          if (this.chartObj) {
-            // _option.series[0].data = _ooption;
-            this.chartObj[k].setOption(_option);
-          } else {
-            this.setChart(_ooption);
-          }
-          // this.uploadBoolean = false;
-          // this.dialogVisible2 = false;
-          let _k = 0
-          for (var i = 0; i < this.worksDetail.length; i++) {
-            if (this.worksDetail[i].eList.length) {
-              _k = i
-            }
-          }
-          if (k == _k) {
-            this.$message({
-              message: "评价成功",
-              type: "success",
-            });
-          }
-        })
-        .catch((err) => {
-          this.$message.error("评价失败");
-          console.error(err);
-        });
-    },
-    switchVideo(media, index) {
-      this.playerO = {};
-      this.playerOptions.poster = "";
-      this.playerOptions.sources[0].src = media;
-      this.playerO = this.playerOptions;
-    },
-    onPlayerPlay() { },
-    // this.$store.commit("update", ["userInfo", userInfo]);
-    lookWork2(id, uid, stage, task) {
-      // this.scopeId = id;
-      let params = {
-        uid: uid,
-        cid: this.id,
-        stage: stage,
-        task: task,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail2", params)
-        .then((res) => {
-          this.sInfo = res.data[0][0];
-          this.chapInfo = JSON.parse(res.data[0][0].chapters);
-          var chapters = JSON.parse(res.data[0][0].chapters);
-          var worksDetail = res.data[1];
-          // var askArray = res.data[2];
-          this.scopeId = res.data[2].length ? res.data[2][0].id : this.sInfo.id;
-          var askInfo = res.data[3];
-          var answerInfo = res.data[4];
-          var linkInfo = res.data[5];
-          var workJson = {
-            img: [],
-            imgIndex: 0,
-            eList: [],
-            rateList: {},
-            wpptInfo: [],
-            askInfo: [],
-            answerInfo: [],
-          };
-          var eList =
-            chapters[this.sInfo.stage].chapterInfo[0].taskJson[this.sInfo.task]
-              .eList;
-          //           ooption: [
-          //   { value: 0, name: "意识能力" },
-          //   { value: 0, name: "科学探究能力" },
-          //   { value: 0, name: "实践创新能力" },
-          //   { value: 0, name: "学习反思能力" },
-          //   { value: 0, name: "工程思维能力" },
-          // ],
-          var _ooption = [];
-          if (eList) {
-            workJson.eList = eList;
-            for (var i = 0; i < eList.length; i++) {
-              _ooption.push({ value: 0, name: eList[i].value });
-              workJson.rateList[eList[i].value] = 0;
-            }
-            workJson.rateList.content = "";
-            this.ooption = _ooption;
-          } else {
-            workJson.eList = [
-              { value: "意识能力", detail: "", score: 5 },
-              { value: "科学探究能力", detail: "", score: 5 },
-              { value: "实践创新能力", detail: "", score: 5 },
-              { value: "学习反思能力", detail: "", score: 5 },
-              { value: "工程思维能力", detail: "", score: 5 },
-            ];
-            for (var i = 0; i < workJson.eList.length; i++) {
-              _ooption.push({ value: 0, name: workJson.eList[i].value });
-              workJson.rateList[workJson.eList[i].value] = 0;
-            }
-            workJson.rateList.content = "";
-            this.ooption = [
-              { value: 0, name: "意识能力" },
-              { value: 0, name: "科学探究能力" },
-              { value: 0, name: "实践创新能力" },
-              { value: 0, name: "学习反思能力" },
-              { value: 0, name: "工程思维能力" },
-            ];
-          }
-          if (this.sInfo.rate) {
-            var _rate = JSON.parse(this.sInfo.rate);
-            var _rateList = Object.keys(JSON.parse(this.sInfo.rate));
-            for (var i = 0; i < _rateList.length; i++) {
-              var _c = Object.keys(workJson.rateList);
-              if (_c.indexOf(_rateList[i]) != -1) {
-                workJson.rateList[_rateList[i]] = _rate[_rateList[i]];
-              }
-            }
-            for (var i = 0; i < this.ooption.length; i++) {
-              if (_rateList.indexOf(this.ooption[i].name) != -1) {
-                this.ooption[i].value = _rate[this.ooption[i].name];
-              }
-            }
-          }
-
-          for (var i = 0; i < worksDetail.length; i++) {
-            workJson.img.push({ src: worksDetail[i].content, id: i });
-          }
-          for (var i = 0; i < askInfo.length; i++) {
-            const element = askInfo[i];
-            let a = JSON.parse(element.content)[0];
-            let b = a.anwer.split(",");
-            let c = [];
-            for (var j = 0; j < b.length; j++) {
-              c.push(parseInt(b[j]));
-            }
-            a.askJson.radio = c;
-            a.askJson.time = element.time;
-            workJson.askInfo.push(a.askJson);
-          }
-
-          for (var i = 0; i < answerInfo.length; i++) {
-            const element = answerInfo[i];
-            workJson.answerInfo.push(JSON.parse(element.content)[0]);
-          }
-
-          this.worksDetail = workJson;
-
-          this.courseDetail = res.data[0][0];
-
-          this.$forceUpdate;
-
-          var _course = `<h1>${this.sInfo.course}</h1>`;
-          var _title =
-            "<h2>" +
-            "第" +
-            (this.sInfo.stage + 1) +
-            "阶段 " +
-            this.dyList[this.sInfo.stage].name +
-            "</h2>";
-          var _subtitle =
-            "<h3>" +
-            "任务" +
-            (this.sInfo.task + 1) +
-            " " +
-            this.dyList[this.sInfo.stage].taskList[this.sInfo.task].name +
-            "-" +
-            this.sInfo.sName +
-            "</h3>";
-          var _img = "";
-          if (workJson.img.length > 0) {
-            for (var i = 0; i < workJson.img.length; i++) {
-              // _img += `<div style="margin-top:10px"><div>图片${
-              //   i + 1
-              // }:<a href='${workJson.img[i].src}'>${
-              //   workJson.img[i].src
-              // }</a></div>`;
-              _img += `<div style="margin-top:10px"><div>图片${i + 1
-                }</div><img style="max-width:500px" src="${workJson.img[i].src
-                }"/></div>`;
-            }
-          }
-
-          var _ask = "";
-          if (workJson.askInfo.length > 0) {
-            var _ask = "<h3>选择题</h3>";
-            for (var i = 0; i < workJson.askInfo.length; i++) {
-              var _div = document.createElement("div");
-              _div.innerHTML = `<h4>标题:${workJson.askInfo[i].askTitle}</h4>`;
-              for (var j = 0; j < workJson.askInfo[i].askJson.length; j++) {
-                var _div2 = document.createElement("div");
-                _div2.innerHTML = `<h5>第${j + 1}题:${workJson.askInfo[i].askJson[j].askstitle
-                  }  选择:${workJson.askInfo[i].radio[j] + 1}</h5> `;
-                var _div3 = document.createElement("div");
-                for (
-                  var z = 0;
-                  z < workJson.askInfo[i].askJson[j].checkList.length;
-                  z++
-                ) {
-                  _div3.innerHTML += `<span style="margin-right:5px">${z + 1}.${workJson.askInfo[i].askJson[j].checkList[z]
-                    }</span>`;
-                }
-                _div2.innerHTML += `<div>${_div3.innerHTML}</div>`;
-                _div.innerHTML += `<div>${_div2.innerHTML}</div>`;
-              }
-              _ask += `<div>${_div.innerHTML}</div>`;
-            }
-          }
-
-          var _answer = "";
-          if (workJson.answerInfo.length > 0) {
-            var _answer = "<h3>问答</h3>";
-            for (var i = 0; i < workJson.answerInfo.length; i++) {
-              var _div = document.createElement("div");
-              _div.innerHTML = `<h4>问答:${workJson.answerInfo[i].answerTitle}</h4>`;
-              _div.innerHTML += `<div>${workJson.answerInfo[i].answer}</div>`;
-              _answer += `<div>${_div.innerHTML}</div>`;
-            }
-          }
-
-          var _link = "";
-          if (linkInfo.length > 0) {
-            for (var i = 0; i < linkInfo.length; i++) {
-              _link += `<div style="margin-top:10px"><a href='${linkInfo[i].content}'>${linkInfo[i].content}</a></div>`;
-            }
-          }
-
-          var _html =
-            _course + _title + _subtitle + _img + _ask + _answer + _link;
-          this.generate(_html);
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    isOpen(s) {
-      // this.stageIndex = s;
-      this.dyList2[s].isOpen = !this.dyList2[s].isOpen;
-    },
-    openTask(s, i) {
-      var a = s + "-" + i;
-      var b = document.getElementById(a);
-      var d = b.getAttribute("scrollindex");
-      var c = document.getElementsByClassName("shuBox")[0];
-      c.scrollTop = parseInt(d) * 375;
-      this.stageIndex = s;
-      this.taskCount = i;
-      this.navId = a;
-    },
-    async generate(a) {
-      // 将html文件中需要用到的数据挂载到store上
-      this.$store.commit("update", ["report", a]);
-      console.log(this.$store.state.report);
-      const content = `<!DOCTYPE html>
-      <html lang="en">
-      <head>
-          <meta charset="UTF-8">
-          <meta http-equiv="X-UA-Compatible" content="IE=edge">
-          <meta name="viewport" content="width=device-width, initial-scale=1.0">
-          <title>报告</title>
-      </head>
-      <body>
-      ${this.$store.state.report}
-      </body>
-      </html>`;
-      // debugger
-      // 生成报告
-      const link = document.createElement("a");
-      let dname = this.sInfo.course + "-" + this.sInfo.sName + ".html";
-      // link.download = "报告.html"; // 文件名
-      link.download = dname; // 文件名
-      link.style.display = "none";
-      // 创建文件流
-      // 创建bolb实例时,内容一定要放在[]中
-      const blob = new Blob([content], {
-        type: "text/plain;charset='utf-8'",
-      });
-      link.href = window.URL.createObjectURL(blob);
-      document.body.appendChild(link);
-      link.click();
-      document.body.removeChild(link);
-      // saveAs(
-      //   htmlDocx.asBlob(content, {
-      //     orientation: "landscape", //跨域设置
-      //   }),
-      //   //文件名
-      //   "报告.doc"
-      // );
-    },
-  },
-  created() {
-    this.page = 1;
-    this.getCourseDetail();
-    this.getClass();
-    this.getGroup();
-    this.getWorks();
-  },
-};
-</script>
-
-<style scoped>
-.pb_head>span:nth-child(2) {
-  font-size: 16px;
-  margin-left: 80px;
-  color: #ab582f;
-}
-
-.pb_head {
-  margin: 0 !important;
-  width: 100% !important;
-}
-
-.student_page {
-  margin-top: 10px;
-}
-
-.student_head {
-  margin-top: 10px;
-  padding-bottom: 15px;
-}
-
-.student_search {
-  display: flex;
-}
-
-.student_search>div:nth-child(1) {
-  line-height: 35px;
-  font-size: 14px;
-}
-
-.student_search>>>.el-input__inner {
-  width: 190px;
-  height: 35px;
-  margin-left: 10px;
-}
-
-.student_table>>>.el-table--border td {
-  border-right: 0px !important;
-}
-
-.add_work>>>.el-dialog__header {
-  padding: 20px 20px 10px;
-  text-align: center;
-  background: #32455b;
-}
-
-.add_work>>>.el-dialog__title {
-  font-size: 14px !important;
-  color: #fff !important;
-}
-
-.add_work>>>.el-dialog__headerbtn {
-  font-size: 20px !important;
-  top: 5px !important;
-  right: 8px !important;
-}
-
-.add_work>>>.el-form-item__label {
-  margin-left: 65px;
-}
-
-.add_work>>>.el-form-item {
-  display: flex;
-}
-
-.add_work>>>.el-form-item__content {
-  margin: 0 !important;
-}
-
-.add_work>>>.el-dialog__footer {
-  text-align: center !important;
-}
-
-.add_work>>>.el-dialog {
-  min-width: 650px !important;
-  width: 1080px;
-}
-
-.add_work>>>.el-dialog__body {
-  background: #fff;
-  height: 660px;
-  overflow: auto;
-}
-
-.header-title {
-  display: flex;
-}
-
-.logoImg {
-  width: 30px;
-}
-
-.logoImg>img {
-  width: 100%;
-  height: 100%;
-}
-
-.title_add_student {
-  margin: 0 auto;
-  color: #fff;
-}
-
-.first {
-  margin-top: 25px;
-  border-bottom: 1px solid #c5c5c5;
-}
-
-.one_top {
-  display: flex;
-  justify-content: space-between;
-}
-
-.one_top>div:nth-child(1) {
-  color: #2490bf;
-  font-size: 16px;
-}
-
-.one_top>button {
-  width: 100px;
-  background: #24a0a4;
-  height: 30px;
-  color: #e0e0e0;
-  font-size: 13px;
-  padding: 0 !important;
-}
-
-.work_Img {
-  width: 150px;
-  margin: 10px 0;
-}
-
-.assess_Img {
-  width: 400px;
-  margin: 0 auto;
-  padding: 15px 0;
-}
-
-.work_Img>img,
-.assess_Img>img {
-  width: 100%;
-  height: 100%;
-}
-
-.work_input {
-  border: 1px solid;
-  width: 135px;
-  height: 20px;
-  line-height: 20px;
-  font-size: 13px;
-  padding: 5px;
-}
-
-.poetry {
-  margin: 10px 0 15px 0;
-}
-
-.assess {
-  background: #169bd5 !important;
-}
-
-.assess_top {
-  border-bottom: 2px solid #eee;
-  padding-bottom: 10px;
-}
-
-.assess_top>div:nth-child(1) {
-  color: #2490bf;
-  font-size: 16px;
-}
-
-.student_Answer {
-  display: flex;
-  margin: 5px 10px;
-  /* padding-bottom: 25px; */
-}
-
-.workName {
-  font-size: 18px;
-  font-weight: bold;
-  margin: 5px 10px;
-}
-
-.toux {
-  width: 35px;
-  /* margin: auto 0; */
-  height: 35px;
-}
-
-.toux>img {
-  width: 100%;
-  height: 100%;
-}
-
-.nav {
-  display: flex;
-  flex-wrap: wrap;
-  margin-top: 10px;
-  flex-direction: column;
-}
-
-.studentName {
-  margin-left: 10px;
-  font-size: 13px;
-}
-
-.studentAnswer {
-  font-size: 12px;
-  margin: 5px 0 0 10px;
-  height: 42px;
-  overflow: auto;
-}
-
-.comment {
-  /* margin: 20px 0 0 10px;
-  overflow: auto;
-  height: 75%;
-  max-height: 330px; */
-  overflow: auto;
-  /* height: 290px; */
-  height: 525px;
-  background: #fff;
-  border-radius: 5px;
-  padding: 10px;
-  box-sizing: border-box;
-}
-
-.comment_body {
-  height: calc(100% - 25px);
-  overflow: auto;
-}
-
-.comment>.comment_title {
-  font-size: 18px;
-}
-
-.comment>.comment_title>span {
-  font-size: 14px;
-}
-
-.other_Answer {
-  display: flex;
-  margin: 5px 10px;
-  padding: 15px 0;
-  justify-content: center;
-}
-
-.nav {
-  margin-left: 5px;
-  width: 80%;
-}
-
-.nameAndTime {
-  display: flex;
-}
-
-.otherName {
-  font-weight: bold;
-  margin-left: 10px;
-  font-size: 13px;
-}
-
-.time {
-  margin-left: 25px;
-  font-size: 12px;
-  margin-top: 3px;
-}
-
-.otherAnswer {
-  width: 80%;
-  word-wrap: break-word;
-  word-break: break-all;
-  overflow: hidden;
-  font-size: 12px;
-  margin: 5px 0 0 10px;
-}
-
-.doingAssess {
-  margin: 0 auto;
-  width: 300px;
-  background: #169bd5;
-  height: 35px;
-  line-height: 35px;
-  border-radius: 3px;
-  font-size: 13px;
-  text-align: center;
-  color: #fff;
-  margin-top: 30px;
-  cursor: pointer;
-}
-
-.score_top {
-  display: flex;
-  margin-bottom: 10px;
-}
-
-.userTou {
-  width: 50px;
-}
-
-.userTou>img {
-  width: 100%;
-  height: 100%;
-}
-
-.score_user_name {
-  line-height: 53px;
-  margin-left: 15px;
-}
-
-.course_top {
-  display: flex;
-  align-items: center;
-}
-
-.course_top>div:nth-child(1) {
-  line-height: 25px;
-}
-
-.course_top>div:nth-child(2) {
-  border: 1px solid #ccc;
-  width: 250px;
-  text-align: center;
-  height: 25px;
-  line-height: 25px;
-  margin-left: 30px;
-}
-
-.sd_score {
-  font-size: 15px;
-  background: #fff;
-  height: 100%;
-  padding-top: 40px;
-  border-radius: 5px;
-  width: 90%;
-  box-shadow: 2px 2px 5px #909090;
-  overflow: auto;
-}
-
-.sd_score .score_box {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  margin-bottom: 15px;
-  /* margin-left: 30px; */
-}
-
-.sd_score .score_box:last-child {
-  margin-bottom: 0;
-}
-
-.rate_size>>>.el-rate__icon {
-  font-size: 25px;
-}
-
-.rate_size>>>.el-icon-star-off {
-  font-size: 22px;
-}
-
-.sd_score span {
-  width: 130px;
-  text-align: justify;
-  text-align-last: justify;
-  display: block;
-  margin-right: 20px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  font-size: 16px;
-}
-
-.moreSay {
-  margin: 0px 0 5px 20px;
-}
-
-.more_say_input {
-  margin-left: 20px;
-  width: 80%;
-}
-
-.more_say_input>>>.el-input__inner {
-  height: 75px;
-  font-size: 13px;
-  padding: 0 0 0 10px;
-}
-
-.assess_right {
-  width: 200px;
-  background: #82b0ee;
-  color: #fff;
-  text-align: center;
-  height: 30px;
-  line-height: 30px;
-  border-radius: 5px;
-  margin: 0 auto;
-  margin-top: 20px;
-  font-size: 13px;
-  cursor: pointer;
-}
-
-.student_page {
-  margin-top: 10px;
-}
-
-.display {
-  display: none;
-}
-
-.firstTop {
-  background: #fff;
-  display: flex;
-  margin-bottom: 15px;
-  flex-direction: column;
-  align-items: flex-start;
-  height: 90px;
-  padding: 10px 25px;
-  border-radius: 5px;
-  width: 90%;
-  box-shadow: 2px 2px 5px #909090;
-}
-
-.talkScore>>>.el-dialog__body {
-  background: #efefef;
-  margin: 0 !important;
-}
-
-.lastTop {
-  background: #fff;
-  border-radius: 5px;
-  width: 98%;
-  height: 120px;
-  box-shadow: 2px 2px 5px #909090;
-}
-
-.left,
-.right {
-  /* background: #fff; */
-  border-radius: 5px;
-  /* padding: 10px; */
-  box-sizing: border-box;
-}
-
-.left {
-  margin-right: 10px;
-  width: 30%;
-  min-height: 425px;
-}
-
-/* .left .left_top {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  margin-bottom: 15px;
-} */
-.left .left_bottom {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  height: 160px;
-}
-
-.right {
-  width: 20%;
-  background: none;
-  padding: 0;
-}
-
-.courseTitle {
-  font-size: 16px;
-  color: #7c7c7c;
-  width: 100%;
-  margin-bottom: 10px;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.course_t {
-  font-size: 19px;
-  display: flex;
-  align-items: flex-end;
-}
-
-.course_t span:nth-child(2) {
-  font-size: 16px;
-  margin-left: 10px;
-}
-
-.courseTitle span:nth-child(2) {
-  /* font-size: 14px;
-  cursor: pointer; */
-}
-
-.bigImg {
-  margin-top: 10px;
-  /* height: 300px; */
-  height: 150px;
-}
-
-.bigImg>img,
-.thumbnail>div>img {
-  width: 100%;
-  height: 100%;
-  object-fit: contain;
-}
-
-.thumbnail {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  margin: 5px 0 8px;
-  overflow-x: auto;
-  overflow-y: hidden;
-}
-
-.isClick2 {
-  border: 3px solid #8f7fe2;
-  border-radius: 5px;
-}
-
-.thumbnail>div {
-  width: 80px;
-  height: 80px;
-  margin-right: 5px;
-  cursor: pointer;
-  flex-shrink: 0;
-  box-sizing: border-box;
-}
-
-.zyBoxC {
-  background: #ededed;
-  display: flex;
-  align-items: flex-start;
-  justify-content: center;
-  padding: 20px 0px;
-  flex-direction: column;
-  height: calc(100% - 50px);
-}
-
-.zyBox {
-  display: flex;
-  min-width: 600px;
-  width: 600px;
-  position: relative;
-  background: #fff;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  overflow: hidden;
-}
-
-.zyBoxC+.zyBoxC {
-  margin-top: 10px;
-}
-
-.rbButtom {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  background: #06a7ff;
-  width: 100px;
-  height: 30px;
-  border-radius: 5px;
-  text-align: center;
-  color: #fff;
-  line-height: 30px;
-  font-size: 14px;
-  cursor: pointer;
-  right: 10px;
-}
-
-.bigImg>>>.vjs-tech,
-.bigImg>>>.video-js {
-  height: 300px !important;
-}
-
-.el-table>>>.even_row {
-  background-color: #f1f1f1;
-}
-
-.data_body {
-  height: 200px;
-  display: flex;
-  position: relative;
-  border-radius: 5px;
-  box-sizing: border-box;
-  width: 100%;
-  background: #fff;
-}
-
-.data_body .title {
-  position: absolute;
-  top: 10px;
-  left: 10px;
-}
-
-.dialog_diy>>>.el-dialog__header {
-  padding: 9px 20px 10px;
-  background: #32455b !important;
-}
-
-.dialog_diy>>>.el-dialog__title {
-  color: #fff;
-  font-size: 15px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn {
-  top: 14px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__body,
-.dialog_diy>>>.el-dialog__footer {
-  background: #fafafa;
-}
-
-.max_diy>>>.el-dialog {
-  /* max-width: 1200px; */
-  max-width: 1300px;
-  /* height:800px */
-}
-
-.max_diy>>>.el-dialog__body {
-  height: 800px;
-}
-
-.dialog_diy2>>>.el-dialog__header {
-  padding: 9px 20px 10px;
-  background: #32455b !important;
-}
-
-.dialog_diy2>>>.el-dialog__title {
-  color: #fff;
-  font-size: 15px;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn {
-  top: 12px;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-
-.dialog_diy2>>>.el-dialog__body,
-.dialog_diy2>>>.el-dialog__footer {
-  background: #ededed;
-  padding: 15px 20px;
-}
-
-.a_addBox2 {
-  margin: 10px 0;
-  background: #fff;
-  padding: 15px;
-}
-
-.a_addBox {
-  margin: 10px 0;
-  background: #fff;
-  padding: 15px;
-  /* max-height: 400px; */
-  max-height: 160px;
-  overflow: auto;
-}
-
-.a_add_box {
-  border-bottom: 2px solid #eee;
-  padding-bottom: 10px;
-}
-
-.a_add_head {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  margin: 10px 0;
-  font-size: 18px;
-}
-
-.a_add_head .a_add_head_input {
-  width: 300px;
-}
-
-.a_add_head .a_add_head_div {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.a_add_body {
-  display: flex;
-  align-items: center;
-}
-
-.a_add_input {
-  display: flex;
-  align-items: center;
-  flex-wrap: wrap;
-  /* flex-direction: column; */
-  /* width: 100%; */
-}
-
-.a_add_input>>>el-radio-group {
-  margin: 10px 0;
-}
-
-.a_add_input>>>.el-radio-group {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-}
-
-.redioStyle>>>.el-radio__label {
-  font-size: 18px;
-}
-
-.task_title {
-  font-size: 18px;
-  font-weight: 700;
-}
-
-.ask_Answer {
-  /* margin-top: 10px; */
-}
-
-.ask_Answer_title {
-  font-size: 18px;
-}
-
-.ask_Answer_content {
-  display: flex;
-  justify-content: center;
-  margin: 10px 0;
-}
-
-.answer_body {
-  padding: 10px 0;
-  border-bottom: 1px solid #f5f5f5;
-}
-
-.answer_title {
-  font-size: 15px;
-  font-weight: 700;
-}
-
-.answer_content {
-  margin-top: 5px;
-}
-
-.ask_body {
-  display: flex;
-  font-size: 16px;
-  margin-top: 10px;
-  flex-direction: column;
-  height: 130px;
-  overflow: auto;
-  /* padding: 0 10px; */
-  box-sizing: border-box;
-}
-
-.ask_body div {
-  /* cursor: pointer; */
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.ask_body div .btn {
-  cursor: pointer;
-  color: #fff;
-  background-color: #409eff;
-  text-align: center;
-  font-size: 12px;
-  padding: 6px 12px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  width: 60px;
-}
-
-.ask_body div span:nth-child(1) {
-  max-width: 250px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.ask_body div+div {
-  margin-top: 10px;
-}
-
-.work_nopicture {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  /* height: 350px; */
-  height: 352px;
-}
-
-.student_table>>>.el-table,
-.student_table>>>.el-table__body-wrapper {
-  height: auto !important;
-}
-
-.tx {
-  width: 35px;
-}
-
-.ech {
-  width: 100px;
-}
-
-.tx>img,
-.ech>img {
-  width: 100%;
-  height: 100%;
-}
-
-.txName {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  margin-left: 10px;
-}
-
-.txName>div:nth-child(2) {
-  margin-left: 10px;
-}
-
-.top {
-  display: flex;
-  justify-content: space-between;
-  padding: 15px 0 15px 20px;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  width: 95%;
-}
-
-.jdName>div:nth-child(1) {
-  font-size: 20px;
-  font-weight: bold;
-}
-
-.taskName {
-  font-size: 14px;
-  margin-top: 10px;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-}
-
-.task {
-  background: #8f7fe2;
-  color: #fff;
-  width: 50px;
-  height: 22px;
-  border-radius: 5px;
-  text-align: center;
-  line-height: 22px;
-  margin-right: 10px;
-}
-
-.contentBox {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  height: 253px;
-}
-
-.left_top {
-  width: 45%;
-  padding-left: 20px;
-}
-
-.right_top {
-  width: 53%;
-}
-
-.cBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  width: 100%;
-  height: calc(100% - 60px);
-  overflow: auto;
-}
-
-.right_score {
-  min-width: 370px;
-  height: 351px;
-  margin-left: 10px;
-}
-
-.pb_left {
-  width: 20%;
-  margin-right: 10px;
-  background: rgb(255, 255, 255);
-  /* padding-right: 10px; */
-  /* height: 500px; */
-  height: 100%;
-}
-
-.cTitle {
-  background: #634fa4;
-  width: 85%;
-  margin: 10px auto;
-  height: 50px;
-  color: #fff;
-  line-height: 50px;
-  text-align: center;
-  font-size: 20px;
-  font-weight: bold;
-  border-radius: 5px;
-  cursor: pointer;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  padding: 0 10px;
-}
-
-.ml {
-  margin-left: 20px;
-  color: #5b7dba;
-  border-left: 3px solid #5b7dba;
-  padding-left: 5px;
-  font-weight: bold;
-}
-
-.cru_selectBox {
-  width: 100%;
-  margin: 0 auto;
-  overflow: auto;
-  height: calc(100% - 90px);
-  overflow-x: hidden;
-}
-
-.cru_selectBox::-webkit-scrollbar {
-  /*滚动条整体样式*/
-  width: 6px;
-  /*高宽分别对应横竖滚动条的尺寸*/
-  height: 6px;
-}
-
-/*定义滚动条轨道 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-track {
-  border-radius: 10px;
-  background-color: #b8bdc9;
-}
-
-/*定义滑块 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-thumb {
-  border-radius: 10px;
-  -webkit-box-shadow: inset 0 0 6px rgb(96, 125, 184);
-  background-color: #2c5ab3;
-}
-
-.blue_box_one {
-  text-align: center;
-  color: #fff;
-  background-image: linear-gradient(90deg, #7960d5, #65b9fc);
-  border-radius: 7px;
-  margin: 10px auto;
-  cursor: pointer;
-  width: 95%;
-  height: 45px;
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  align-items: center;
-}
-
-.blue_box_one>div:nth-child(1) {
-  line-height: 30px;
-  margin: 0 5px 0 10px;
-  width: 30%;
-  min-width: 70px;
-  border-radius: 4px;
-}
-
-.blue_box_one>div:nth-child(2) {
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  word-break: break-all;
-  width: 70%;
-  text-align: left;
-  margin-right: 10px;
-  max-width: calc(100% - 85px);
-}
-
-.blue_box_one>div:nth-child(2):hover {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.twoChild {
-  width: 95%;
-  margin: 10px auto;
-  border-radius: 5px;
-  background: #f2f2f2;
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  justify-content: flex-start;
-  align-items: flex-start;
-  transition: all 0.5s;
-  overflow: hidden;
-  height: 0;
-  background: #e7f3ff;
-}
-
-.twoChild>div:nth-child(1) {
-  margin-top: 5px;
-}
-
-.navChild {
-  width: 100%;
-  cursor: pointer;
-  margin-bottom: 10px;
-}
-
-.navActive {
-  height: auto;
-}
-
-.navTask {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  align-content: flex-start;
-  height: 40px;
-  justify-content: flex-start;
-  padding: 0 10px;
-  width: 100%;
-  box-sizing: border-box;
-}
-
-.vedioNav {
-  margin: 10px 0 0 15px;
-  /* border-bottom: 1px solid #d7d7d7; */
-  padding-bottom: 5px;
-  background: #b7aadf;
-  width: 55px;
-  min-width: 55px;
-  border-radius: 5px;
-  color: #fff;
-  text-align: center;
-  height: 20px;
-  line-height: 26px;
-  font-size: 14px;
-}
-
-.navTaskname {
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  word-break: break-all;
-  padding-left: 5px;
-}
-
-.allBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  width: 100%;
-  height: 351px;
-  margin-bottom: 20px;
-}
-
-.shuBox {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-  width: 100%;
-  flex-wrap: nowrap;
-  overflow: auto;
-  /* height: 500px; */
-  height: 100%;
-}
-
-.answerbox {
-  display: flex;
-  flex-direction: row;
-  /* align-items: center; */
-  margin-bottom: 20px;
-  font-size: 18px;
-  font-weight: bold;
-}
-
-.answerbox>div:nth-child(2) {
-  margin-left: 15px;
-}
-
-.answerbox1 {
-  display: flex;
-  flex-direction: column;
-  align-items: flex-start;
-  flex-wrap: nowrap;
-  font-size: 16px;
-}
-
-.answerbox1>div:nth-child(2) {
-  margin-top: 10px;
-  width: 265px;
-  max-height: 147px;
-  overflow: auto;
-}
-
-.jdName {
-  width: 100%;
-}
-
-.full_diy>>>.el-dialog {
-  margin: 0 !important;
-  height: 100%;
-}
-
-.full_diy>>>.el-dialog__body {
-  height: calc(100% - 100px);
-}
-
-.openTaskActive {
-  color: #8f7fe2;
-}
-
-.isClick {
-  background: #8f7fe2;
-}
-
-.buttonCss {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  justify-content: flex-end;
-  margin: 10px 0;
-}
-
-.fullStyle>>>.el-dialog__body {
-  height: 100% !important;
-  overflow: auto;
-}
-
-.fullStyle>>>.el-dialog,
-.fullStyle {
-  width: 100% !important;
-  max-width: 100% !important;
-  height: 100% !important;
-  margin: 0 !important;
-}
-
-.worksTime {
-  position: absolute;
-  top: 10px;
-  right: 0;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: baseline;
-}
-
-.fullBox {
-  /* overflow: unset !important;
-  height: auto !important; */
-}
-
-.fullZyBox {
-  width: 60% !important;
-}
-
-.rightScoreFullBox {
-  width: 40%;
-}
-
-.student_page
-  >>> .el-pagination.is-background
-  .el-pager
-  li:not(.disabled).active {
-  background-color: #5c549f;
-}
-.student_page
-  >>> .el-pagination.is-background
-  .el-pager
-  li:not(.disabled):hover {
-  color: #5c549f;
-}
-
-.cancel_button:focus,
-.cancel_button:hover {
-  color: rgb(92, 84, 159);
-  border-color: #5c549f;
-  background-color: #dbd7ff;
-}
-</style>

+ 0 - 2602
src/components/pages/components/worksDetail3.vue

@@ -1,2602 +0,0 @@
-<template>
-  <div class="pb_content" style="background: unset; height: 100%">
-    <div class="zyBoxC">
-      <div class="courseTitle" v-if="allWorks.course">
-        <!-- <div class="txName">
-          <div class="tx"><img :src="tx" alt="" /></div>
-          <div>{{ allWorks.sName }}</div>
-        </div>
-        <div>{{ allWorks.course }}</div> -->
-        <div>查看作业</div>
-      </div>
-      <div class="cBox">
-        <div class="pb_left">
-          <el-tooltip class="cTitle" effect="light" :content="allWorks.course" placement="top">
-            <div>{{ allWorks.course }}</div>
-          </el-tooltip>
-          <div class="ml">目录</div>
-          <div class="cru_selectBox">
-            <div v-for="(dy, dyIndex) in dyList2" :key="dyIndex">
-              <div class="blue_box_one" @click="isOpen(dyIndex)">
-                <div>第{{ dy.id + 1 }}阶段</div>
-                <div>{{ dy.name }}</div>
-              </div>
-              <div class="twoChild" :class="{
-                navActive: dy.isOpen,
-              }">
-                <div class="navChild" v-for="(nav, navIndex) in dy.taskList" :key="navIndex">
-                  <div class="navTask" @click="openTask(dy.id, nav.id)" :class="{
-                    openTaskActive:
-                      nav.id == taskCount &&
-                      dy.id + '-' + nav.id == navId &&
-                      dy.id == stageIndex,
-                  }">
-                    <div class="vedioNav" :class="{
-                      isClick:
-                        nav.id == taskCount &&
-                        dy.id + '-' + nav.id == navId &&
-                        dy.id == stageIndex,
-                    }" style="margin: 0">
-                      任务{{ navIndex + 1 }}
-                    </div>
-                    <el-tooltip class="navTaskname item" effect="light" :content="nav.name" placement="top">
-                      <div>{{ nav.name }}</div>
-                    </el-tooltip>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="shuBox" v-if="worksDetail.length" :class="{ fullBox: full }">
-          <div class="allBox" v-for="(sin, sIndex) in sInfo" :key="sIndex">
-            <div class="zyBox" v-if="sin.course" :class="{ fullZyBox: full }">
-              <div class="top">
-                <div class="jdName">
-                  <div>
-                    {{
-                    "第" + (sin.stage + 1) + "阶段 " + dyList[sin.stage].name
-                    }}
-                  </div>
-                  <div class="taskName" style="width: 100%; justify-content: space-between">
-                    <div class="taskName" :id="sin.stage + '-' + sin.task" :scrollindex="sIndex">
-                      <div class="task">任务{{ sin.task + 1 }}</div>
-                      <div>
-                        {{ dyList[sin.stage].taskList[sin.task].name }}
-                      </div>
-                    </div>
-                    <div v-if="worksDetail[sIndex].wpptInfo.length > 0">
-                      <el-button type="primary" size="small" @click="openFile(worksDetail[sIndex].wpptInfo[0])">查看文档
-                      </el-button>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div class="contentBox">
-                <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}" v-if="worksDetail[sIndex].img.length > 0">
-                  <div class="bigImg" v-if="
-                    worksDetail[sIndex].img && worksDetail[sIndex].img.length
-                  ">
-                    <img @click="
-                      previewImg(
-                        worksDetail[sIndex].img[worksDetail[sIndex].imgIndex]
-                          .src
-                      )
-                    " :src="
-                      worksDetail[sIndex].img[worksDetail[sIndex].imgIndex]
-                        .src
-                    " alt />
-                  </div>
-                  <div class="thumbnail" v-if="
-                    worksDetail[sIndex].img && worksDetail[sIndex].img.length
-                  ">
-                    <div v-for="(item, index) in worksDetail[sIndex].img" :key="index" :class="
-                      worksDetail[sIndex].imgIndex == index ? 'isClick' : ''
-                    ">
-                      <img :src="item.src" alt @click="worksDetail[sIndex].imgIndex = index" />
-                    </div>
-                  </div>
-                  <div class="work_nopicture" v-else>暂无上传截图</div>
-                </div>
-                <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}" v-else-if="worksDetail[sIndex].answerInfo.length > 0">
-                  <div class="answerbox">
-                    <div style="min-width: 80px">问答标题</div>
-                    <div>
-                      {{ worksDetail[sIndex].answerInfo[0].answerTitle }}
-                    </div>
-                  </div>
-                  <div class="answerbox1">
-                    <div>学生回答</div>
-                    <div>
-                      {{ worksDetail[sIndex].answerInfo[0].answer }}
-                    </div>
-                  </div>
-                </div>
-                <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}" v-else-if="worksDetail[sIndex].askInfo.length > 0">
-                  <div>
-                    <div class="a_add_title" style="
-                        display: flex;
-                        flex-direction: row;
-                        align-items: center;
-                        justify-content: center;
-                        flex-wrap: wrap;
-                      ">
-                      <div style="margin-right: 20px; font-size: 20px">
-                        标题:
-                      </div>
-                      <div style="font-size: 20px">
-                        {{ worksDetail[sIndex].askInfo[0].askTitle }}
-                      </div>
-                    </div>
-                    <div class="a_addBox">
-                      <div style="font-size: 16px; color: #c7c7c7">
-                        内容
-                      </div>
-                      <div class="a_add_box" v-for="(item1, index1) in worksDetail[sIndex].askInfo[0]
-                      .askCount" :key="index1">
-                        <div class="a_add_head">
-                          <div style="display: flex">
-                            {{ index1 + 1 + "、" }}
-                            <div>
-                              题目:{{
-                              worksDetail[sIndex].askInfo[0].askJson[index1]
-                              .askstitle
-                              }}
-                            </div>
-                          </div>
-                        </div>
-                        <div class="a_add_body">
-                          <div class="a_add_input">
-                            <el-radio-group v-model="
-                              worksDetail[sIndex].askInfo[0].radio[index1]
-                            ">
-                              <el-radio v-for="(item2, checkIndex) in worksDetail[
-                                sIndex
-                              ].askInfo[0].askJson[index1].checkList" :key="checkIndex" :label="checkIndex" disabled
-                                class="redioStyle"><span v-html="item2"></span></el-radio>
-                            </el-radio-group>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}" v-else-if="worksDetail[sIndex].wpptInfo.length > 0">
-                  <div style="height: 238px" @click="openFile(worksDetail[sIndex].wpptInfo[0])">
-                    <div @click="openFile(worksDetail[sIndex].wpptInfo[0])" style="
-                        width: 300px;
-                        height: 300px;
-                        position: absolute;
-                        z-index: 999;
-                      "></div>
-                    <pdf v-if="showPDF" :pdfUrl="worksDetail[sIndex].wpptInfo[0]"
-                      style="width: 100%; height: 520px; overflow: auto"></pdf>
-                    <iframe v-else :src="worksDetail[sIndex].wpptInfo[0]" frameborder="0" width="100%"
-                      height="100%"></iframe>
-                  </div>
-                </div>
-                <div class="right_top" v-show="worksDetail[sIndex].eList.length">
-                  <div class="ech">
-                    <img src="../../../assets/icon/pj/ech.png" alt="" />
-                  </div>
-                  <div class="data_body">
-                    <div style="width: 100%">
-                      <div class="echart charts_canvas" style="width: 100%; height: 100%; margin: 0 0 0 1rem"></div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="right_score" :class="{ rightScoreFullBox: full }">
-              <div class="sd_score" style="
-                  box-sizing: border-box;
-                  width: 100%;
-                  box-shadow: none;
-                  position: relative;
-                ">
-                <div class="worksTime">
-                  作业提交时间:<span style="width: auto">{{ worksDetail[sIndex].time }}
-                  </span>
-                </div>
-                <div class="ech" style="margin-left: 23px">
-                  <img src="../../../assets/icon/pj/score.png" alt="" />
-                </div>
-                <div style="height: 80%;overflow: auto;">
-                  <div class="score_box" v-for="(item, index) in worksDetail[sIndex].eList" :key="index">
-                    <el-tooltip class="item" effect="dark" :content="item.value" placement="top-start">
-                      <span>{{ item.value }}</span>
-                    </el-tooltip>
-                    <el-rate class="rate_size" style="min-width: 120px"
-                      v-model="worksDetail[sIndex].rateList[item.value]" disabled></el-rate>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <!-- <div class="student_page">
-        <el-pagination
-          background
-          layout="prev, pager, next"
-          :page-size="10"
-          :total="total"
-          v-if="page"
-          @current-change="handleCurrentChange"
-        ></el-pagination>
-      </div> -->
-    <el-dialog :visible.sync="pictureDialog" size="tiny">
-      <img width="100%" :src="dialogImageUrl" alt />
-    </el-dialog>
-    <el-dialog title="项目评分" :visible.sync="dataVisible" :append-to-body="true" width="1100px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="a_addBox2">
-          <StudentData :studentInfo="studentInfo"></StudentData>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dataVisible = false">关 闭</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="查看选择题" :visible.sync="dialogVisible4" :append-to-body="true" width="800px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="a_add_title" style="
-            display: flex;
-            flex-direction: row;
-            align-items: center;
-            justify-content: center;
-          ">
-          <div style="font-size: 20px">{{ askJson.askTitle }}</div>
-        </div>
-        <div class="a_addBox">
-          <div style="font-size: 16px; color: #c7c7c7">内容</div>
-          <div class="a_add_box" v-for="(item, index) in askJson.askJson" :key="index">
-            <div class="a_add_head">
-              <div style="display: flex">
-                {{ index + 1 + "、" }}
-                <div>题目:{{ item.askstitle }}</div>
-              </div>
-            </div>
-            <div class="a_add_body">
-              <div class="a_add_input">
-                <el-radio-group v-model="askJson.radio[index]">
-                  <el-radio v-for="(item3, checkIndex1) in item.checkList" :key="checkIndex1" :label="checkIndex1"
-                    class="redioStyle" disabled>{{ item3 }}</el-radio>
-                </el-radio-group>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="dialogVisible4 = false">关 闭</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="文件预览" :visible.sync="dialogVisible6" width="100%" :before-close="handleClose" class="full_diy"
-      :append-to-body="true">
-      <div slot="title" class="header-title">
-        <div style="color: #fff">文件预览</div>
-      </div>
-      <pdf v-if="showPDF" :pdfUrl="pptImgUrl" style="width: 100%; height: 520px; overflow: auto"></pdf>
-      <iframe v-else :src="pptImgUrl" frameborder="0" width="100%" height="600"></iframe>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import StudentData from "./studentData";
-import htmlDocx from "html-docx-js/dist/html-docx";
-import saveAs from "file-saver";
-export default {
-  components: {
-    StudentData,
-  },
-  props: ["cid", "uid", "ooid"],
-  data() {
-    return {
-      tableHeight: "500px",
-      isLoading: false,
-      id: this.cid,
-      userid: this.uid,
-      oid: this.ooid,
-      formLabelWidth: "100px",
-      dialogImageUrl: "",
-      pictureDialog: false,
-      dialogVisible3: false,
-      dialogVisible4: false,
-      dataVisible: false,
-      full: false,
-      isStar: 0,
-      studentInfo: {},
-      courseByUser: "诗词中的植物",
-      userName: "林点",
-      answerName: "宿赞公房",
-      studentAnswer: "雨荒深院菊,霜倒半池莲.唐杜甫《宿赞公房》",
-      commentCount: 0,
-      publicIndex: 0,
-      allWorks: [],
-      playerOptions: {
-        playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
-        autoplay: false, //如果true,浏览器准备好时开始回放。
-        muted: false, // 默认情况下将会消除任何音频。
-        loop: false, // 导致视频一结束就重新开始。
-        preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
-        language: "zh-CN",
-        aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
-        fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
-        sources: [
-          {
-            type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目   || "video/ogg"|| "video/webm"
-            src: "", //url地址require("../../../assets/media/aaa.mp4")
-          },
-        ],
-        // poster: require("../../../assets/tu31.png"), //你的封面地址
-        // poster: dataRes.imgUrl, //你的封面地址
-        notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
-        controlBar: {
-          timeDivider: true, //当前时间和持续时间的分隔符
-          durationDisplay: true, //显示持续时间
-          remainingTimeDisplay: false, //是否显示剩余时间功能
-          fullscreenToggle: true, //全屏按钮
-        },
-      },
-      playerO: {},
-      commentName: "谭子松",
-      commentTime: "2021/2/5",
-      commentAnswer:
-        "作为家长我很高兴看到孩子的进步,希望这个进步只是一个开始,在新学期能够继续延续,这样才能不负老师的期望",
-      stageIndex: "",
-      taskCount: "",
-      navId: "",
-      chooseTask: "",
-      subjectJuri: [],
-      projectJuri: [],
-      pptImgUrl: "",
-      grade: [],
-      mr: require("../../../assets/icon/wheel.png"),
-      tx: require("../../../assets/avatar.png"),
-      projectchoose: "",
-      scopeId: "",
-      thumbnail: [],
-      rateList: {
-        ca: 0,
-        sia: 0,
-        eta: 0,
-        pia: 0,
-        lra: 0,
-        content: "",
-      },
-      page: 1,
-      total: 0,
-      worksDetail: [],
-      suserId: "",
-      sInfo: {},
-      chapInfo: [],
-      showPDF: false,
-      dialogVisible6: false,
-      vedio: [],
-      file: [],
-      tType: 0,
-      chartObj: [],
-      pptImgUrl: "",
-      ooption: [],
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        series: [
-          {
-            name: "量规评分",
-            type: "pie",
-            radius: "70%",
-            center: ["50%", "50%"],
-            data: [
-              { value: 0, name: "意识能力" },
-              { value: 0, name: "科学探究能力" },
-              { value: 0, name: "实践创新能力" },
-              { value: 0, name: "学习反思能力" },
-              { value: 0, name: "工程思维能力" },
-            ],
-            itemStyle: {
-              emphasis: {
-                shadowBlur: 10,
-                shadowOffsetX: 0,
-                shadowColor: "rgba(0, 0, 0, 0.5)",
-              },
-              normal: {
-                label: {
-                  show: true,
-                  formatter: "{d}%",
-                  inside: true,
-                  position: "inner",
-                },
-                labelLine: { show: false },
-              },
-            },
-          },
-        ],
-      },
-      // 雷达图的数据
-      radarOption: {
-        splitNumber: 5,
-        tooltip: {
-          triggerOn: "mousemove",
-          //雷达图的tooltip不会超出div,也可以设置position属性,position定位的tooltip 不会随着鼠标移动而位置变化,不友好
-          confine: true,
-          enterable: true, //鼠标是否可以移动到tooltip区域内
-          backgroundColor: "rgba(255,255,255,0.7)",
-          textStyle: {
-            // 文字样式
-            align: "left",
-          },
-          left: "right",
-          top: "bottom",
-        },
-        radar: {
-          radius: ["0%", "70%"],
-          shape: "circle",
-          center: ["50%", "50%"],
-          axisName: {
-            textStyle: {
-              // 文字样式
-              color: "#58a5e6",
-            },
-            formatter: function (value, indicator) {
-              // value = value.replace(/\S{2}/g, function (match) {
-              //   return match + "\n";
-              // });
-              return value;
-            },
-          },
-          indicator: [
-            // 雷达图的指示器,用来指定雷达图中的多个变量(维度)
-          ],
-        },
-        // 雷达图背景的颜色,在这儿随便设置了一个颜色,完全不透明度为0,就实现了透明背景
-        splitArea: {
-          show: true,
-          areaStyle: {
-            color: "rgba(255,0,0,0)", // 图表背景的颜色
-          },
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            width: 1,
-            color: "rgba(131,141,158,.1)", // 设置网格的颜色
-          },
-        },
-        series: [
-          {
-            name: "能力图", // tooltip中的标题
-            type: "radar", // 表示是雷达图
-            symbol: "circle", // 拐点的样式,还可以取值'rect','angle'等
-            symbolSize: 8, // 拐点的大小
-            areaStyle: {
-              normal: {
-                width: 1,
-                opacity: 0.2,
-              },
-            },
-            data: [
-              {
-                // 设置各个指标原始值
-                value: [],
-                // 设置区域边框和区域的颜色
-                itemStyle: {
-                  normal: {
-                    color: "#58a5e6",
-                    lineStyle: {
-                      color: "#58a5e6",
-                    },
-                  },
-                },
-              },
-            ],
-          },
-        ],
-      },
-      askJson: {},
-      dyList: [],
-      dyList2: [],
-      userAarray: [],
-    };
-  },
-  //   mounted() {
-  //     this.$nextTick(function () {
-  //       this.tableHeight =
-  //         window.innerHeight - this.$refs.table.$el.offsetTop - 200;
-  //       if (this.tableHeight <= 530) {
-  //         this.tableHeight = 530;
-  //       }
-  //       // 监听窗口大小变化
-  //       let self = this;
-  //       window.onresize = function () {
-  //         self.tableHeight =
-  //           window.innerHeight - self.$refs.table.$el.offsetTop - 200;
-  //         if (self.tableHeight <= 530) {
-  //           self.tableHeight = 530;
-  //         }
-  //       };
-  //     });
-  //   },
-  methods: {
-    previewImg(url) {
-      this.$hevueImgPreview(url);
-    },
-    lookData(uid) {
-      let params = {
-        uid: uid,
-        cid: this.id,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail", params)
-        .then((res) => {
-          this.studentInfo = res.data[0][0];
-          this.dataVisible = true;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    handleClose(done) {
-      done();
-    },
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    handleCurrentChange(val) {
-      this.page = val;
-      this.getWorks();
-    },
-    lookWork() {
-      // this.scopeId = id;
-      let params = {
-        uid: this.uid,
-        cid: this.cid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail3", params)
-        .then((res) => {
-          this.sInfo = res.data[0];
-          var chapters = [],
-            eList = [],
-            _ooption = [],
-            _rate = [],
-            _rateList = [];
-          var worksDetail = res.data[1];
-          // this.scopeId = res.data[2][0].id;
-          // var scopeId = res.data[2][0].id;
-          var askInfo = res.data[3];
-          var answerInfo = res.data[4];
-          var pptInfo = res.data[5];
-          var workJson = [];
-          for (var k = 0; k < res.data[0].length; k++) {
-            this.allWorks = res.data[0][k];
-            this.chapInfo.push(JSON.parse(res.data[0][k].chapters));
-            chapters.push(JSON.parse(res.data[0][k].chapters));
-            if (!chapters[0][res.data[0][k].stage].chapterInfo[0].taskJson[
-              res.data[0][k].task
-            ]) {
-              continue
-            }
-
-            workJson.push({
-              img: [],
-              imgIndex: 0,
-              eList: [],
-              rateList: {},
-              askInfo: [],
-              answerInfo: [],
-              wpptInfo: [],
-              scopeId: res.data[0][k].id,
-              stagetask: "",
-              time: "",
-            });
-            // this.allWorks = res.data[0][k];
-            // this.chapInfo.push(JSON.parse(res.data[0][k].chapters));
-            // chapters.push(JSON.parse(res.data[0][k].chapters));
-            eList =
-              chapters[0][res.data[0][k].stage].chapterInfo[0].taskJson[
-                res.data[0][k].task
-              ].eList;
-            workJson[k].time = res.data[0][k].time;
-            workJson[k].stagetask =
-              res.data[0][k].stage + "-" + res.data[0][k].task;
-            if (eList && eList.length > 0) {
-              _ooption = [];
-              workJson[k].eList = eList;
-              for (var i = 0; i < eList.length; i++) {
-                _ooption.push({ value: 0, name: eList[i].value });
-                workJson[k].rateList[eList[i].value] = 0;
-              }
-              workJson[k].rateList.content = "";
-              this.ooption[k] = _ooption;
-            }
-            //  else {
-            //   _ooption = [];
-            //   workJson[k].eList = [
-            //     { value: "意识能力", detail: "", score: 5 },
-            //     { value: "科学探究能力", detail: "", score: 5 },
-            //     { value: "实践创新能力", detail: "", score: 5 },
-            //     { value: "学习反思能力", detail: "", score: 5 },
-            //     { value: "工程思维能力", detail: "", score: 5 },
-            //   ];
-            //   for (var i = 0; i < workJson[k].eList.length; i++) {
-            //     _ooption.push({ value: 0, name: workJson[k].eList[i].value });
-            //     workJson[k].rateList[workJson[k].eList[i].value] = 0;
-            //   }
-            //   workJson[k].rateList.content = "";
-            //   this.ooption[k] = [
-            //     { value: 0, name: "意识能力" },
-            //     { value: 0, name: "科学探究能力" },
-            //     { value: 0, name: "实践创新能力" },
-            //     { value: 0, name: "学习反思能力" },
-            //     { value: 0, name: "工程思维能力" },
-            //   ];
-            // }
-            if (res.data[0][k].rate && eList && eList.length > 0) {
-              _rate[k] = JSON.parse(res.data[0][k].rate);
-              _rateList[k] = Object.keys(JSON.parse(res.data[0][k].rate));
-              for (var i = 0; i < _rateList[k].length; i++) {
-                var _c = Object.keys(workJson[k].rateList);
-                if (_c.indexOf(_rateList[k][i]) != -1) {
-                  workJson[k].rateList[_rateList[k][i]] =
-                    _rate[k][_rateList[k][i]];
-                }
-              }
-              for (var i = 0; i < this.ooption[k].length; i++) {
-                if (_rateList[k].indexOf(this.ooption[k][i].name) != -1) {
-                  this.ooption[k][i].value = _rate[k][this.ooption[k][i].name];
-                }
-              }
-            } else {
-              _rate[k] = [];
-              _rateList[k] = [];
-            }
-
-            for (var i = 0; i < worksDetail.length; i++) {
-              if (
-                res.data[0][k].stage == worksDetail[i].stage &&
-                res.data[0][k].task == worksDetail[i].task
-              ) {
-                workJson[k].img.push({ src: worksDetail[i].content, id: i });
-              }
-            }
-            for (var i = 0; i < askInfo.length; i++) {
-              if (
-                res.data[0][k].stage == askInfo[i].stage &&
-                res.data[0][k].task == askInfo[i].task
-              ) {
-                const element = askInfo[i];
-                let a = JSON.parse(element.content)[0];
-                let b = a.anwer.split(",");
-                let c = [];
-                for (var j = 0; j < b.length; j++) {
-                  c.push(parseInt(b[j]));
-                }
-                a.askJson.radio = c;
-                a.askJson.time = element.time;
-                workJson[k].askInfo.push(a.askJson);
-              }
-            }
-
-            for (var i = 0; i < pptInfo.length; i++) {
-              if (
-                res.data[0][k].stage == pptInfo[i].stage &&
-                res.data[0][k].task == pptInfo[i].task
-              ) {
-                var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
-                if (
-                  a.indexOf(
-                    pptInfo[i].content
-                      .split(".")
-                    [
-                      pptInfo[i].content.split(".").length - 1
-                    ].toLocaleUpperCase()
-                  ) != -1
-                ) {
-                  var a =
-                    "https://view.officeapps.live.com/op/view.aspx?src=" +
-                    pptInfo[i].content;
-                  workJson[k].wpptInfo.push(a);
-                  this.showPDF = false;
-                } else if (
-                  pptInfo[i].content
-                    .split(".")
-                  [
-                    pptInfo[i].content.split(".").length - 1
-                  ].toLocaleUpperCase() == "PDF"
-                ) {
-                  workJson[k].wpptInfo.push(pptInfo[i].content);
-                  this.showPDF = true;
-                }
-              }
-            }
-
-            for (var i = 0; i < answerInfo.length; i++) {
-              if (
-                res.data[0][k].stage == answerInfo[i].stage &&
-                res.data[0][k].task == answerInfo[i].task
-              ) {
-                const element = answerInfo[i];
-                workJson[k].answerInfo.push(JSON.parse(element.content)[0]);
-              }
-            }
-          }
-
-          this.worksDetail = workJson;
-
-          this.courseDetail = res.data[0][0];
-
-          this.$forceUpdate;
-          this.dialogVisible3 = true;
-          setTimeout(() => {
-            for (var p = 0; p < res.data[0].length; p++) {
-              if (!this.ooption[p]) {
-                this.chartObj[p] = null;
-                continue
-              }
-              var _ooption = JSON.parse(JSON.stringify(this.ooption[p]));
-              var _option = JSON.parse(JSON.stringify(this.radarOption));
-              _option.radar.indicator = [];
-              _option.series[0].data[0].value = [];
-              for (var i = 0; i < _ooption.length; i++) {
-                _option.radar.indicator.push({
-                  name: _ooption[i].name,
-                  max: 5,
-                });
-                _option.series[0].data[0].value.push(_ooption[i].value);
-              }
-              console.log(_option);
-              this.setChart(_option, p);
-            }
-          }, 0);
-
-          let _dyList = JSON.parse(JSON.stringify(this.dyList));
-          let _dyList2 = [];
-          let _dyList3 = [];
-          for (var c = 0; c < _dyList.length; c++) {
-            _dyList[c].taskList = [];
-            _dyList2.push(_dyList[c]);
-          }
-          _dyList = JSON.parse(JSON.stringify(this.dyList));
-          for (var c = 0; c < workJson.length; c++) {
-            let _stage = workJson[c].stagetask.split("-")[0];
-            let _task = workJson[c].stagetask.split("-")[1];
-            _dyList2[_stage].taskList.push(_dyList[_stage].taskList[_task]);
-            _dyList2[_stage].taskList;
-          }
-          for (var c = 0; c < _dyList2.length; c++) {
-            if (_dyList2[c].taskList.length) {
-              _dyList2[c].isOpen = c === 0 ? true : false;
-              _dyList3.push(_dyList2[c]);
-            }
-          }
-          this.dyList2 = _dyList3;
-          this.stageIndex = this.dyList2[0].id;
-          this.taskCount = this.dyList2[0].taskList[0].id;
-          this.navId =
-            this.dyList2[0].id + "-" + this.dyList2[0].taskList[0].id;
-          this.$forceUpdate();
-          // this.sInfo = res.data[0][0];
-          // this.chapInfo = JSON.parse(res.data[0][0].chapters);
-          // var chapters = JSON.parse(res.data[0][0].chapters);
-          // var worksDetail = res.data[1];
-          // // var askArray = res.data[2];
-          // this.scopeId = res.data[2].length ? res.data[2][0].id : this.sInfo.id;
-          // var askInfo = res.data[3];
-          // var answerInfo = res.data[4];
-          // var workJson = {
-          //   img: [],
-          //   imgIndex: 0,
-          //   eList: [],
-          //   rateList: {},
-          //   askInfo: [],
-          //   answerInfo: [],
-          // };
-          // var eList =
-          //   chapters[this.sInfo.stage].chapterInfo[0].taskJson[this.sInfo.task]
-          //     .eList;
-          // var _ooption = [];
-          // if (eList) {
-          //   workJson.eList = eList;
-          //   for (var i = 0; i < eList.length; i++) {
-          //     _ooption.push({ value: 0, name: eList[i].value });
-          //     workJson.rateList[eList[i].value] = 0;
-          //   }
-          //   workJson.rateList.content = "";
-          //   this.ooption = _ooption;
-          // } else {
-          //   workJson.eList = [
-          //     { value: "意识能力", detail: "", score: 5 },
-          //     { value: "科学探究能力", detail: "", score: 5 },
-          //     { value: "实践创新能力", detail: "", score: 5 },
-          //     { value: "学习反思能力", detail: "", score: 5 },
-          //     { value: "工程思维能力", detail: "", score: 5 },
-          //   ];
-          //   for (var i = 0; i < workJson.eList.length; i++) {
-          //     _ooption.push({ value: 0, name: workJson.eList[i].value });
-          //     workJson.rateList[workJson.eList[i].value] = 0;
-          //   }
-          //   workJson.rateList.content = "";
-          //   this.ooption = [
-          //     { value: 0, name: "意识能力" },
-          //     { value: 0, name: "科学探究能力" },
-          //     { value: 0, name: "实践创新能力" },
-          //     { value: 0, name: "学习反思能力" },
-          //     { value: 0, name: "工程思维能力" },
-          //   ];
-          // }
-          // if (this.sInfo.rate) {
-          //   var _rate = JSON.parse(this.sInfo.rate);
-          //   var _rateList = Object.keys(JSON.parse(this.sInfo.rate));
-          //   for (var i = 0; i < _rateList.length; i++) {
-          //     var _c = Object.keys(workJson.rateList);
-          //     if (_c.indexOf(_rateList[i]) != -1) {
-          //       workJson.rateList[_rateList[i]] = _rate[_rateList[i]];
-          //     }
-          //   }
-          //   for (var i = 0; i < this.ooption.length; i++) {
-          //     if (_rateList.indexOf(this.ooption[i].name) != -1) {
-          //       this.ooption[i].value = _rate[this.ooption[i].name];
-          //     }
-          //   }
-          // }
-
-          // for (var i = 0; i < worksDetail.length; i++) {
-          //   workJson.img.push({ src: worksDetail[i].content, id: i });
-          // }
-          // for (var i = 0; i < askInfo.length; i++) {
-          //   const element = askInfo[i];
-          //   let a = JSON.parse(element.content)[0];
-          //   let b = a.anwer.split(",");
-          //   let c = [];
-          //   for (var j = 0; j < b.length; j++) {
-          //     c.push(parseInt(b[j]));
-          //   }
-          //   a.askJson.radio = c;
-          //   a.askJson.time = element.time;
-          //   workJson.askInfo.push(a.askJson);
-          // }
-
-          // for (var i = 0; i < answerInfo.length; i++) {
-          //   const element = answerInfo[i];
-          //   workJson.answerInfo.push(JSON.parse(element.content)[0]);
-          // }
-
-          // this.worksDetail = workJson;
-
-          // this.courseDetail = res.data[0][0];
-
-          // this.$forceUpdate;
-          // this.dialogVisible3 = true;
-
-          // setTimeout(() => {
-          //   var _ooption = JSON.parse(JSON.stringify(this.ooption));
-          //   var _option = this.radarOption;
-          //   _option.radar.indicator = [];
-          //   _option.series[0].data[0].value = [];
-          //   for (var i = 0; i < _ooption.length; i++) {
-          //     _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-          //     _option.series[0].data[0].value.push(_ooption[i].value);
-          //   }
-          //   console.log(_option);
-          //   this.setChart(_option);
-
-          // }, 0);
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    checkAsk(askJson) {
-      this.askJson = askJson;
-      this.dialogVisible4 = true;
-    },
-    setChart(option, k) {
-      let _this = this;
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        console.log(_this.option);
-
-        const chartObj = _this.$echarts.init(
-          //劳动课程
-          // _this.$el.querySelector("#charts_canvas")
-          document.getElementsByClassName("charts_canvas")[k]
-        );
-        // 初始化雷达图
-        _this.chartObj[k] = chartObj;
-        _this.chartObj[k].setOption(option);
-      });
-    },
-    openFile(f) {
-      this.pptImgUrl = f;
-      this.dialogVisible6 = true;
-    },
-    //获取班级列表
-    getClass() {
-      this.isLoading = true;
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectClassBySchool", params)
-        .then((res) => {
-          this.isLoading = false;
-          this.grade = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    //获取分组分类
-    getGroup() {
-      let params = {};
-      this.ajax
-        .get(this.$store.state.api + "getGroup", params)
-        .then((res) => {
-          this.subjectJuri = res.data[0];
-          this.projectJuri = res.data[0];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    searchWork1() {
-      this.page = 1;
-      this.chooseTask = "";
-      this.getWorks();
-    },
-    searchWork2() {
-      this.page = 1;
-      this.getWorks();
-    },
-    //获取作业
-    getWorks() {
-      this.isLoading = true;
-      var mr = this.mr;
-      let params = {
-        cid: this.id,
-        uname: this.uname,
-        stage: this.chooseDy,
-        task: this.chooseTask,
-        page: this.page,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseWorks3", params)
-        .then((res) => {
-          this.isLoading = false;
-          this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
-          this.tableData = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    fullTools() {
-      this.full = !this.full;
-    },
-    getCourseDetail() {
-      let params = {
-        cid: this.cid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseWorksReport", params)
-        .then((res) => {
-          this.course = res.data[0][0];
-          var dyJSON = JSON.parse(res.data[0][0].chapters);
-          let dyList = [];
-          for (var i = 0; i < dyJSON.length; i++) {
-            dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
-            var a = dyJSON[i].chapterInfo[0].taskJson;
-            for (var j = 0; j < a.length; j++) {
-              dyList[i].taskList.push({ name: a[j].task, id: j });
-            }
-          }
-          this.dyList = dyList;
-          this.userAarray = res.data[1];
-          this.lookWork();
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    // getCourseDetail() {
-    //   const loading = this.$loading.service({
-    //     background: "rgba(255, 255, 255, 0.7)",
-    //     target: document.querySelector(".student_table"),
-    //   });
-    //   console.log(this.id);
-    //   let params = {
-    //     courseId: this.id,
-    //   };
-    //   this.ajax
-    //     .get(this.$store.state.api + "selectCourseDetail", params)
-    //     .then((res) => {
-    //       loading.close();
-    //       // this.chapInfo = JSON.parse(res.data[0][0].chapters);
-    //       var dyJSON = JSON.parse(res.data[0][0].chapters);
-    //       let dyList = [];
-    //       for (var i = 0; i < dyJSON.length; i++) {
-    //         dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
-    //         var a = dyJSON[i].chapterInfo[0].taskJson;
-    //         for (var j = 0; j < a.length; j++) {
-    //           dyList[i].taskList.push({ name: a[j].task, id: j });
-    //         }
-    //       }
-    //       console.log(dyList);
-    //       this.dyList = dyList;
-    //       // var dyJSON = JSON.parse()
-    //     })
-    //     .catch((err) => {
-    //       loading.close();
-    //       console.error(err);
-    //     });
-    // },
-    handlePictureCardPreview(url) {
-      this.dialogImageUrl = url;
-      this.pictureDialog = true;
-    },
-    updatePj() {
-      for (var i = 0; i < this.worksDetail.length; i++) {
-        this.updateWorks(
-          this.worksDetail[i].scopeId,
-          this.worksDetail[i].rateList,
-          i
-        );
-      }
-    },
-    getStar(i) {
-      const k = i;
-      var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-      var _rate = this.worksDetail[i].rateList;
-      var _rateList = Object.keys(this.worksDetail[i].rateList);
-      for (var i = 0; i < _ooption.length; i++) {
-        if (_rateList.indexOf(_ooption[i].name) != -1) {
-          _ooption[i].value = _rate[_ooption[i].name];
-        }
-      }
-      // var _option = JSON.parse(JSON.stringify(this.radarOption));
-      var _option = this.radarOption;
-      _option.radar.indicator = [];
-      _option.series[0].data[0].value = [];
-      for (var i = 0; i < _ooption.length; i++) {
-        _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-        _option.series[0].data[0].value.push(_ooption[i].value);
-      }
-      if (this.chartObj) {
-        // _option.series[0].data = _ooption;
-        this.chartObj[k].setOption(_option);
-      } else {
-        this.setChart(_ooption);
-      }
-    },
-    updateWorks(scopeId, rateList, i) {
-      let params = {
-        rate: rateList,
-        tuid: this.userid,
-        id: scopeId,
-      };
-      const k = i;
-      this.ajax
-        .get(this.$store.state.api + "updateWorks", params)
-        .then((res) => {
-          var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-          // var _option = JSON.parse(JSON.stringify(this.option));
-
-          var _rate = rateList;
-          var _rateList = Object.keys(rateList);
-          for (var i = 0; i < _ooption.length; i++) {
-            if (_rateList.indexOf(_ooption[i].name) != -1) {
-              _ooption[i].value = _rate[_ooption[i].name];
-            }
-          }
-
-          // var _option = JSON.parse(JSON.stringify(this.radarOption));
-          var _option = this.radarOption;
-          _option.radar.indicator = [];
-          _option.series[0].data[0].value = [];
-          for (var i = 0; i < _ooption.length; i++) {
-            _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-            _option.series[0].data[0].value.push(_ooption[i].value);
-          }
-          console.log(_option);
-          if (this.chartObj) {
-            // _option.series[0].data = _ooption;
-            this.chartObj[k].setOption(_option);
-          } else {
-            this.setChart(_ooption);
-          }
-          // this.uploadBoolean = false;
-          if (k == this.worksDetail.length - 1) {
-            this.$message({
-              message: "评价成功",
-              type: "success",
-            });
-          }
-        })
-        .catch((err) => {
-          this.$message.error("评价失败");
-          console.error(err);
-        });
-    },
-    switchVideo(media, index) {
-      this.playerO = {};
-      this.playerOptions.poster = "";
-      this.playerOptions.sources[0].src = media;
-      this.playerO = this.playerOptions;
-    },
-    onPlayerPlay() { },
-    // this.$store.commit("update", ["userInfo", userInfo]);
-    lookWork2(id, uid, stage, task) {
-      // this.scopeId = id;
-      let params = {
-        uid: uid,
-        cid: this.id,
-        stage: stage,
-        task: task,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail2", params)
-        .then((res) => {
-          this.sInfo = res.data[0][0];
-          this.chapInfo = JSON.parse(res.data[0][0].chapters);
-          var chapters = JSON.parse(res.data[0][0].chapters);
-          var worksDetail = res.data[1];
-          // var askArray = res.data[2];
-          this.scopeId = res.data[2].length ? res.data[2][0].id : this.sInfo.id;
-          var askInfo = res.data[3];
-          var answerInfo = res.data[4];
-          var linkInfo = res.data[5];
-          var workJson = {
-            img: [],
-            imgIndex: 0,
-            eList: [],
-            rateList: {},
-            wpptInfo: [],
-            askInfo: [],
-            answerInfo: [],
-          };
-          var eList =
-            chapters[this.sInfo.stage].chapterInfo[0].taskJson[this.sInfo.task]
-              .eList;
-          //           ooption: [
-          //   { value: 0, name: "意识能力" },
-          //   { value: 0, name: "科学探究能力" },
-          //   { value: 0, name: "实践创新能力" },
-          //   { value: 0, name: "学习反思能力" },
-          //   { value: 0, name: "工程思维能力" },
-          // ],
-          var _ooption = [];
-          if (eList) {
-            workJson.eList = eList;
-            for (var i = 0; i < eList.length; i++) {
-              _ooption.push({ value: 0, name: eList[i].value });
-              workJson.rateList[eList[i].value] = 0;
-            }
-            workJson.rateList.content = "";
-            this.ooption = _ooption;
-          } else {
-            workJson.eList = [
-              { value: "意识能力", detail: "", score: 5 },
-              { value: "科学探究能力", detail: "", score: 5 },
-              { value: "实践创新能力", detail: "", score: 5 },
-              { value: "学习反思能力", detail: "", score: 5 },
-              { value: "工程思维能力", detail: "", score: 5 },
-            ];
-            for (var i = 0; i < workJson.eList.length; i++) {
-              _ooption.push({ value: 0, name: workJson.eList[i].value });
-              workJson.rateList[workJson.eList[i].value] = 0;
-            }
-            workJson.rateList.content = "";
-            this.ooption = [
-              { value: 0, name: "意识能力" },
-              { value: 0, name: "科学探究能力" },
-              { value: 0, name: "实践创新能力" },
-              { value: 0, name: "学习反思能力" },
-              { value: 0, name: "工程思维能力" },
-            ];
-          }
-          if (this.sInfo.rate) {
-            var _rate = JSON.parse(this.sInfo.rate);
-            var _rateList = Object.keys(JSON.parse(this.sInfo.rate));
-            for (var i = 0; i < _rateList.length; i++) {
-              var _c = Object.keys(workJson.rateList);
-              if (_c.indexOf(_rateList[i]) != -1) {
-                workJson.rateList[_rateList[i]] = _rate[_rateList[i]];
-              }
-            }
-            for (var i = 0; i < this.ooption.length; i++) {
-              if (_rateList.indexOf(this.ooption[i].name) != -1) {
-                this.ooption[i].value = _rate[this.ooption[i].name];
-              }
-            }
-          }
-
-          for (var i = 0; i < worksDetail.length; i++) {
-            workJson.img.push({ src: worksDetail[i].content, id: i });
-          }
-          for (var i = 0; i < askInfo.length; i++) {
-            const element = askInfo[i];
-            let a = JSON.parse(element.content)[0];
-            let b = a.anwer.split(",");
-            let c = [];
-            for (var j = 0; j < b.length; j++) {
-              c.push(parseInt(b[j]));
-            }
-            a.askJson.radio = c;
-            a.askJson.time = element.time;
-            workJson.askInfo.push(a.askJson);
-          }
-
-          for (var i = 0; i < answerInfo.length; i++) {
-            const element = answerInfo[i];
-            workJson.answerInfo.push(JSON.parse(element.content)[0]);
-          }
-
-          this.worksDetail = workJson;
-
-          this.courseDetail = res.data[0][0];
-
-          this.$forceUpdate;
-
-          var _course = `<h1>${this.sInfo.course}</h1>`;
-          var _title =
-            "<h2>" +
-            "第" +
-            (this.sInfo.stage + 1) +
-            "阶段 " +
-            this.dyList[this.sInfo.stage].name +
-            "</h2>";
-          var _subtitle =
-            "<h3>" +
-            "任务" +
-            (this.sInfo.task + 1) +
-            " " +
-            this.dyList[this.sInfo.stage].taskList[this.sInfo.task].name +
-            "-" +
-            this.sInfo.sName +
-            "</h3>";
-          var _img = "";
-          if (workJson.img.length > 0) {
-            for (var i = 0; i < workJson.img.length; i++) {
-              // _img += `<div style="margin-top:10px"><div>图片${
-              //   i + 1
-              // }:<a href='${workJson.img[i].src}'>${
-              //   workJson.img[i].src
-              // }</a></div>`;
-              _img += `<div style="margin-top:10px"><div>图片${i + 1
-                }</div><img style="max-width:500px" src="${workJson.img[i].src
-                }"/></div>`;
-            }
-          }
-
-          var _ask = "";
-          if (workJson.askInfo.length > 0) {
-            var _ask = "<h3>选择题</h3>";
-            for (var i = 0; i < workJson.askInfo.length; i++) {
-              var _div = document.createElement("div");
-              _div.innerHTML = `<h4>标题:${workJson.askInfo[i].askTitle}</h4>`;
-              for (var j = 0; j < workJson.askInfo[i].askJson.length; j++) {
-                var _div2 = document.createElement("div");
-                _div2.innerHTML = `<h5>第${j + 1}题:${workJson.askInfo[i].askJson[j].askstitle
-                  }  选择:${workJson.askInfo[i].radio[j] + 1}</h5> `;
-                var _div3 = document.createElement("div");
-                for (
-                  var z = 0;
-                  z < workJson.askInfo[i].askJson[j].checkList.length;
-                  z++
-                ) {
-                  _div3.innerHTML += `<span style="margin-right:5px">${z + 1}.${workJson.askInfo[i].askJson[j].checkList[z]
-                    }</span>`;
-                }
-                _div2.innerHTML += `<div>${_div3.innerHTML}</div>`;
-                _div.innerHTML += `<div>${_div2.innerHTML}</div>`;
-              }
-              _ask += `<div>${_div.innerHTML}</div>`;
-            }
-          }
-
-          var _answer = "";
-          if (workJson.answerInfo.length > 0) {
-            var _answer = "<h3>问答</h3>";
-            for (var i = 0; i < workJson.answerInfo.length; i++) {
-              var _div = document.createElement("div");
-              _div.innerHTML = `<h4>问答:${workJson.answerInfo[i].answerTitle}</h4>`;
-              _div.innerHTML += `<div>${workJson.answerInfo[i].answer}</div>`;
-              _answer += `<div>${_div.innerHTML}</div>`;
-            }
-          }
-
-          var _link = "";
-          if (linkInfo.length > 0) {
-            for (var i = 0; i < linkInfo.length; i++) {
-              _link += `<div style="margin-top:10px"><a href='${linkInfo[i].content}'>${linkInfo[i].content}</a></div>`;
-            }
-          }
-
-          var _html =
-            _course + _title + _subtitle + _img + _ask + _answer + _link;
-          this.generate(_html);
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    isOpen(s) {
-      // this.stageIndex = s;
-      this.dyList2[s].isOpen = !this.dyList2[s].isOpen;
-    },
-    openTask(s, i) {
-      var a = s + "-" + i;
-      var b = document.getElementById(a);
-      var d = b.getAttribute("scrollindex");
-      var c = document.getElementsByClassName("shuBox")[0];
-      c.scrollTop = parseInt(d) * 375;
-      this.stageIndex = s;
-      this.taskCount = i;
-      this.navId = a;
-    },
-    async generate(a) {
-      // 将html文件中需要用到的数据挂载到store上
-      this.$store.commit("update", ["report", a]);
-      console.log(this.$store.state.report);
-      const content = `<!DOCTYPE html>
-      <html lang="en">
-      <head>
-          <meta charset="UTF-8">
-          <meta http-equiv="X-UA-Compatible" content="IE=edge">
-          <meta name="viewport" content="width=device-width, initial-scale=1.0">
-          <title>报告</title>
-      </head>
-      <body>
-      ${this.$store.state.report}
-      </body>
-      </html>`;
-      // debugger
-      // 生成报告
-      const link = document.createElement("a");
-      let dname = this.sInfo.course + "-" + this.sInfo.sName + ".html";
-      // link.download = "报告.html"; // 文件名
-      link.download = dname; // 文件名
-      link.style.display = "none";
-      // 创建文件流
-      // 创建bolb实例时,内容一定要放在[]中
-      const blob = new Blob([content], {
-        type: "text/plain;charset='utf-8'",
-      });
-      link.href = window.URL.createObjectURL(blob);
-      document.body.appendChild(link);
-      link.click();
-      document.body.removeChild(link);
-      // saveAs(
-      //   htmlDocx.asBlob(content, {
-      //     orientation: "landscape", //跨域设置
-      //   }),
-      //   //文件名
-      //   "报告.doc"
-      // );
-    },
-  },
-  watch: {
-    uid(newValue, oldValue) {
-      this.getCourseDetail();
-      this.getClass();
-      this.getGroup();
-      this.getWorks();
-      // this.lookWork();
-    },
-  },
-  mounted() {
-    this.getCourseDetail();
-    this.getClass();
-    this.getGroup();
-    this.getWorks();
-    // this.lookWork();
-  },
-};
-</script>
-
-<style scoped>
-.pb_head>span:nth-child(2) {
-  font-size: 16px;
-  margin-left: 80px;
-  color: #ab582f;
-}
-
-.pb_head {
-  margin: 0 !important;
-  width: 100% !important;
-}
-
-.student_page {
-  margin-top: 10px;
-}
-
-.student_head {
-  margin-top: 10px;
-  padding-bottom: 15px;
-}
-
-.student_search {
-  display: flex;
-}
-
-.student_search>div:nth-child(1) {
-  line-height: 35px;
-  font-size: 14px;
-}
-
-.student_search>>>.el-input__inner {
-  width: 190px;
-  height: 35px;
-  margin-left: 10px;
-}
-
-.student_table>>>.el-table--border td {
-  border-right: 0px !important;
-}
-
-.add_work>>>.el-dialog__header {
-  padding: 20px 20px 10px;
-  text-align: center;
-  background: #32455b;
-}
-
-.add_work>>>.el-dialog__title {
-  font-size: 14px !important;
-  color: #fff !important;
-}
-
-.add_work>>>.el-dialog__headerbtn {
-  font-size: 20px !important;
-  top: 5px !important;
-  right: 8px !important;
-}
-
-.add_work>>>.el-form-item__label {
-  margin-left: 65px;
-}
-
-.add_work>>>.el-form-item {
-  display: flex;
-}
-
-.add_work>>>.el-form-item__content {
-  margin: 0 !important;
-}
-
-.add_work>>>.el-dialog__footer {
-  text-align: center !important;
-}
-
-.add_work>>>.el-dialog {
-  min-width: 650px !important;
-  width: 1080px;
-}
-
-.add_work>>>.el-dialog__body {
-  background: #fff;
-  height: 660px;
-  overflow: auto;
-}
-
-.header-title {
-  display: flex;
-}
-
-.logoImg {
-  width: 30px;
-}
-
-.logoImg>img {
-  width: 100%;
-  height: 100%;
-}
-
-.title_add_student {
-  margin: 0 auto;
-  color: #fff;
-}
-
-.first {
-  margin-top: 25px;
-  border-bottom: 1px solid #c5c5c5;
-}
-
-.one_top {
-  display: flex;
-  justify-content: space-between;
-}
-
-.one_top>div:nth-child(1) {
-  color: #2490bf;
-  font-size: 16px;
-}
-
-.one_top>button {
-  width: 100px;
-  background: #24a0a4;
-  height: 30px;
-  color: #e0e0e0;
-  font-size: 13px;
-  padding: 0 !important;
-}
-
-.work_Img {
-  width: 150px;
-  margin: 10px 0;
-}
-
-.assess_Img {
-  width: 400px;
-  margin: 0 auto;
-  padding: 15px 0;
-}
-
-.work_Img>img,
-.assess_Img>img {
-  width: 100%;
-  height: 100%;
-}
-
-.work_input {
-  border: 1px solid;
-  width: 135px;
-  height: 20px;
-  line-height: 20px;
-  font-size: 13px;
-  padding: 5px;
-}
-
-.poetry {
-  margin: 10px 0 15px 0;
-}
-
-.assess {
-  background: #169bd5 !important;
-}
-
-.assess_top {
-  border-bottom: 2px solid #eee;
-  padding-bottom: 10px;
-}
-
-.assess_top>div:nth-child(1) {
-  color: #2490bf;
-  font-size: 16px;
-}
-
-.student_Answer {
-  display: flex;
-  margin: 5px 10px;
-  /* padding-bottom: 25px; */
-}
-
-.workName {
-  font-size: 18px;
-  font-weight: bold;
-  margin: 5px 10px;
-}
-
-.toux {
-  width: 35px;
-  /* margin: auto 0; */
-  height: 35px;
-}
-
-.toux>img {
-  width: 100%;
-  height: 100%;
-}
-
-.nav {
-  display: flex;
-  flex-wrap: wrap;
-  margin-top: 10px;
-  flex-direction: column;
-}
-
-.studentName {
-  margin-left: 10px;
-  font-size: 13px;
-}
-
-.studentAnswer {
-  font-size: 12px;
-  margin: 5px 0 0 10px;
-  height: 42px;
-  overflow: auto;
-}
-
-.comment {
-  /* margin: 20px 0 0 10px;
-  overflow: auto;
-  height: 75%;
-  max-height: 330px; */
-  overflow: auto;
-  /* height: 290px; */
-  height: 525px;
-  background: #fff;
-  border-radius: 5px;
-  padding: 10px;
-  box-sizing: border-box;
-}
-
-.comment_body {
-  height: calc(100% - 25px);
-  overflow: auto;
-}
-
-.comment>.comment_title {
-  font-size: 18px;
-}
-
-.comment>.comment_title>span {
-  font-size: 14px;
-}
-
-.other_Answer {
-  display: flex;
-  margin: 5px 10px;
-  padding: 15px 0;
-  justify-content: center;
-}
-
-.nav {
-  margin-left: 5px;
-  width: 80%;
-}
-
-.nameAndTime {
-  display: flex;
-}
-
-.otherName {
-  font-weight: bold;
-  margin-left: 10px;
-  font-size: 13px;
-}
-
-.time {
-  margin-left: 25px;
-  font-size: 12px;
-  margin-top: 3px;
-}
-
-.otherAnswer {
-  width: 80%;
-  word-wrap: break-word;
-  word-break: break-all;
-  overflow: hidden;
-  font-size: 12px;
-  margin: 5px 0 0 10px;
-}
-
-.doingAssess {
-  margin: 0 auto;
-  width: 300px;
-  background: #169bd5;
-  height: 35px;
-  line-height: 35px;
-  border-radius: 3px;
-  font-size: 13px;
-  text-align: center;
-  color: #fff;
-  margin-top: 30px;
-  cursor: pointer;
-}
-
-.score_top {
-  display: flex;
-  margin-bottom: 10px;
-}
-
-.userTou {
-  width: 50px;
-}
-
-.userTou>img {
-  width: 100%;
-  height: 100%;
-}
-
-.score_user_name {
-  line-height: 53px;
-  margin-left: 15px;
-}
-
-.course_top {
-  display: flex;
-  align-items: center;
-}
-
-.course_top>div:nth-child(1) {
-  line-height: 25px;
-}
-
-.course_top>div:nth-child(2) {
-  border: 1px solid #ccc;
-  width: 250px;
-  text-align: center;
-  height: 25px;
-  line-height: 25px;
-  margin-left: 30px;
-}
-
-.sd_score {
-  font-size: 15px;
-  background: #fff;
-  height: 100%;
-  padding-top: 40px;
-  border-radius: 5px;
-  width: 90%;
-  box-shadow: 2px 2px 5px #909090;
-  overflow: auto;
-}
-
-.sd_score .score_box {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  margin-bottom: 15px;
-  /* margin-left: 30px; */
-}
-
-.sd_score .score_box:last-child {
-  margin-bottom: 0;
-}
-
-.rate_size>>>.el-rate__icon {
-  font-size: 25px;
-}
-
-.rate_size>>>.el-icon-star-off {
-  font-size: 22px;
-}
-
-.sd_score span {
-  width: 130px;
-  text-align: justify;
-  text-align-last: justify;
-  display: block;
-  margin-right: 20px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  font-size: 16px;
-}
-
-.moreSay {
-  margin: 0px 0 5px 20px;
-}
-
-.more_say_input {
-  margin-left: 20px;
-  width: 80%;
-}
-
-.more_say_input>>>.el-input__inner {
-  height: 75px;
-  font-size: 13px;
-  padding: 0 0 0 10px;
-}
-
-.assess_right {
-  width: 200px;
-  background: #82b0ee;
-  color: #fff;
-  text-align: center;
-  height: 30px;
-  line-height: 30px;
-  border-radius: 5px;
-  margin: 0 auto;
-  margin-top: 20px;
-  font-size: 13px;
-  cursor: pointer;
-}
-
-.student_page {
-  margin-top: 10px;
-}
-
-.display {
-  display: none;
-}
-
-.firstTop {
-  background: #fff;
-  display: flex;
-  margin-bottom: 15px;
-  flex-direction: column;
-  align-items: flex-start;
-  height: 90px;
-  padding: 10px 25px;
-  border-radius: 5px;
-  width: 90%;
-  box-shadow: 2px 2px 5px #909090;
-}
-
-.talkScore>>>.el-dialog__body {
-  background: #efefef;
-  margin: 0 !important;
-}
-
-.lastTop {
-  background: #fff;
-  border-radius: 5px;
-  width: 98%;
-  height: 120px;
-  box-shadow: 2px 2px 5px #909090;
-}
-
-.left,
-.right {
-  /* background: #fff; */
-  border-radius: 5px;
-  /* padding: 10px; */
-  box-sizing: border-box;
-}
-
-.left {
-  margin-right: 10px;
-  width: 30%;
-  min-height: 425px;
-}
-
-/* .left .left_top {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  margin-bottom: 15px;
-} */
-.left .left_bottom {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  height: 160px;
-}
-
-.right {
-  width: 20%;
-  background: none;
-  padding: 0;
-}
-
-.courseTitle {
-  font-size: 16px;
-  color: #7c7c7c;
-  width: 100%;
-  margin-bottom: 10px;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.course_t {
-  font-size: 19px;
-  display: flex;
-  align-items: flex-end;
-}
-
-.course_t span:nth-child(2) {
-  font-size: 16px;
-  margin-left: 10px;
-}
-
-.courseTitle span:nth-child(2) {
-  /* font-size: 14px;
-  cursor: pointer; */
-}
-
-.bigImg {
-  margin-top: 10px;
-  /* height: 300px; */
-  height: 150px;
-}
-
-.bigImg>img,
-.thumbnail>div>img {
-  width: 100%;
-  height: 100%;
-  object-fit: contain;
-}
-
-.thumbnail {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  margin: 5px 0 8px;
-  overflow-x: auto;
-  overflow-y: hidden;
-}
-
-.isClick {
-  border: 3px solid #5f89d4;
-  border-radius: 5px;
-}
-
-.thumbnail>div {
-  width: 80px;
-  height: 80px;
-  margin-right: 5px;
-  cursor: pointer;
-  flex-shrink: 0;
-  box-sizing: border-box;
-}
-
-.zyBoxC {
-  /* background: #ededed; */
-  display: flex;
-  align-items: flex-start;
-  justify-content: center;
-  padding: 20px 0px;
-  flex-direction: column;
-  height: 100%;
-}
-
-.zyBox {
-  display: flex;
-  min-width: 600px;
-  width: 60%;
-  position: relative;
-  background: #fff;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  overflow: hidden;
-}
-
-.zyBoxC+.zyBoxC {
-  margin-top: 10px;
-}
-
-.rbButtom {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  background: #06a7ff;
-  width: 100px;
-  height: 30px;
-  border-radius: 5px;
-  text-align: center;
-  color: #fff;
-  line-height: 30px;
-  font-size: 14px;
-  cursor: pointer;
-  right: 10px;
-}
-
-.bigImg>>>.vjs-tech,
-.bigImg>>>.video-js {
-  height: 300px !important;
-}
-
-.el-table>>>.even_row {
-  background-color: #f1f1f1;
-}
-
-.data_body {
-  height: 200px;
-  display: flex;
-  position: relative;
-  border-radius: 5px;
-  box-sizing: border-box;
-  width: 100%;
-  background: #fff;
-}
-
-.data_body .title {
-  position: absolute;
-  top: 10px;
-  left: 10px;
-}
-
-.dialog_diy>>>.el-dialog__header {
-  padding: 9px 20px 10px;
-  background: #32455b !important;
-}
-
-.dialog_diy>>>.el-dialog__title {
-  color: #fff;
-  font-size: 15px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn {
-  top: 14px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__body,
-.dialog_diy>>>.el-dialog__footer {
-  background: #fafafa;
-}
-
-.max_diy>>>.el-dialog {
-  /* max-width: 1200px; */
-  max-width: 1300px;
-}
-
-.dialog_diy2>>>.el-dialog__header {
-  padding: 9px 20px 10px;
-  background: #32455b !important;
-}
-
-.dialog_diy2>>>.el-dialog__title {
-  color: #fff;
-  font-size: 15px;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn {
-  top: 14px;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-
-.dialog_diy2>>>.el-dialog__body,
-.dialog_diy2>>>.el-dialog__footer {
-  background: #ededed;
-  padding: 15px 20px;
-}
-
-.a_addBox2 {
-  margin: 10px 0;
-  background: #fff;
-  padding: 15px;
-}
-
-.a_addBox {
-  margin: 10px 0;
-  background: #fff;
-  padding: 15px;
-  /* max-height: 400px; */
-  max-height: 160px;
-  overflow: auto;
-}
-
-.a_add_box {
-  border-bottom: 2px solid #eee;
-  padding-bottom: 10px;
-}
-
-.a_add_head {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  margin: 10px 0;
-  font-size: 18px;
-}
-
-.a_add_head .a_add_head_input {
-  width: 300px;
-}
-
-.a_add_head .a_add_head_div {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.a_add_body {
-  display: flex;
-  align-items: center;
-}
-
-.a_add_input {
-  display: flex;
-  align-items: center;
-  flex-wrap: wrap;
-  /* flex-direction: column; */
-  /* width: 100%; */
-}
-
-.a_add_input>>>el-radio-group {
-  margin: 10px 0;
-}
-
-.a_add_input>>>.el-radio-group {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-}
-
-.redioStyle>>>.el-radio__label {
-  font-size: 18px;
-}
-
-.task_title {
-  font-size: 18px;
-  font-weight: 700;
-}
-
-.ask_Answer {
-  /* margin-top: 10px; */
-}
-
-.ask_Answer_title {
-  font-size: 18px;
-}
-
-.ask_Answer_content {
-  display: flex;
-  justify-content: center;
-  margin: 10px 0;
-}
-
-.answer_body {
-  padding: 10px 0;
-  border-bottom: 1px solid #f5f5f5;
-}
-
-.answer_title {
-  font-size: 15px;
-  font-weight: 700;
-}
-
-.answer_content {
-  margin-top: 5px;
-}
-
-.ask_body {
-  display: flex;
-  font-size: 16px;
-  margin-top: 10px;
-  flex-direction: column;
-  height: 130px;
-  overflow: auto;
-  /* padding: 0 10px; */
-  box-sizing: border-box;
-}
-
-.ask_body div {
-  /* cursor: pointer; */
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.ask_body div .btn {
-  cursor: pointer;
-  color: #fff;
-  background-color: #409eff;
-  text-align: center;
-  font-size: 12px;
-  padding: 6px 12px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  width: 60px;
-}
-
-.ask_body div span:nth-child(1) {
-  max-width: 250px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.ask_body div+div {
-  margin-top: 10px;
-}
-
-.work_nopicture {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  /* height: 350px; */
-  height: 352px;
-}
-
-.student_table>>>.el-table,
-.student_table>>>.el-table__body-wrapper {
-  height: auto !important;
-}
-
-.tx {
-  width: 35px;
-}
-
-.ech {
-  width: 100px;
-}
-
-.tx>img,
-.ech>img {
-  width: 100%;
-  height: 100%;
-}
-
-.txName {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  margin-left: 10px;
-}
-
-.txName>div:nth-child(2) {
-  margin-left: 10px;
-}
-
-.top {
-  display: flex;
-  justify-content: space-between;
-  padding: 15px 0 15px 20px;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  width: 95%;
-}
-
-.jdName>div:nth-child(1) {
-  font-size: 20px;
-  font-weight: bold;
-}
-
-.taskName {
-  font-size: 14px;
-  margin-top: 10px;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-}
-
-.task {
-  background: #49a0f0;
-  color: #fff;
-  width: 50px;
-  height: 22px;
-  border-radius: 5px;
-  text-align: center;
-  line-height: 22px;
-  margin-right: 10px;
-}
-
-.contentBox {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  height: 253px;
-}
-
-.left_top {
-  width: 45%;
-  padding-left: 20px;
-}
-
-.right_top {
-  width: 53%;
-}
-
-.cBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  width: 100%;
-  height: calc(100% - 40px);
-}
-
-.right_score {
-  min-width: 370px;
-  height: 351px;
-  margin-left: 10px;
-  width: 40%;
-}
-
-.pb_left {
-  width: 20%;
-  margin-right: 10px;
-  background: rgb(255, 255, 255);
-  /* padding-right: 10px; */
-  height: 100%;
-}
-
-.cTitle {
-  background: #205cc6;
-  width: 85%;
-  margin: 10px auto;
-  height: 50px;
-  color: #fff;
-  line-height: 50px;
-  text-align: center;
-  font-size: 20px;
-  font-weight: bold;
-  border-radius: 5px;
-  cursor: pointer;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  padding: 0 10px;
-}
-
-.ml {
-  margin-left: 20px;
-  color: #5b7dba;
-  border-left: 3px solid #5b7dba;
-  padding-left: 5px;
-  font-weight: bold;
-}
-
-.cru_selectBox {
-  width: 100%;
-  margin: 0 auto;
-  overflow: auto;
-  height: 400px;
-  overflow-x: hidden;
-}
-
-.cru_selectBox::-webkit-scrollbar {
-  /*滚动条整体样式*/
-  width: 6px;
-  /*高宽分别对应横竖滚动条的尺寸*/
-  height: 6px;
-}
-
-/*定义滚动条轨道 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-track {
-  border-radius: 10px;
-  background-color: #b8bdc9;
-}
-
-/*定义滑块 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-thumb {
-  border-radius: 10px;
-  -webkit-box-shadow: inset 0 0 6px rgb(96, 125, 184);
-  background-color: #2c5ab3;
-}
-
-.blue_box_one {
-  text-align: center;
-  color: #fff;
-  background-image: linear-gradient(90deg, #477cd7, #65b9fc);
-  border-radius: 7px;
-  margin: 10px auto;
-  cursor: pointer;
-  width: 95%;
-  height: 45px;
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  align-items: center;
-}
-
-.blue_box_one>div:nth-child(1) {
-  line-height: 30px;
-  margin: 0 5px 0 10px;
-  width: 30%;
-  min-width: 70px;
-  border-radius: 4px;
-}
-
-.blue_box_one>div:nth-child(2) {
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  word-break: break-all;
-  width: 70%;
-  text-align: left;
-  margin-right: 10px;
-  max-width: calc(100% - 85px);
-}
-
-.blue_box_one>div:nth-child(2):hover {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.twoChild {
-  width: 95%;
-  margin: 10px auto;
-  border-radius: 5px;
-  background: #f2f2f2;
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  justify-content: flex-start;
-  align-items: flex-start;
-  transition: all 0.5s;
-  overflow: hidden;
-  height: 0;
-  background: #e7f3ff;
-}
-
-.twoChild>div:nth-child(1) {
-  margin-top: 5px;
-}
-
-.navChild {
-  width: 100%;
-  cursor: pointer;
-  margin-bottom: 10px;
-}
-
-.navActive {
-  height: auto;
-}
-
-.navTask {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  align-content: flex-start;
-  height: 40px;
-  justify-content: flex-start;
-  padding: 0 10px;
-  width: 100%;
-  box-sizing: border-box;
-}
-
-.vedioNav {
-  margin: 10px 0 0 15px;
-  border-bottom: 1px solid #d7d7d7;
-  padding-bottom: 5px;
-  background: #96d1ff;
-  width: 55px;
-  min-width: 55px;
-  border-radius: 5px;
-  color: #fff;
-  text-align: center;
-  height: 20px;
-  line-height: 26px;
-  font-size: 14px;
-}
-
-.navTaskname {
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  word-break: break-all;
-  padding-left: 5px;
-}
-
-.allBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  width: 100%;
-  margin-bottom: 20px;
-}
-
-.shuBox {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-  width: 100%;
-  flex-wrap: nowrap;
-  height: 100%;
-  overflow: auto;
-}
-
-.answerbox {
-  display: flex;
-  flex-direction: row;
-  /* align-items: center; */
-  margin-bottom: 20px;
-  font-size: 18px;
-  font-weight: bold;
-}
-
-.answerbox>div:nth-child(2) {
-  margin-left: 15px;
-}
-
-.answerbox1 {
-  display: flex;
-  flex-direction: column;
-  align-items: flex-start;
-  flex-wrap: nowrap;
-  font-size: 16px;
-}
-
-.answerbox1>div:nth-child(2) {
-  margin-top: 10px;
-  width: 265px;
-  max-height: 147px;
-  overflow: auto;
-}
-
-.jdName {
-  width: 100%;
-}
-
-.full_diy>>>.el-dialog {
-  margin: 0 !important;
-  height: 100%;
-}
-
-.full_diy>>>.el-dialog__body {
-  height: calc(100% - 100px);
-}
-
-.openTaskActive {
-  color: #4386e6;
-}
-
-.isClick {
-  background: #4d9def;
-}
-
-.buttonCss {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  justify-content: flex-end;
-  margin: 10px 0;
-}
-
-.fullStyle>>>.el-dialog__body {
-  height: 100% !important;
-  overflow: auto;
-}
-
-.fullStyle>>>.el-dialog,
-.fullStyle {
-  width: 100% !important;
-  max-width: 100% !important;
-  height: 100% !important;
-  margin: 0 !important;
-}
-
-.worksTime {
-  position: absolute;
-  top: 10px;
-  right: 0;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: baseline;
-}
-
-.fullBox {
-  overflow: unset !important;
-  height: auto !important;
-}
-
-.fullZyBox {
-  width: 60% !important;
-}
-
-.rightScoreFullBox {
-  width: 40%;
-}
-</style>

+ 0 - 2609
src/components/pages/components/worksDetail3GM.vue

@@ -1,2609 +0,0 @@
-<template>
-  <div class="pb_content" style="background: unset; height: 100%">
-    <div class="zyBoxC">
-      <div class="courseTitle" v-if="allWorks.course">
-        <!-- <div class="txName">
-          <div class="tx"><img :src="tx" alt="" /></div>
-          <div>{{ allWorks.sName }}</div>
-        </div>
-        <div>{{ allWorks.course }}</div> -->
-        <div>查看作业</div>
-      </div>
-      <div class="cBox">
-        <div class="pb_left">
-          <el-tooltip class="cTitle" effect="light" :content="allWorks.course" placement="top">
-            <div>{{ allWorks.course }}</div>
-          </el-tooltip>
-          <div class="ml">目录</div>
-          <div class="cru_selectBox">
-            <div v-for="(dy, dyIndex) in dyList2" :key="dyIndex">
-              <div class="blue_box_one" @click="isOpen(dyIndex)">
-                <div>第{{ dy.id + 1 }}阶段</div>
-                <div>{{ dy.name }}</div>
-              </div>
-              <div class="twoChild" :class="{
-                navActive: dy.isOpen,
-              }">
-                <div class="navChild" v-for="(nav, navIndex) in dy.taskList" :key="navIndex">
-                  <div class="navTask" @click="openTask(dy.id, nav.id)" :class="{
-                    openTaskActive:
-                      nav.id == taskCount &&
-                      dy.id + '-' + nav.id == navId &&
-                      dy.id == stageIndex,
-                  }">
-                    <div class="vedioNav" :class="{
-                      isClick:
-                        nav.id == taskCount &&
-                        dy.id + '-' + nav.id == navId &&
-                        dy.id == stageIndex,
-                    }" style="margin: 0">
-                      任务{{ navIndex + 1 }}
-                    </div>
-                    <el-tooltip class="navTaskname item" effect="light" :content="nav.name" placement="top">
-                      <div>{{ nav.name }}</div>
-                    </el-tooltip>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="shuBox" v-if="worksDetail.length" :class="{ fullBox: full }">
-          <div class="allBox" v-for="(sin, sIndex) in sInfo" :key="sIndex">
-            <div class="zyBox" v-if="sin.course" :class="{ fullZyBox: full }">
-              <div class="top">
-                <div class="jdName">
-                  <div>
-                    {{
-                    "第" + (sin.stage + 1) + "阶段 " + dyList[sin.stage].name
-                    }}
-                  </div>
-                  <div class="taskName" style="width: 100%; justify-content: space-between">
-                    <div class="taskName" :id="sin.stage + '-' + sin.task" :scrollindex="sIndex">
-                      <div class="task">任务{{ sin.task + 1 }}</div>
-                      <div>
-                        {{ dyList[sin.stage].taskList[sin.task].name }}
-                      </div>
-                    </div>
-                    <div v-if="worksDetail[sIndex].wpptInfo.length > 0">
-                      <el-button class="btnClassGM" type="primary" size="small" @click="openFile(worksDetail[sIndex].wpptInfo[0])">查看文档
-                      </el-button>
-                    </div>
-                  </div>
-                </div>
-              </div>
-              <div class="contentBox">
-                <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}" v-if="worksDetail[sIndex].img.length > 0">
-                  <div class="bigImg" v-if="
-                    worksDetail[sIndex].img && worksDetail[sIndex].img.length
-                  ">
-                    <img @click="
-                      previewImg(
-                        worksDetail[sIndex].img[worksDetail[sIndex].imgIndex]
-                          .src
-                      )
-                    " :src="
-                      worksDetail[sIndex].img[worksDetail[sIndex].imgIndex]
-                        .src
-                    " alt />
-                  </div>
-                  <div class="thumbnail" v-if="
-                    worksDetail[sIndex].img && worksDetail[sIndex].img.length
-                  ">
-                    <div v-for="(item, index) in worksDetail[sIndex].img" :key="index" :class="
-                      worksDetail[sIndex].imgIndex == index ? 'isClick2' : ''
-                    ">
-                      <img :src="item.src" alt @click="worksDetail[sIndex].imgIndex = index" />
-                    </div>
-                  </div>
-                  <div class="work_nopicture" v-else>暂无上传截图</div>
-                </div>
-                <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}" v-else-if="worksDetail[sIndex].answerInfo.length > 0">
-                  <div class="answerbox">
-                    <div style="min-width: 80px">问答标题</div>
-                    <div>
-                      {{ worksDetail[sIndex].answerInfo[0].answerTitle }}
-                    </div>
-                  </div>
-                  <div class="answerbox1">
-                    <div>学生回答</div>
-                    <div>
-                      {{ worksDetail[sIndex].answerInfo[0].answer }}
-                    </div>
-                  </div>
-                </div>
-                <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}" v-else-if="worksDetail[sIndex].askInfo.length > 0">
-                  <div>
-                    <div class="a_add_title" style="
-                        display: flex;
-                        flex-direction: row;
-                        align-items: center;
-                        justify-content: center;
-                        flex-wrap: wrap;
-                      ">
-                      <div style="margin-right: 20px; font-size: 20px">
-                        标题:
-                      </div>
-                      <div style="font-size: 20px">
-                        {{ worksDetail[sIndex].askInfo[0].askTitle }}
-                      </div>
-                    </div>
-                    <div class="a_addBox">
-                      <div style="font-size: 16px; color: #c7c7c7">
-                        内容
-                      </div>
-                      <div class="a_add_box" v-for="(item1, index1) in worksDetail[sIndex].askInfo[0]
-                      .askCount" :key="index1">
-                        <div class="a_add_head">
-                          <div style="display: flex">
-                            {{ index1 + 1 + "、" }}
-                            <div>
-                              题目:{{
-                              worksDetail[sIndex].askInfo[0].askJson[index1]
-                              .askstitle
-                              }}
-                            </div>
-                          </div>
-                        </div>
-                        <div class="a_add_body">
-                          <div class="a_add_input">
-                            <el-radio-group v-model="
-                              worksDetail[sIndex].askInfo[0].radio[index1]
-                            ">
-                              <el-radio v-for="(item2, checkIndex) in worksDetail[
-                                sIndex
-                              ].askInfo[0].askJson[index1].checkList" :key="checkIndex" :label="checkIndex" disabled
-                                class="redioStyle"><span v-html="item2"></span></el-radio>
-                            </el-radio-group>
-                          </div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                </div>
-                <div class="left_top" :style="{width:worksDetail[sIndex].eList.length?'45%':'95%'}" v-else-if="worksDetail[sIndex].wpptInfo.length > 0">
-                  <div style="height: 238px" @click="openFile(worksDetail[sIndex].wpptInfo[0])">
-                    <div @click="openFile(worksDetail[sIndex].wpptInfo[0])" style="
-                        width: 300px;
-                        height: 300px;
-                        position: absolute;
-                        z-index: 999;
-                      "></div>
-                    <pdf v-if="showPDF" :pdfUrl="worksDetail[sIndex].wpptInfo[0]"
-                      style="width: 100%; height: 520px; overflow: auto"></pdf>
-                    <iframe v-else :src="worksDetail[sIndex].wpptInfo[0]" frameborder="0" width="100%"
-                      height="100%"></iframe>
-                  </div>
-                </div>
-                <div class="right_top" v-show="worksDetail[sIndex].eList.length">
-                  <div class="ech">
-                    <img src="../../../assets/icon/pj/ech.png" alt="" />
-                  </div>
-                  <div class="data_body">
-                    <div style="width: 100%">
-                      <div class="echart charts_canvas" style="width: 100%; height: 100%; margin: 0 0 0 1rem"></div>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div class="right_score" :class="{ rightScoreFullBox: full }">
-              <div class="sd_score" style="
-                  box-sizing: border-box;
-                  width: 100%;
-                  box-shadow: none;
-                  position: relative;
-                ">
-                <div class="worksTime">
-                  作业提交时间:<span style="width: auto">{{ worksDetail[sIndex].time }}
-                  </span>
-                </div>
-                <div class="ech" style="margin-left: 23px">
-                  <img src="../../../assets/icon/pj/score.png" alt="" />
-                </div>
-                <div style="height: 80%;overflow: auto;">
-                  <div class="score_box" v-for="(item, index) in worksDetail[sIndex].eList" :key="index">
-                    <el-tooltip class="item" effect="dark" :content="item.value" placement="top-start">
-                      <span>{{ item.value }}</span>
-                    </el-tooltip>
-                    <el-rate class="rate_size" style="min-width: 120px"
-                      v-model="worksDetail[sIndex].rateList[item.value]" disabled></el-rate>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-    <!-- <div class="student_page">
-        <el-pagination
-          background
-          layout="prev, pager, next"
-          :page-size="10"
-          :total="total"
-          v-if="page"
-          @current-change="handleCurrentChange"
-        ></el-pagination>
-      </div> -->
-    <el-dialog :visible.sync="pictureDialog" size="tiny">
-      <img width="100%" :src="dialogImageUrl" alt />
-    </el-dialog>
-    <el-dialog title="项目评分" :visible.sync="dataVisible" :append-to-body="true" width="1100px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="a_addBox2">
-          <StudentData :studentInfo="studentInfo"></StudentData>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dataVisible = false" class="cancel_button">关 闭</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="查看选择题" :visible.sync="dialogVisible4" :append-to-body="true" width="800px"
-      :before-close="handleClose" class="dialog_diy">
-      <div>
-        <div class="a_add_title" style="
-            display: flex;
-            flex-direction: row;
-            align-items: center;
-            justify-content: center;
-          ">
-          <div style="font-size: 20px">{{ askJson.askTitle }}</div>
-        </div>
-        <div class="a_addBox">
-          <div style="font-size: 16px; color: #c7c7c7">内容</div>
-          <div class="a_add_box" v-for="(item, index) in askJson.askJson" :key="index">
-            <div class="a_add_head">
-              <div style="display: flex">
-                {{ index + 1 + "、" }}
-                <div>题目:{{ item.askstitle }}</div>
-              </div>
-            </div>
-            <div class="a_add_body">
-              <div class="a_add_input">
-                <el-radio-group v-model="askJson.radio[index]">
-                  <el-radio v-for="(item3, checkIndex1) in item.checkList" :key="checkIndex1" :label="checkIndex1"
-                    class="redioStyle" disabled>{{ item3 }}</el-radio>
-                </el-radio-group>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="dialogVisible4 = false" class="cancel_button">关 闭</el-button>
-      </span>
-    </el-dialog>
-    <el-dialog title="文件预览" :visible.sync="dialogVisible6" width="100%" :before-close="handleClose" class="full_diy"
-      :append-to-body="true">
-      <div slot="title" class="header-title">
-        <div style="color: #fff">文件预览</div>
-      </div>
-      <pdf v-if="showPDF" :pdfUrl="pptImgUrl" style="width: 100%; height: 520px; overflow: auto"></pdf>
-      <iframe v-else :src="pptImgUrl" frameborder="0" width="100%" height="600"></iframe>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import StudentData from "./studentData";
-import htmlDocx from "html-docx-js/dist/html-docx";
-import saveAs from "file-saver";
-export default {
-  components: {
-    StudentData,
-  },
-  props: ["cid", "uid", "ooid"],
-  data() {
-    return {
-      tableHeight: "500px",
-      isLoading: false,
-      id: this.cid,
-      userid: this.uid,
-      oid: this.ooid,
-      formLabelWidth: "100px",
-      dialogImageUrl: "",
-      pictureDialog: false,
-      dialogVisible3: false,
-      dialogVisible4: false,
-      dataVisible: false,
-      full: false,
-      isStar: 0,
-      studentInfo: {},
-      courseByUser: "诗词中的植物",
-      userName: "林点",
-      answerName: "宿赞公房",
-      studentAnswer: "雨荒深院菊,霜倒半池莲.唐杜甫《宿赞公房》",
-      commentCount: 0,
-      publicIndex: 0,
-      allWorks: [],
-      playerOptions: {
-        playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
-        autoplay: false, //如果true,浏览器准备好时开始回放。
-        muted: false, // 默认情况下将会消除任何音频。
-        loop: false, // 导致视频一结束就重新开始。
-        preload: "auto", // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
-        language: "zh-CN",
-        aspectRatio: "16:9", // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
-        fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
-        sources: [
-          {
-            type: "video/mp4", //这里的种类支持很多种:基本视频格式、直播、流媒体等,具体可以参看git网址项目   || "video/ogg"|| "video/webm"
-            src: "", //url地址require("../../../assets/media/aaa.mp4")
-          },
-        ],
-        // poster: require("../../../assets/tu31.png"), //你的封面地址
-        // poster: dataRes.imgUrl, //你的封面地址
-        notSupportedMessage: "此视频暂无法播放,请稍后再试", //允许覆盖Video.js无法播放媒体源时显示的默认信息。
-        controlBar: {
-          timeDivider: true, //当前时间和持续时间的分隔符
-          durationDisplay: true, //显示持续时间
-          remainingTimeDisplay: false, //是否显示剩余时间功能
-          fullscreenToggle: true, //全屏按钮
-        },
-      },
-      playerO: {},
-      commentName: "谭子松",
-      commentTime: "2021/2/5",
-      commentAnswer:
-        "作为家长我很高兴看到孩子的进步,希望这个进步只是一个开始,在新学期能够继续延续,这样才能不负老师的期望",
-      stageIndex: "",
-      taskCount: "",
-      navId: "",
-      chooseTask: "",
-      subjectJuri: [],
-      projectJuri: [],
-      pptImgUrl: "",
-      grade: [],
-      mr: require("../../../assets/icon/wheel.png"),
-      tx: require("../../../assets/avatar.png"),
-      projectchoose: "",
-      scopeId: "",
-      thumbnail: [],
-      rateList: {
-        ca: 0,
-        sia: 0,
-        eta: 0,
-        pia: 0,
-        lra: 0,
-        content: "",
-      },
-      page: 1,
-      total: 0,
-      worksDetail: [],
-      suserId: "",
-      sInfo: {},
-      chapInfo: [],
-      showPDF: false,
-      dialogVisible6: false,
-      vedio: [],
-      file: [],
-      tType: 0,
-      chartObj: [],
-      pptImgUrl: "",
-      ooption: [],
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        series: [
-          {
-            name: "量规评分",
-            type: "pie",
-            radius: "70%",
-            center: ["50%", "50%"],
-            data: [
-              { value: 0, name: "意识能力" },
-              { value: 0, name: "科学探究能力" },
-              { value: 0, name: "实践创新能力" },
-              { value: 0, name: "学习反思能力" },
-              { value: 0, name: "工程思维能力" },
-            ],
-            itemStyle: {
-              emphasis: {
-                shadowBlur: 10,
-                shadowOffsetX: 0,
-                shadowColor: "rgba(0, 0, 0, 0.5)",
-              },
-              normal: {
-                label: {
-                  show: true,
-                  formatter: "{d}%",
-                  inside: true,
-                  position: "inner",
-                },
-                labelLine: { show: false },
-              },
-            },
-          },
-        ],
-      },
-      // 雷达图的数据
-      radarOption: {
-        splitNumber: 5,
-        tooltip: {
-          triggerOn: "mousemove",
-          //雷达图的tooltip不会超出div,也可以设置position属性,position定位的tooltip 不会随着鼠标移动而位置变化,不友好
-          confine: true,
-          enterable: true, //鼠标是否可以移动到tooltip区域内
-          backgroundColor: "rgba(255,255,255,0.7)",
-          textStyle: {
-            // 文字样式
-            align: "left",
-          },
-          left: "right",
-          top: "bottom",
-        },
-        radar: {
-          radius: ["0%", "70%"],
-          shape: "circle",
-          center: ["50%", "50%"],
-          axisName: {
-            textStyle: {
-              // 文字样式
-              color: "#58a5e6",
-            },
-            formatter: function (value, indicator) {
-              // value = value.replace(/\S{2}/g, function (match) {
-              //   return match + "\n";
-              // });
-              return value;
-            },
-          },
-          indicator: [
-            // 雷达图的指示器,用来指定雷达图中的多个变量(维度)
-          ],
-        },
-        // 雷达图背景的颜色,在这儿随便设置了一个颜色,完全不透明度为0,就实现了透明背景
-        splitArea: {
-          show: true,
-          areaStyle: {
-            color: "rgba(255,0,0,0)", // 图表背景的颜色
-          },
-        },
-        splitLine: {
-          show: true,
-          lineStyle: {
-            width: 1,
-            color: "rgba(131,141,158,.1)", // 设置网格的颜色
-          },
-        },
-        series: [
-          {
-            name: "能力图", // tooltip中的标题
-            type: "radar", // 表示是雷达图
-            symbol: "circle", // 拐点的样式,还可以取值'rect','angle'等
-            symbolSize: 8, // 拐点的大小
-            areaStyle: {
-              normal: {
-                width: 1,
-                opacity: 0.2,
-              },
-            },
-            data: [
-              {
-                // 设置各个指标原始值
-                value: [],
-                // 设置区域边框和区域的颜色
-                itemStyle: {
-                  normal: {
-                    color: "#5c549f",
-                    lineStyle: {
-                      color: "#5c549f",
-                    },
-                  },
-                },
-              },
-            ],
-          },
-        ],
-      },
-      askJson: {},
-      dyList: [],
-      dyList2: [],
-      userAarray: [],
-    };
-  },
-  //   mounted() {
-  //     this.$nextTick(function () {
-  //       this.tableHeight =
-  //         window.innerHeight - this.$refs.table.$el.offsetTop - 200;
-  //       if (this.tableHeight <= 530) {
-  //         this.tableHeight = 530;
-  //       }
-  //       // 监听窗口大小变化
-  //       let self = this;
-  //       window.onresize = function () {
-  //         self.tableHeight =
-  //           window.innerHeight - self.$refs.table.$el.offsetTop - 200;
-  //         if (self.tableHeight <= 530) {
-  //           self.tableHeight = 530;
-  //         }
-  //       };
-  //     });
-  //   },
-  methods: {
-    previewImg(url) {
-      this.$hevueImgPreview(url);
-    },
-    lookData(uid) {
-      let params = {
-        uid: uid,
-        cid: this.id,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail", params)
-        .then((res) => {
-          this.studentInfo = res.data[0][0];
-          this.dataVisible = true;
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    handleClose(done) {
-      done();
-    },
-    tableRowClassName({ row, rowIndex }) {
-      if ((rowIndex + 1) % 2 === 0) {
-        return "even_row";
-      } else {
-        return "";
-      }
-    },
-    handleCurrentChange(val) {
-      this.page = val;
-      this.getWorks();
-    },
-    lookWork() {
-      // this.scopeId = id;
-      let params = {
-        uid: this.uid,
-        cid: this.cid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail3", params)
-        .then((res) => {
-          this.sInfo = res.data[0];
-          var chapters = [],
-            eList = [],
-            _ooption = [],
-            _rate = [],
-            _rateList = [];
-          var worksDetail = res.data[1];
-          // this.scopeId = res.data[2][0].id;
-          // var scopeId = res.data[2][0].id;
-          var askInfo = res.data[3];
-          var answerInfo = res.data[4];
-          var pptInfo = res.data[5];
-          var workJson = [];
-          for (var k = 0; k < res.data[0].length; k++) {
-            this.allWorks = res.data[0][k];
-            this.chapInfo.push(JSON.parse(res.data[0][k].chapters));
-            chapters.push(JSON.parse(res.data[0][k].chapters));
-            if (!chapters[0][res.data[0][k].stage].chapterInfo[0].taskJson[
-              res.data[0][k].task
-            ]) {
-              continue
-            }
-
-            workJson.push({
-              img: [],
-              imgIndex: 0,
-              eList: [],
-              rateList: {},
-              askInfo: [],
-              answerInfo: [],
-              wpptInfo: [],
-              scopeId: res.data[0][k].id,
-              stagetask: "",
-              time: "",
-            });
-            // this.allWorks = res.data[0][k];
-            // this.chapInfo.push(JSON.parse(res.data[0][k].chapters));
-            // chapters.push(JSON.parse(res.data[0][k].chapters));
-            eList =
-              chapters[0][res.data[0][k].stage].chapterInfo[0].taskJson[
-                res.data[0][k].task
-              ].eList;
-            workJson[k].time = res.data[0][k].time;
-            workJson[k].stagetask =
-              res.data[0][k].stage + "-" + res.data[0][k].task;
-            if (eList && eList.length > 0) {
-              _ooption = [];
-              workJson[k].eList = eList;
-              for (var i = 0; i < eList.length; i++) {
-                _ooption.push({ value: 0, name: eList[i].value });
-                workJson[k].rateList[eList[i].value] = 0;
-              }
-              workJson[k].rateList.content = "";
-              this.ooption[k] = _ooption;
-            }
-            //  else {
-            //   _ooption = [];
-            //   workJson[k].eList = [
-            //     { value: "意识能力", detail: "", score: 5 },
-            //     { value: "科学探究能力", detail: "", score: 5 },
-            //     { value: "实践创新能力", detail: "", score: 5 },
-            //     { value: "学习反思能力", detail: "", score: 5 },
-            //     { value: "工程思维能力", detail: "", score: 5 },
-            //   ];
-            //   for (var i = 0; i < workJson[k].eList.length; i++) {
-            //     _ooption.push({ value: 0, name: workJson[k].eList[i].value });
-            //     workJson[k].rateList[workJson[k].eList[i].value] = 0;
-            //   }
-            //   workJson[k].rateList.content = "";
-            //   this.ooption[k] = [
-            //     { value: 0, name: "意识能力" },
-            //     { value: 0, name: "科学探究能力" },
-            //     { value: 0, name: "实践创新能力" },
-            //     { value: 0, name: "学习反思能力" },
-            //     { value: 0, name: "工程思维能力" },
-            //   ];
-            // }
-            if (res.data[0][k].rate && eList && eList.length > 0) {
-              _rate[k] = JSON.parse(res.data[0][k].rate);
-              _rateList[k] = Object.keys(JSON.parse(res.data[0][k].rate));
-              for (var i = 0; i < _rateList[k].length; i++) {
-                var _c = Object.keys(workJson[k].rateList);
-                if (_c.indexOf(_rateList[k][i]) != -1) {
-                  workJson[k].rateList[_rateList[k][i]] =
-                    _rate[k][_rateList[k][i]];
-                }
-              }
-              for (var i = 0; i < this.ooption[k].length; i++) {
-                if (_rateList[k].indexOf(this.ooption[k][i].name) != -1) {
-                  this.ooption[k][i].value = _rate[k][this.ooption[k][i].name];
-                }
-              }
-            } else {
-              _rate[k] = [];
-              _rateList[k] = [];
-            }
-
-            for (var i = 0; i < worksDetail.length; i++) {
-              if (
-                res.data[0][k].stage == worksDetail[i].stage &&
-                res.data[0][k].task == worksDetail[i].task
-              ) {
-                workJson[k].img.push({ src: worksDetail[i].content, id: i });
-              }
-            }
-            for (var i = 0; i < askInfo.length; i++) {
-              if (
-                res.data[0][k].stage == askInfo[i].stage &&
-                res.data[0][k].task == askInfo[i].task
-              ) {
-                const element = askInfo[i];
-                let a = JSON.parse(element.content)[0];
-                let b = a.anwer.split(",");
-                let c = [];
-                for (var j = 0; j < b.length; j++) {
-                  c.push(parseInt(b[j]));
-                }
-                a.askJson.radio = c;
-                a.askJson.time = element.time;
-                workJson[k].askInfo.push(a.askJson);
-              }
-            }
-
-            for (var i = 0; i < pptInfo.length; i++) {
-              if (
-                res.data[0][k].stage == pptInfo[i].stage &&
-                res.data[0][k].task == pptInfo[i].task
-              ) {
-                var a = ["PPT", "PPTX", "XLSX", "XLS", "DOC", "DOCX"];
-                if (
-                  a.indexOf(
-                    pptInfo[i].content
-                      .split(".")
-                    [
-                      pptInfo[i].content.split(".").length - 1
-                    ].toLocaleUpperCase()
-                  ) != -1
-                ) {
-                  var a =
-                    "https://view.officeapps.live.com/op/view.aspx?src=" +
-                    pptInfo[i].content;
-                  workJson[k].wpptInfo.push(a);
-                  this.showPDF = false;
-                } else if (
-                  pptInfo[i].content
-                    .split(".")
-                  [
-                    pptInfo[i].content.split(".").length - 1
-                  ].toLocaleUpperCase() == "PDF"
-                ) {
-                  workJson[k].wpptInfo.push(pptInfo[i].content);
-                  this.showPDF = true;
-                }
-              }
-            }
-
-            for (var i = 0; i < answerInfo.length; i++) {
-              if (
-                res.data[0][k].stage == answerInfo[i].stage &&
-                res.data[0][k].task == answerInfo[i].task
-              ) {
-                const element = answerInfo[i];
-                workJson[k].answerInfo.push(JSON.parse(element.content)[0]);
-              }
-            }
-          }
-
-          this.worksDetail = workJson;
-
-          this.courseDetail = res.data[0][0];
-
-          this.$forceUpdate;
-          this.dialogVisible3 = true;
-          setTimeout(() => {
-            for (var p = 0; p < res.data[0].length; p++) {
-              if (!this.ooption[p]) {
-                this.chartObj[p] = null;
-                continue
-              }
-              var _ooption = JSON.parse(JSON.stringify(this.ooption[p]));
-              var _option = JSON.parse(JSON.stringify(this.radarOption));
-              _option.radar.indicator = [];
-              _option.series[0].data[0].value = [];
-              for (var i = 0; i < _ooption.length; i++) {
-                _option.radar.indicator.push({
-                  name: _ooption[i].name,
-                  max: 5,
-                });
-                _option.series[0].data[0].value.push(_ooption[i].value);
-              }
-              console.log(_option);
-              this.setChart(_option, p);
-            }
-          }, 0);
-
-          let _dyList = JSON.parse(JSON.stringify(this.dyList));
-          let _dyList2 = [];
-          let _dyList3 = [];
-          for (var c = 0; c < _dyList.length; c++) {
-            _dyList[c].taskList = [];
-            _dyList2.push(_dyList[c]);
-          }
-          _dyList = JSON.parse(JSON.stringify(this.dyList));
-          for (var c = 0; c < workJson.length; c++) {
-            let _stage = workJson[c].stagetask.split("-")[0];
-            let _task = workJson[c].stagetask.split("-")[1];
-            _dyList2[_stage].taskList.push(_dyList[_stage].taskList[_task]);
-            _dyList2[_stage].taskList;
-          }
-          for (var c = 0; c < _dyList2.length; c++) {
-            if (_dyList2[c].taskList.length) {
-              _dyList2[c].isOpen = c === 0 ? true : false;
-              _dyList3.push(_dyList2[c]);
-            }
-          }
-          this.dyList2 = _dyList3;
-          this.stageIndex = this.dyList2[0].id;
-          this.taskCount = this.dyList2[0].taskList[0].id;
-          this.navId =
-            this.dyList2[0].id + "-" + this.dyList2[0].taskList[0].id;
-          this.$forceUpdate();
-          // this.sInfo = res.data[0][0];
-          // this.chapInfo = JSON.parse(res.data[0][0].chapters);
-          // var chapters = JSON.parse(res.data[0][0].chapters);
-          // var worksDetail = res.data[1];
-          // // var askArray = res.data[2];
-          // this.scopeId = res.data[2].length ? res.data[2][0].id : this.sInfo.id;
-          // var askInfo = res.data[3];
-          // var answerInfo = res.data[4];
-          // var workJson = {
-          //   img: [],
-          //   imgIndex: 0,
-          //   eList: [],
-          //   rateList: {},
-          //   askInfo: [],
-          //   answerInfo: [],
-          // };
-          // var eList =
-          //   chapters[this.sInfo.stage].chapterInfo[0].taskJson[this.sInfo.task]
-          //     .eList;
-          // var _ooption = [];
-          // if (eList) {
-          //   workJson.eList = eList;
-          //   for (var i = 0; i < eList.length; i++) {
-          //     _ooption.push({ value: 0, name: eList[i].value });
-          //     workJson.rateList[eList[i].value] = 0;
-          //   }
-          //   workJson.rateList.content = "";
-          //   this.ooption = _ooption;
-          // } else {
-          //   workJson.eList = [
-          //     { value: "意识能力", detail: "", score: 5 },
-          //     { value: "科学探究能力", detail: "", score: 5 },
-          //     { value: "实践创新能力", detail: "", score: 5 },
-          //     { value: "学习反思能力", detail: "", score: 5 },
-          //     { value: "工程思维能力", detail: "", score: 5 },
-          //   ];
-          //   for (var i = 0; i < workJson.eList.length; i++) {
-          //     _ooption.push({ value: 0, name: workJson.eList[i].value });
-          //     workJson.rateList[workJson.eList[i].value] = 0;
-          //   }
-          //   workJson.rateList.content = "";
-          //   this.ooption = [
-          //     { value: 0, name: "意识能力" },
-          //     { value: 0, name: "科学探究能力" },
-          //     { value: 0, name: "实践创新能力" },
-          //     { value: 0, name: "学习反思能力" },
-          //     { value: 0, name: "工程思维能力" },
-          //   ];
-          // }
-          // if (this.sInfo.rate) {
-          //   var _rate = JSON.parse(this.sInfo.rate);
-          //   var _rateList = Object.keys(JSON.parse(this.sInfo.rate));
-          //   for (var i = 0; i < _rateList.length; i++) {
-          //     var _c = Object.keys(workJson.rateList);
-          //     if (_c.indexOf(_rateList[i]) != -1) {
-          //       workJson.rateList[_rateList[i]] = _rate[_rateList[i]];
-          //     }
-          //   }
-          //   for (var i = 0; i < this.ooption.length; i++) {
-          //     if (_rateList.indexOf(this.ooption[i].name) != -1) {
-          //       this.ooption[i].value = _rate[this.ooption[i].name];
-          //     }
-          //   }
-          // }
-
-          // for (var i = 0; i < worksDetail.length; i++) {
-          //   workJson.img.push({ src: worksDetail[i].content, id: i });
-          // }
-          // for (var i = 0; i < askInfo.length; i++) {
-          //   const element = askInfo[i];
-          //   let a = JSON.parse(element.content)[0];
-          //   let b = a.anwer.split(",");
-          //   let c = [];
-          //   for (var j = 0; j < b.length; j++) {
-          //     c.push(parseInt(b[j]));
-          //   }
-          //   a.askJson.radio = c;
-          //   a.askJson.time = element.time;
-          //   workJson.askInfo.push(a.askJson);
-          // }
-
-          // for (var i = 0; i < answerInfo.length; i++) {
-          //   const element = answerInfo[i];
-          //   workJson.answerInfo.push(JSON.parse(element.content)[0]);
-          // }
-
-          // this.worksDetail = workJson;
-
-          // this.courseDetail = res.data[0][0];
-
-          // this.$forceUpdate;
-          // this.dialogVisible3 = true;
-
-          // setTimeout(() => {
-          //   var _ooption = JSON.parse(JSON.stringify(this.ooption));
-          //   var _option = this.radarOption;
-          //   _option.radar.indicator = [];
-          //   _option.series[0].data[0].value = [];
-          //   for (var i = 0; i < _ooption.length; i++) {
-          //     _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-          //     _option.series[0].data[0].value.push(_ooption[i].value);
-          //   }
-          //   console.log(_option);
-          //   this.setChart(_option);
-
-          // }, 0);
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    checkAsk(askJson) {
-      this.askJson = askJson;
-      this.dialogVisible4 = true;
-    },
-    setChart(option, k) {
-      let _this = this;
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        console.log(_this.option);
-
-        const chartObj = _this.$echarts.init(
-          //劳动课程
-          // _this.$el.querySelector("#charts_canvas")
-          document.getElementsByClassName("charts_canvas")[k]
-        );
-        // 初始化雷达图
-        _this.chartObj[k] = chartObj;
-        _this.chartObj[k].setOption(option);
-      });
-    },
-    openFile(f) {
-      this.pptImgUrl = f;
-      this.dialogVisible6 = true;
-    },
-    //获取班级列表
-    getClass() {
-      this.isLoading = true;
-      let params = {
-        oid: this.oid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectClassBySchool", params)
-        .then((res) => {
-          this.isLoading = false;
-          this.grade = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    //获取分组分类
-    getGroup() {
-      let params = {};
-      this.ajax
-        .get(this.$store.state.api + "getGroup", params)
-        .then((res) => {
-          this.subjectJuri = res.data[0];
-          this.projectJuri = res.data[0];
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    searchWork1() {
-      this.page = 1;
-      this.chooseTask = "";
-      this.getWorks();
-    },
-    searchWork2() {
-      this.page = 1;
-      this.getWorks();
-    },
-    //获取作业
-    getWorks() {
-      this.isLoading = true;
-      var mr = this.mr;
-      let params = {
-        cid: this.id,
-        uname: this.uname,
-        stage: this.chooseDy,
-        task: this.chooseTask,
-        page: this.page,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseWorks3", params)
-        .then((res) => {
-          this.isLoading = false;
-          this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
-          this.tableData = res.data[0];
-        })
-        .catch((err) => {
-          this.isLoading = false;
-          console.error(err);
-        });
-    },
-    fullTools() {
-      this.full = !this.full;
-    },
-    getCourseDetail() {
-      let params = {
-        cid: this.cid,
-      };
-      this.ajax
-        .get(this.$store.state.api + "getCourseWorksReport", params)
-        .then((res) => {
-          this.course = res.data[0][0];
-          var dyJSON = JSON.parse(res.data[0][0].chapters);
-          let dyList = [];
-          for (var i = 0; i < dyJSON.length; i++) {
-            dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
-            var a = dyJSON[i].chapterInfo[0].taskJson;
-            for (var j = 0; j < a.length; j++) {
-              dyList[i].taskList.push({ name: a[j].task, id: j });
-            }
-          }
-          this.dyList = dyList;
-          this.userAarray = res.data[1];
-          this.lookWork();
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    // getCourseDetail() {
-    //   const loading = this.$loading.service({
-    //     background: "rgba(255, 255, 255, 0.7)",
-    //     target: document.querySelector(".student_table"),
-    //   });
-    //   console.log(this.id);
-    //   let params = {
-    //     courseId: this.id,
-    //   };
-    //   this.ajax
-    //     .get(this.$store.state.api + "selectCourseDetail", params)
-    //     .then((res) => {
-    //       loading.close();
-    //       // this.chapInfo = JSON.parse(res.data[0][0].chapters);
-    //       var dyJSON = JSON.parse(res.data[0][0].chapters);
-    //       let dyList = [];
-    //       for (var i = 0; i < dyJSON.length; i++) {
-    //         dyList.push({ name: dyJSON[i].dyName, id: i, taskList: [] });
-    //         var a = dyJSON[i].chapterInfo[0].taskJson;
-    //         for (var j = 0; j < a.length; j++) {
-    //           dyList[i].taskList.push({ name: a[j].task, id: j });
-    //         }
-    //       }
-    //       console.log(dyList);
-    //       this.dyList = dyList;
-    //       // var dyJSON = JSON.parse()
-    //     })
-    //     .catch((err) => {
-    //       loading.close();
-    //       console.error(err);
-    //     });
-    // },
-    handlePictureCardPreview(url) {
-      this.dialogImageUrl = url;
-      this.pictureDialog = true;
-    },
-    updatePj() {
-      for (var i = 0; i < this.worksDetail.length; i++) {
-        this.updateWorks(
-          this.worksDetail[i].scopeId,
-          this.worksDetail[i].rateList,
-          i
-        );
-      }
-    },
-    getStar(i) {
-      const k = i;
-      var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-      var _rate = this.worksDetail[i].rateList;
-      var _rateList = Object.keys(this.worksDetail[i].rateList);
-      for (var i = 0; i < _ooption.length; i++) {
-        if (_rateList.indexOf(_ooption[i].name) != -1) {
-          _ooption[i].value = _rate[_ooption[i].name];
-        }
-      }
-      // var _option = JSON.parse(JSON.stringify(this.radarOption));
-      var _option = this.radarOption;
-      _option.radar.indicator = [];
-      _option.series[0].data[0].value = [];
-      for (var i = 0; i < _ooption.length; i++) {
-        _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-        _option.series[0].data[0].value.push(_ooption[i].value);
-      }
-      if (this.chartObj) {
-        // _option.series[0].data = _ooption;
-        this.chartObj[k].setOption(_option);
-      } else {
-        this.setChart(_ooption);
-      }
-    },
-    updateWorks(scopeId, rateList, i) {
-      let params = {
-        rate: rateList,
-        tuid: this.userid,
-        id: scopeId,
-      };
-      const k = i;
-      this.ajax
-        .get(this.$store.state.api + "updateWorks", params)
-        .then((res) => {
-          var _ooption = JSON.parse(JSON.stringify(this.ooption[k]));
-          // var _option = JSON.parse(JSON.stringify(this.option));
-
-          var _rate = rateList;
-          var _rateList = Object.keys(rateList);
-          for (var i = 0; i < _ooption.length; i++) {
-            if (_rateList.indexOf(_ooption[i].name) != -1) {
-              _ooption[i].value = _rate[_ooption[i].name];
-            }
-          }
-
-          // var _option = JSON.parse(JSON.stringify(this.radarOption));
-          var _option = this.radarOption;
-          _option.radar.indicator = [];
-          _option.series[0].data[0].value = [];
-          for (var i = 0; i < _ooption.length; i++) {
-            _option.radar.indicator.push({ name: _ooption[i].name, max: 5 });
-            _option.series[0].data[0].value.push(_ooption[i].value);
-          }
-          console.log(_option);
-          if (this.chartObj) {
-            // _option.series[0].data = _ooption;
-            this.chartObj[k].setOption(_option);
-          } else {
-            this.setChart(_ooption);
-          }
-          // this.uploadBoolean = false;
-          if (k == this.worksDetail.length - 1) {
-            this.$message({
-              message: "评价成功",
-              type: "success",
-            });
-          }
-        })
-        .catch((err) => {
-          this.$message.error("评价失败");
-          console.error(err);
-        });
-    },
-    switchVideo(media, index) {
-      this.playerO = {};
-      this.playerOptions.poster = "";
-      this.playerOptions.sources[0].src = media;
-      this.playerO = this.playerOptions;
-    },
-    onPlayerPlay() { },
-    // this.$store.commit("update", ["userInfo", userInfo]);
-    lookWork2(id, uid, stage, task) {
-      // this.scopeId = id;
-      let params = {
-        uid: uid,
-        cid: this.id,
-        stage: stage,
-        task: task,
-      };
-      this.ajax
-        .get(this.$store.state.api + "selectWorksDetail2", params)
-        .then((res) => {
-          this.sInfo = res.data[0][0];
-          this.chapInfo = JSON.parse(res.data[0][0].chapters);
-          var chapters = JSON.parse(res.data[0][0].chapters);
-          var worksDetail = res.data[1];
-          // var askArray = res.data[2];
-          this.scopeId = res.data[2].length ? res.data[2][0].id : this.sInfo.id;
-          var askInfo = res.data[3];
-          var answerInfo = res.data[4];
-          var linkInfo = res.data[5];
-          var workJson = {
-            img: [],
-            imgIndex: 0,
-            eList: [],
-            rateList: {},
-            wpptInfo: [],
-            askInfo: [],
-            answerInfo: [],
-          };
-          var eList =
-            chapters[this.sInfo.stage].chapterInfo[0].taskJson[this.sInfo.task]
-              .eList;
-          //           ooption: [
-          //   { value: 0, name: "意识能力" },
-          //   { value: 0, name: "科学探究能力" },
-          //   { value: 0, name: "实践创新能力" },
-          //   { value: 0, name: "学习反思能力" },
-          //   { value: 0, name: "工程思维能力" },
-          // ],
-          var _ooption = [];
-          if (eList) {
-            workJson.eList = eList;
-            for (var i = 0; i < eList.length; i++) {
-              _ooption.push({ value: 0, name: eList[i].value });
-              workJson.rateList[eList[i].value] = 0;
-            }
-            workJson.rateList.content = "";
-            this.ooption = _ooption;
-          } else {
-            workJson.eList = [
-              { value: "意识能力", detail: "", score: 5 },
-              { value: "科学探究能力", detail: "", score: 5 },
-              { value: "实践创新能力", detail: "", score: 5 },
-              { value: "学习反思能力", detail: "", score: 5 },
-              { value: "工程思维能力", detail: "", score: 5 },
-            ];
-            for (var i = 0; i < workJson.eList.length; i++) {
-              _ooption.push({ value: 0, name: workJson.eList[i].value });
-              workJson.rateList[workJson.eList[i].value] = 0;
-            }
-            workJson.rateList.content = "";
-            this.ooption = [
-              { value: 0, name: "意识能力" },
-              { value: 0, name: "科学探究能力" },
-              { value: 0, name: "实践创新能力" },
-              { value: 0, name: "学习反思能力" },
-              { value: 0, name: "工程思维能力" },
-            ];
-          }
-          if (this.sInfo.rate) {
-            var _rate = JSON.parse(this.sInfo.rate);
-            var _rateList = Object.keys(JSON.parse(this.sInfo.rate));
-            for (var i = 0; i < _rateList.length; i++) {
-              var _c = Object.keys(workJson.rateList);
-              if (_c.indexOf(_rateList[i]) != -1) {
-                workJson.rateList[_rateList[i]] = _rate[_rateList[i]];
-              }
-            }
-            for (var i = 0; i < this.ooption.length; i++) {
-              if (_rateList.indexOf(this.ooption[i].name) != -1) {
-                this.ooption[i].value = _rate[this.ooption[i].name];
-              }
-            }
-          }
-
-          for (var i = 0; i < worksDetail.length; i++) {
-            workJson.img.push({ src: worksDetail[i].content, id: i });
-          }
-          for (var i = 0; i < askInfo.length; i++) {
-            const element = askInfo[i];
-            let a = JSON.parse(element.content)[0];
-            let b = a.anwer.split(",");
-            let c = [];
-            for (var j = 0; j < b.length; j++) {
-              c.push(parseInt(b[j]));
-            }
-            a.askJson.radio = c;
-            a.askJson.time = element.time;
-            workJson.askInfo.push(a.askJson);
-          }
-
-          for (var i = 0; i < answerInfo.length; i++) {
-            const element = answerInfo[i];
-            workJson.answerInfo.push(JSON.parse(element.content)[0]);
-          }
-
-          this.worksDetail = workJson;
-
-          this.courseDetail = res.data[0][0];
-
-          this.$forceUpdate;
-
-          var _course = `<h1>${this.sInfo.course}</h1>`;
-          var _title =
-            "<h2>" +
-            "第" +
-            (this.sInfo.stage + 1) +
-            "阶段 " +
-            this.dyList[this.sInfo.stage].name +
-            "</h2>";
-          var _subtitle =
-            "<h3>" +
-            "任务" +
-            (this.sInfo.task + 1) +
-            " " +
-            this.dyList[this.sInfo.stage].taskList[this.sInfo.task].name +
-            "-" +
-            this.sInfo.sName +
-            "</h3>";
-          var _img = "";
-          if (workJson.img.length > 0) {
-            for (var i = 0; i < workJson.img.length; i++) {
-              // _img += `<div style="margin-top:10px"><div>图片${
-              //   i + 1
-              // }:<a href='${workJson.img[i].src}'>${
-              //   workJson.img[i].src
-              // }</a></div>`;
-              _img += `<div style="margin-top:10px"><div>图片${i + 1
-                }</div><img style="max-width:500px" src="${workJson.img[i].src
-                }"/></div>`;
-            }
-          }
-
-          var _ask = "";
-          if (workJson.askInfo.length > 0) {
-            var _ask = "<h3>选择题</h3>";
-            for (var i = 0; i < workJson.askInfo.length; i++) {
-              var _div = document.createElement("div");
-              _div.innerHTML = `<h4>标题:${workJson.askInfo[i].askTitle}</h4>`;
-              for (var j = 0; j < workJson.askInfo[i].askJson.length; j++) {
-                var _div2 = document.createElement("div");
-                _div2.innerHTML = `<h5>第${j + 1}题:${workJson.askInfo[i].askJson[j].askstitle
-                  }  选择:${workJson.askInfo[i].radio[j] + 1}</h5> `;
-                var _div3 = document.createElement("div");
-                for (
-                  var z = 0;
-                  z < workJson.askInfo[i].askJson[j].checkList.length;
-                  z++
-                ) {
-                  _div3.innerHTML += `<span style="margin-right:5px">${z + 1}.${workJson.askInfo[i].askJson[j].checkList[z]
-                    }</span>`;
-                }
-                _div2.innerHTML += `<div>${_div3.innerHTML}</div>`;
-                _div.innerHTML += `<div>${_div2.innerHTML}</div>`;
-              }
-              _ask += `<div>${_div.innerHTML}</div>`;
-            }
-          }
-
-          var _answer = "";
-          if (workJson.answerInfo.length > 0) {
-            var _answer = "<h3>问答</h3>";
-            for (var i = 0; i < workJson.answerInfo.length; i++) {
-              var _div = document.createElement("div");
-              _div.innerHTML = `<h4>问答:${workJson.answerInfo[i].answerTitle}</h4>`;
-              _div.innerHTML += `<div>${workJson.answerInfo[i].answer}</div>`;
-              _answer += `<div>${_div.innerHTML}</div>`;
-            }
-          }
-
-          var _link = "";
-          if (linkInfo.length > 0) {
-            for (var i = 0; i < linkInfo.length; i++) {
-              _link += `<div style="margin-top:10px"><a href='${linkInfo[i].content}'>${linkInfo[i].content}</a></div>`;
-            }
-          }
-
-          var _html =
-            _course + _title + _subtitle + _img + _ask + _answer + _link;
-          this.generate(_html);
-        })
-        .catch((err) => {
-          console.error(err);
-        });
-    },
-    isOpen(s) {
-      // this.stageIndex = s;
-      this.dyList2[s].isOpen = !this.dyList2[s].isOpen;
-    },
-    openTask(s, i) {
-      var a = s + "-" + i;
-      var b = document.getElementById(a);
-      var d = b.getAttribute("scrollindex");
-      var c = document.getElementsByClassName("shuBox")[0];
-      c.scrollTop = parseInt(d) * 375;
-      this.stageIndex = s;
-      this.taskCount = i;
-      this.navId = a;
-    },
-    async generate(a) {
-      // 将html文件中需要用到的数据挂载到store上
-      this.$store.commit("update", ["report", a]);
-      console.log(this.$store.state.report);
-      const content = `<!DOCTYPE html>
-      <html lang="en">
-      <head>
-          <meta charset="UTF-8">
-          <meta http-equiv="X-UA-Compatible" content="IE=edge">
-          <meta name="viewport" content="width=device-width, initial-scale=1.0">
-          <title>报告</title>
-      </head>
-      <body>
-      ${this.$store.state.report}
-      </body>
-      </html>`;
-      // debugger
-      // 生成报告
-      const link = document.createElement("a");
-      let dname = this.sInfo.course + "-" + this.sInfo.sName + ".html";
-      // link.download = "报告.html"; // 文件名
-      link.download = dname; // 文件名
-      link.style.display = "none";
-      // 创建文件流
-      // 创建bolb实例时,内容一定要放在[]中
-      const blob = new Blob([content], {
-        type: "text/plain;charset='utf-8'",
-      });
-      link.href = window.URL.createObjectURL(blob);
-      document.body.appendChild(link);
-      link.click();
-      document.body.removeChild(link);
-      // saveAs(
-      //   htmlDocx.asBlob(content, {
-      //     orientation: "landscape", //跨域设置
-      //   }),
-      //   //文件名
-      //   "报告.doc"
-      // );
-    },
-  },
-  watch: {
-    uid(newValue, oldValue) {
-      this.getCourseDetail();
-      this.getClass();
-      this.getGroup();
-      this.getWorks();
-      // this.lookWork();
-    },
-  },
-  mounted() {
-    this.getCourseDetail();
-    this.getClass();
-    this.getGroup();
-    this.getWorks();
-    // this.lookWork();
-  },
-};
-</script>
-
-<style scoped>
-.pb_head>span:nth-child(2) {
-  font-size: 16px;
-  margin-left: 80px;
-  color: #ab582f;
-}
-
-.pb_head {
-  margin: 0 !important;
-  width: 100% !important;
-}
-
-.student_page {
-  margin-top: 10px;
-}
-
-.student_head {
-  margin-top: 10px;
-  padding-bottom: 15px;
-}
-
-.student_search {
-  display: flex;
-}
-
-.student_search>div:nth-child(1) {
-  line-height: 35px;
-  font-size: 14px;
-}
-
-.student_search>>>.el-input__inner {
-  width: 190px;
-  height: 35px;
-  margin-left: 10px;
-}
-
-.student_table>>>.el-table--border td {
-  border-right: 0px !important;
-}
-
-.add_work>>>.el-dialog__header {
-  padding: 20px 20px 10px;
-  text-align: center;
-  background: #32455b;
-}
-
-.add_work>>>.el-dialog__title {
-  font-size: 14px !important;
-  color: #fff !important;
-}
-
-.add_work>>>.el-dialog__headerbtn {
-  font-size: 20px !important;
-  top: 5px !important;
-  right: 8px !important;
-}
-
-.add_work>>>.el-form-item__label {
-  margin-left: 65px;
-}
-
-.add_work>>>.el-form-item {
-  display: flex;
-}
-
-.add_work>>>.el-form-item__content {
-  margin: 0 !important;
-}
-
-.add_work>>>.el-dialog__footer {
-  text-align: center !important;
-}
-
-.add_work>>>.el-dialog {
-  min-width: 650px !important;
-  width: 1080px;
-}
-
-.add_work>>>.el-dialog__body {
-  background: #fff;
-  height: 660px;
-  overflow: auto;
-}
-
-.header-title {
-  display: flex;
-}
-
-.logoImg {
-  width: 30px;
-}
-
-.logoImg>img {
-  width: 100%;
-  height: 100%;
-}
-
-.title_add_student {
-  margin: 0 auto;
-  color: #fff;
-}
-
-.first {
-  margin-top: 25px;
-  border-bottom: 1px solid #c5c5c5;
-}
-
-.one_top {
-  display: flex;
-  justify-content: space-between;
-}
-
-.one_top>div:nth-child(1) {
-  color: #2490bf;
-  font-size: 16px;
-}
-
-.one_top>button {
-  width: 100px;
-  background: #24a0a4;
-  height: 30px;
-  color: #e0e0e0;
-  font-size: 13px;
-  padding: 0 !important;
-}
-
-.work_Img {
-  width: 150px;
-  margin: 10px 0;
-}
-
-.assess_Img {
-  width: 400px;
-  margin: 0 auto;
-  padding: 15px 0;
-}
-
-.work_Img>img,
-.assess_Img>img {
-  width: 100%;
-  height: 100%;
-}
-
-.work_input {
-  border: 1px solid;
-  width: 135px;
-  height: 20px;
-  line-height: 20px;
-  font-size: 13px;
-  padding: 5px;
-}
-
-.poetry {
-  margin: 10px 0 15px 0;
-}
-
-.assess {
-  background: #169bd5 !important;
-}
-
-.assess_top {
-  border-bottom: 2px solid #eee;
-  padding-bottom: 10px;
-}
-
-.assess_top>div:nth-child(1) {
-  color: #2490bf;
-  font-size: 16px;
-}
-
-.student_Answer {
-  display: flex;
-  margin: 5px 10px;
-  /* padding-bottom: 25px; */
-}
-
-.workName {
-  font-size: 18px;
-  font-weight: bold;
-  margin: 5px 10px;
-}
-
-.toux {
-  width: 35px;
-  /* margin: auto 0; */
-  height: 35px;
-}
-
-.toux>img {
-  width: 100%;
-  height: 100%;
-}
-
-.nav {
-  display: flex;
-  flex-wrap: wrap;
-  margin-top: 10px;
-  flex-direction: column;
-}
-
-.studentName {
-  margin-left: 10px;
-  font-size: 13px;
-}
-
-.studentAnswer {
-  font-size: 12px;
-  margin: 5px 0 0 10px;
-  height: 42px;
-  overflow: auto;
-}
-
-.comment {
-  /* margin: 20px 0 0 10px;
-  overflow: auto;
-  height: 75%;
-  max-height: 330px; */
-  overflow: auto;
-  /* height: 290px; */
-  height: 525px;
-  background: #fff;
-  border-radius: 5px;
-  padding: 10px;
-  box-sizing: border-box;
-}
-
-.comment_body {
-  height: calc(100% - 25px);
-  overflow: auto;
-}
-
-.comment>.comment_title {
-  font-size: 18px;
-}
-
-.comment>.comment_title>span {
-  font-size: 14px;
-}
-
-.other_Answer {
-  display: flex;
-  margin: 5px 10px;
-  padding: 15px 0;
-  justify-content: center;
-}
-
-.nav {
-  margin-left: 5px;
-  width: 80%;
-}
-
-.nameAndTime {
-  display: flex;
-}
-
-.otherName {
-  font-weight: bold;
-  margin-left: 10px;
-  font-size: 13px;
-}
-
-.time {
-  margin-left: 25px;
-  font-size: 12px;
-  margin-top: 3px;
-}
-
-.otherAnswer {
-  width: 80%;
-  word-wrap: break-word;
-  word-break: break-all;
-  overflow: hidden;
-  font-size: 12px;
-  margin: 5px 0 0 10px;
-}
-
-.doingAssess {
-  margin: 0 auto;
-  width: 300px;
-  background: #169bd5;
-  height: 35px;
-  line-height: 35px;
-  border-radius: 3px;
-  font-size: 13px;
-  text-align: center;
-  color: #fff;
-  margin-top: 30px;
-  cursor: pointer;
-}
-
-.score_top {
-  display: flex;
-  margin-bottom: 10px;
-}
-
-.userTou {
-  width: 50px;
-}
-
-.userTou>img {
-  width: 100%;
-  height: 100%;
-}
-
-.score_user_name {
-  line-height: 53px;
-  margin-left: 15px;
-}
-
-.course_top {
-  display: flex;
-  align-items: center;
-}
-
-.course_top>div:nth-child(1) {
-  line-height: 25px;
-}
-
-.course_top>div:nth-child(2) {
-  border: 1px solid #ccc;
-  width: 250px;
-  text-align: center;
-  height: 25px;
-  line-height: 25px;
-  margin-left: 30px;
-}
-
-.sd_score {
-  font-size: 15px;
-  background: #fff;
-  height: 100%;
-  padding-top: 40px;
-  border-radius: 5px;
-  width: 90%;
-  box-shadow: 2px 2px 5px #909090;
-  overflow: auto;
-}
-
-.sd_score .score_box {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  margin-bottom: 15px;
-  /* margin-left: 30px; */
-}
-
-.sd_score .score_box:last-child {
-  margin-bottom: 0;
-}
-
-.rate_size>>>.el-rate__icon {
-  font-size: 25px;
-}
-
-.rate_size>>>.el-icon-star-off {
-  font-size: 22px;
-}
-
-.sd_score span {
-  width: 130px;
-  text-align: justify;
-  text-align-last: justify;
-  display: block;
-  margin-right: 20px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  font-size: 16px;
-}
-
-.moreSay {
-  margin: 0px 0 5px 20px;
-}
-
-.more_say_input {
-  margin-left: 20px;
-  width: 80%;
-}
-
-.more_say_input>>>.el-input__inner {
-  height: 75px;
-  font-size: 13px;
-  padding: 0 0 0 10px;
-}
-
-.assess_right {
-  width: 200px;
-  background: #82b0ee;
-  color: #fff;
-  text-align: center;
-  height: 30px;
-  line-height: 30px;
-  border-radius: 5px;
-  margin: 0 auto;
-  margin-top: 20px;
-  font-size: 13px;
-  cursor: pointer;
-}
-
-.student_page {
-  margin-top: 10px;
-}
-
-.display {
-  display: none;
-}
-
-.firstTop {
-  background: #fff;
-  display: flex;
-  margin-bottom: 15px;
-  flex-direction: column;
-  align-items: flex-start;
-  height: 90px;
-  padding: 10px 25px;
-  border-radius: 5px;
-  width: 90%;
-  box-shadow: 2px 2px 5px #909090;
-}
-
-.talkScore>>>.el-dialog__body {
-  background: #efefef;
-  margin: 0 !important;
-}
-
-.lastTop {
-  background: #fff;
-  border-radius: 5px;
-  width: 98%;
-  height: 120px;
-  box-shadow: 2px 2px 5px #909090;
-}
-
-.left,
-.right {
-  /* background: #fff; */
-  border-radius: 5px;
-  /* padding: 10px; */
-  box-sizing: border-box;
-}
-
-.left {
-  margin-right: 10px;
-  width: 30%;
-  min-height: 425px;
-}
-
-/* .left .left_top {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  margin-bottom: 15px;
-} */
-.left .left_bottom {
-  background: #fff;
-  padding: 10px;
-  border-radius: 5px;
-  height: 160px;
-}
-
-.right {
-  width: 20%;
-  background: none;
-  padding: 0;
-}
-
-.courseTitle {
-  font-size: 16px;
-  color: #7c7c7c;
-  width: 100%;
-  margin-bottom: 10px;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-}
-
-.course_t {
-  font-size: 19px;
-  display: flex;
-  align-items: flex-end;
-}
-
-.course_t span:nth-child(2) {
-  font-size: 16px;
-  margin-left: 10px;
-}
-
-.courseTitle span:nth-child(2) {
-  /* font-size: 14px;
-  cursor: pointer; */
-}
-
-.bigImg {
-  margin-top: 10px;
-  /* height: 300px; */
-  height: 150px;
-}
-
-.bigImg>img,
-.thumbnail>div>img {
-  width: 100%;
-  height: 100%;
-  object-fit: contain;
-}
-
-.thumbnail {
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  margin: 5px 0 8px;
-  overflow-x: auto;
-  overflow-y: hidden;
-}
-
-.isClick2 {
-  border: 3px solid #8f7fe2;
-  border-radius: 5px;
-}
-
-.thumbnail>div {
-  width: 80px;
-  height: 80px;
-  margin-right: 5px;
-  cursor: pointer;
-  flex-shrink: 0;
-  box-sizing: border-box;
-}
-
-.zyBoxC {
-  /* background: #ededed; */
-  display: flex;
-  align-items: flex-start;
-  justify-content: center;
-  padding: 20px 0px;
-  flex-direction: column;
-  height: 100%;
-}
-
-.zyBox {
-  display: flex;
-  min-width: 600px;
-  width: 60%;
-  position: relative;
-  background: #fff;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  overflow: hidden;
-}
-
-.zyBoxC+.zyBoxC {
-  margin-top: 10px;
-}
-
-.rbButtom {
-  position: absolute;
-  bottom: 0;
-  right: 0;
-  background: #06a7ff;
-  width: 100px;
-  height: 30px;
-  border-radius: 5px;
-  text-align: center;
-  color: #fff;
-  line-height: 30px;
-  font-size: 14px;
-  cursor: pointer;
-  right: 10px;
-}
-
-.bigImg>>>.vjs-tech,
-.bigImg>>>.video-js {
-  height: 300px !important;
-}
-
-.el-table>>>.even_row {
-  background-color: #f1f1f1;
-}
-
-.data_body {
-  height: 200px;
-  display: flex;
-  position: relative;
-  border-radius: 5px;
-  box-sizing: border-box;
-  width: 100%;
-  background: #fff;
-}
-
-.data_body .title {
-  position: absolute;
-  top: 10px;
-  left: 10px;
-}
-
-.dialog_diy>>>.el-dialog__header {
-  padding: 9px 20px 10px;
-  background: #32455b !important;
-}
-
-.dialog_diy>>>.el-dialog__title {
-  color: #fff;
-  font-size: 15px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn {
-  top: 14px;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-
-.dialog_diy>>>.el-dialog__body,
-.dialog_diy>>>.el-dialog__footer {
-  background: #fafafa;
-}
-
-.max_diy>>>.el-dialog {
-  /* max-width: 1200px; */
-  max-width: 1300px;
-}
-
-.dialog_diy2>>>.el-dialog__header {
-  padding: 9px 20px 10px;
-  background: #32455b !important;
-}
-
-.dialog_diy2>>>.el-dialog__title {
-  color: #fff;
-  font-size: 15px;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn {
-  top: 14px;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn .el-dialog__close {
-  color: #fff;
-}
-
-.dialog_diy2>>>.el-dialog__headerbtn .el-dialog__close:hover {
-  color: #fff;
-}
-
-.dialog_diy2>>>.el-dialog__body,
-.dialog_diy2>>>.el-dialog__footer {
-  background: #ededed;
-  padding: 15px 20px;
-}
-
-.a_addBox2 {
-  margin: 10px 0;
-  background: #fff;
-  padding: 15px;
-}
-
-.a_addBox {
-  margin: 10px 0;
-  background: #fff;
-  padding: 15px;
-  /* max-height: 400px; */
-  max-height: 160px;
-  overflow: auto;
-}
-
-.a_add_box {
-  border-bottom: 2px solid #eee;
-  padding-bottom: 10px;
-}
-
-.a_add_head {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-  margin: 10px 0;
-  font-size: 18px;
-}
-
-.a_add_head .a_add_head_input {
-  width: 300px;
-}
-
-.a_add_head .a_add_head_div {
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.a_add_body {
-  display: flex;
-  align-items: center;
-}
-
-.a_add_input {
-  display: flex;
-  align-items: center;
-  flex-wrap: wrap;
-  /* flex-direction: column; */
-  /* width: 100%; */
-}
-
-.a_add_input>>>el-radio-group {
-  margin: 10px 0;
-}
-
-.a_add_input>>>.el-radio-group {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: wrap;
-}
-
-.redioStyle>>>.el-radio__label {
-  font-size: 18px;
-}
-
-.task_title {
-  font-size: 18px;
-  font-weight: 700;
-}
-
-.ask_Answer {
-  /* margin-top: 10px; */
-}
-
-.ask_Answer_title {
-  font-size: 18px;
-}
-
-.ask_Answer_content {
-  display: flex;
-  justify-content: center;
-  margin: 10px 0;
-}
-
-.answer_body {
-  padding: 10px 0;
-  border-bottom: 1px solid #f5f5f5;
-}
-
-.answer_title {
-  font-size: 15px;
-  font-weight: 700;
-}
-
-.answer_content {
-  margin-top: 5px;
-}
-
-.ask_body {
-  display: flex;
-  font-size: 16px;
-  margin-top: 10px;
-  flex-direction: column;
-  height: 130px;
-  overflow: auto;
-  /* padding: 0 10px; */
-  box-sizing: border-box;
-}
-
-.ask_body div {
-  /* cursor: pointer; */
-  display: flex;
-  align-items: center;
-  justify-content: space-between;
-}
-
-.ask_body div .btn {
-  cursor: pointer;
-  color: #fff;
-  background-color: #409eff;
-  text-align: center;
-  font-size: 12px;
-  padding: 6px 12px;
-  box-sizing: border-box;
-  border-radius: 5px;
-  width: 60px;
-}
-
-.ask_body div span:nth-child(1) {
-  max-width: 250px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.ask_body div+div {
-  margin-top: 10px;
-}
-
-.work_nopicture {
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  /* height: 350px; */
-  height: 352px;
-}
-
-.student_table>>>.el-table,
-.student_table>>>.el-table__body-wrapper {
-  height: auto !important;
-}
-
-.tx {
-  width: 35px;
-}
-
-.ech {
-  width: 100px;
-}
-
-.tx>img,
-.ech>img {
-  width: 100%;
-  height: 100%;
-}
-
-.txName {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  margin-left: 10px;
-}
-
-.txName>div:nth-child(2) {
-  margin-left: 10px;
-}
-
-.top {
-  display: flex;
-  justify-content: space-between;
-  padding: 15px 0 15px 20px;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  width: 95%;
-}
-
-.jdName>div:nth-child(1) {
-  font-size: 20px;
-  font-weight: bold;
-}
-
-.taskName {
-  font-size: 14px;
-  margin-top: 10px;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-}
-
-.task {
-  background: #8f7fe2;
-  color: #fff;
-  width: 50px;
-  height: 22px;
-  border-radius: 5px;
-  text-align: center;
-  line-height: 22px;
-  margin-right: 10px;
-}
-
-.contentBox {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  height: 253px;
-}
-
-.left_top {
-  width: 45%;
-  padding-left: 20px;
-}
-
-.right_top {
-  width: 53%;
-}
-
-.cBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  width: 100%;
-  height: calc(100% - 40px);
-}
-
-.right_score {
-  min-width: 370px;
-  height: 351px;
-  margin-left: 10px;
-  width: 40%;
-}
-
-.pb_left {
-  width: 20%;
-  margin-right: 10px;
-  background: rgb(255, 255, 255);
-  /* padding-right: 10px; */
-  height: 100%;
-}
-
-.cTitle {
-  background: #634fa4;
-  width: 85%;
-  margin: 10px auto;
-  height: 50px;
-  color: #fff;
-  line-height: 50px;
-  text-align: center;
-  font-size: 20px;
-  font-weight: bold;
-  border-radius: 5px;
-  cursor: pointer;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  padding: 0 10px;
-}
-
-.ml {
-  margin-left: 20px;
-  color: #5b7dba;
-  border-left: 3px solid #5b7dba;
-  padding-left: 5px;
-  font-weight: bold;
-}
-
-.cru_selectBox {
-  width: 100%;
-  margin: 0 auto;
-  overflow: auto;
-  height: 400px;
-  overflow-x: hidden;
-}
-
-.cru_selectBox::-webkit-scrollbar {
-  /*滚动条整体样式*/
-  width: 6px;
-  /*高宽分别对应横竖滚动条的尺寸*/
-  height: 6px;
-}
-
-/*定义滚动条轨道 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-track {
-  border-radius: 10px;
-  background-color: #b8bdc9;
-}
-
-/*定义滑块 内阴影+圆角*/
-.cru_selectBox::-webkit-scrollbar-thumb {
-  border-radius: 10px;
-  -webkit-box-shadow: inset 0 0 6px rgb(96, 125, 184);
-  background-color: #2c5ab3;
-}
-
-.blue_box_one {
-  text-align: center;
-  color: #fff;
-  background-image: linear-gradient(90deg, #7960d5, #65b9fc);
-  border-radius: 7px;
-  margin: 10px auto;
-  cursor: pointer;
-  width: 95%;
-  height: 45px;
-  display: flex;
-  flex-direction: row;
-  justify-content: flex-start;
-  align-items: center;
-}
-
-.blue_box_one>div:nth-child(1) {
-  line-height: 30px;
-  margin: 0 5px 0 10px;
-  width: 30%;
-  min-width: 70px;
-  border-radius: 4px;
-}
-
-.blue_box_one>div:nth-child(2) {
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  word-break: break-all;
-  width: 70%;
-  text-align: left;
-  margin-right: 10px;
-  max-width: calc(100% - 85px);
-}
-
-.blue_box_one>div:nth-child(2):hover {
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.twoChild {
-  width: 95%;
-  margin: 10px auto;
-  border-radius: 5px;
-  background: #f2f2f2;
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  justify-content: flex-start;
-  align-items: flex-start;
-  transition: all 0.5s;
-  overflow: hidden;
-  height: 0;
-  background: #e7f3ff;
-}
-
-.twoChild>div:nth-child(1) {
-  margin-top: 5px;
-}
-
-.navChild {
-  width: 100%;
-  cursor: pointer;
-  margin-bottom: 10px;
-}
-
-.navActive {
-  height: auto;
-}
-
-.navTask {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: center;
-  align-content: flex-start;
-  height: 40px;
-  justify-content: flex-start;
-  padding: 0 10px;
-  width: 100%;
-  box-sizing: border-box;
-}
-
-.vedioNav {
-  margin: 10px 0 0 15px;
-  /* border-bottom: 1px solid #d7d7d7; */
-  padding-bottom: 5px;
-  background: #b7aadf;
-  width: 55px;
-  min-width: 55px;
-  border-radius: 5px;
-  color: #fff;
-  text-align: center;
-  height: 20px;
-  line-height: 26px;
-  font-size: 14px;
-}
-
-.navTaskname {
-  white-space: nowrap;
-  text-overflow: ellipsis;
-  overflow: hidden;
-  word-break: break-all;
-  padding-left: 5px;
-}
-
-.allBox {
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: flex-start;
-  width: 100%;
-  margin-bottom: 20px;
-}
-
-.shuBox {
-  display: flex;
-  flex-direction: column;
-  flex-wrap: nowrap;
-  align-items: center;
-  width: 100%;
-  flex-wrap: nowrap;
-  height: 100%;
-  overflow: auto;
-}
-
-.answerbox {
-  display: flex;
-  flex-direction: row;
-  /* align-items: center; */
-  margin-bottom: 20px;
-  font-size: 18px;
-  font-weight: bold;
-}
-
-.answerbox>div:nth-child(2) {
-  margin-left: 15px;
-}
-
-.answerbox1 {
-  display: flex;
-  flex-direction: column;
-  align-items: flex-start;
-  flex-wrap: nowrap;
-  font-size: 16px;
-}
-
-.answerbox1>div:nth-child(2) {
-  margin-top: 10px;
-  width: 265px;
-  max-height: 147px;
-  overflow: auto;
-}
-
-.jdName {
-  width: 100%;
-}
-
-.full_diy>>>.el-dialog {
-  margin: 0 !important;
-  height: 100%;
-}
-
-.full_diy>>>.el-dialog__body {
-  height: calc(100% - 100px);
-}
-
-.openTaskActive {
-  color: #8f7fe2;
-}
-
-.isClick {
-  background: #8f7fe2;
-}
-
-.buttonCss {
-  width: 100%;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  justify-content: flex-end;
-  margin: 10px 0;
-}
-
-.fullStyle>>>.el-dialog__body {
-  height: 100% !important;
-  overflow: auto;
-}
-
-.fullStyle>>>.el-dialog,
-.fullStyle {
-  width: 100% !important;
-  max-width: 100% !important;
-  height: 100% !important;
-  margin: 0 !important;
-}
-
-.worksTime {
-  position: absolute;
-  top: 10px;
-  right: 0;
-  display: flex;
-  flex-direction: row;
-  flex-wrap: nowrap;
-  align-items: baseline;
-}
-
-.fullBox {
-  overflow: unset !important;
-  height: auto !important;
-}
-
-.fullZyBox {
-  width: 60% !important;
-}
-
-.rightScoreFullBox {
-  width: 40%;
-}
-
-.cancel_button:focus,
-.cancel_button:hover {
-  color: rgb(92, 84, 159);
-  border-color: #5c549f;
-  background-color: #dbd7ff;
-}
-</style>

+ 0 - 0
src/components/pages/demo.vue