lsc 1 rok pred
rodič
commit
cf486fc37c
25 zmenil súbory, kde vykonal 648 pridanie a 63 odobranie
  1. 1 1
      dist/index.html
  2. 0 0
      dist/static/css/app.a7e26ab928e8e13f132a473209209f28.css
  3. 0 0
      dist/static/css/app.a7e26ab928e8e13f132a473209209f28.css.map
  4. 0 0
      dist/static/js/app.0ba612847bb2b7108048.js
  5. 0 0
      dist/static/js/app.0ba612847bb2b7108048.js.map
  6. 0 0
      dist/static/js/manifest.3512a67a6213c2df4180.js.map
  7. 2 2
      src/components/pages/components/classStudentComponents/worksDetail3.vue
  8. 3 3
      src/components/pages/components/studentWorksDetail.vue
  9. 1 1
      src/components/pages/components/vpdf.vue
  10. 3 3
      src/components/pages/components/worksDetail2.vue
  11. 1 1
      src/components/pages/components/worksDetail2GM.vue
  12. 2 2
      src/components/pages/components/worksDetail3.vue
  13. 1 1
      src/components/pages/components/worksDetail3GM.vue
  14. 90 28
      src/components/pages/dataBoardNew/course/index.vue
  15. 20 0
      src/components/pages/dataBoardNew/school/cateRank/index.vue
  16. 42 3
      src/components/pages/dataBoardNew/school/index.vue
  17. 155 0
      src/components/pages/dataBoardNew/student/bar2/index.vue
  18. 108 6
      src/components/pages/dataBoardNew/student/index.vue
  19. 206 0
      src/components/pages/dataBoardNew/student/toolUser2/index.vue
  20. 1 1
      src/components/pages/liveRoom.vue
  21. 1 1
      src/components/pages/liveRoomKQ.vue
  22. 2 2
      src/components/pages/myReport/components/MyLookComponent/worksDetail3.vue
  23. 3 3
      src/components/pages/student/addCourse.vue
  24. 2 2
      src/components/pages/studio/addCourse.vue
  25. 4 3
      src/components/pages/tencent/student.vue

+ 1 - 1
dist/index.html

@@ -25,7 +25,7 @@
       height: 100%;
       width: 100%;
       background: #e6eaf0;
-    }</style><link href=./static/css/app.66446d3e686ba1ea44ab6ae51054d13d.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3512a67a6213c2df4180.js></script><script type=text/javascript src=./static/js/vendor.b01159b52abeac4e6216.js></script><script type=text/javascript src=./static/js/app.495f5f20b1f2f0e429b3.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.a7e26ab928e8e13f132a473209209f28.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3512a67a6213c2df4180.js></script><script type=text/javascript src=./static/js/vendor.b01159b52abeac4e6216.js></script><script type=text/javascript src=./static/js/app.0ba612847bb2b7108048.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/css/app.a7e26ab928e8e13f132a473209209f28.css


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/css/app.a7e26ab928e8e13f132a473209209f28.css.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/app.0ba612847bb2b7108048.js


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/app.0ba612847bb2b7108048.js.map


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
dist/static/js/manifest.3512a67a6213c2df4180.js.map


+ 2 - 2
src/components/pages/components/classStudentComponents/worksDetail3.vue

@@ -1820,7 +1820,7 @@ export default {
             ) {
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                pptInfo[i].content;
+                encodeURIComponent(pptInfo[i].content);
               workJson[pptInfo[i].stage + "-" + pptInfo[i].task].wpptInfo.push({
                 wpptInfo: a,
                 score: pptInfo[i].score
@@ -1967,7 +1967,7 @@ export default {
               t = 2;
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                cocopi.content;
+                encodeURIComponent(cocopi.content);
               workJson[
                 cocopiInfo[i].stage + "-" + cocopiInfo[i].task
               ].cocopiInfo.push({

+ 3 - 3
src/components/pages/components/studentWorksDetail.vue

@@ -2194,7 +2194,7 @@ export default {
             ) {
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                pptInfo[i].content;
+                encodeURIComponent(pptInfo[i].content);
               workJson[pptInfo[i].stage + "-" + pptInfo[i].task].wpptInfo.push({
                 wpptInfo: a,
                 score: pptInfo[i].score
@@ -2341,7 +2341,7 @@ export default {
               t = 2;
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                cocopi.content;
+                encodeURIComponent(cocopi.content);
               workJson[
                 cocopiInfo[i].stage + "-" + cocopiInfo[i].task
               ].cocopiInfo.push({
@@ -2925,7 +2925,7 @@ export default {
               t = 2;
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                cocopi.content;
+                encodeURIComponent(cocopi.content);
               workJson.cocopiInfo.push({
                 url: a,
                 type: t,

+ 1 - 1
src/components/pages/components/vpdf.vue

@@ -10,7 +10,7 @@
       </pdf>
     </div> -->
     <iframe ref="viframe" style="width: 100%; height: 99%; border: none"
-      :src="'https://cloud.cocorobo.cn/pdf.js/web/viewer.html?file=' + pdfUrl"></iframe>
+      :src="'https://cloud.cocorobo.cn/pdf.js/web/viewer.html?file=' + encodeURIComponent(pdfUrl)"></iframe>
     <!-- <div class="rightArea">
       <div class="toolGroup">
         <div class="page">第 {{ page }} / {{ numPages }} 页</div>

+ 3 - 3
src/components/pages/components/worksDetail2.vue

@@ -2201,7 +2201,7 @@ export default {
             ) {
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                pptInfo[i].content;
+                encodeURIComponent(pptInfo[i].content);
               workJson[pptInfo[i].stage + "-" + pptInfo[i].task].wpptInfo.push({
                 wpptInfo: a,
                 score: pptInfo[i].score
@@ -2348,7 +2348,7 @@ export default {
               t = 2;
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                cocopi.content;
+                encodeURIComponent(cocopi.content);
               workJson[
                 cocopiInfo[i].stage + "-" + cocopiInfo[i].task
               ].cocopiInfo.push({
@@ -3226,7 +3226,7 @@ export default {
               t = 2;
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                cocopi.content;
+                encodeURIComponent(cocopi.content);
               workJson.cocopiInfo.push({
                 url: a,
                 type: t,

+ 1 - 1
src/components/pages/components/worksDetail2GM.vue

@@ -859,7 +859,7 @@ export default {
                 ) {
                   var a =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
-                    pptInfo[i].content;
+                    encodeURIComponent(pptInfo[i].content);
                   workJson[k].wpptInfo.push(a);
                   this.showPDF = false;
                 } else if (

+ 2 - 2
src/components/pages/components/worksDetail3.vue

@@ -1820,7 +1820,7 @@ export default {
             ) {
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                pptInfo[i].content;
+                encodeURIComponent(pptInfo[i].content);
               workJson[pptInfo[i].stage + "-" + pptInfo[i].task].wpptInfo.push({
                 wpptInfo: a,
                 score: pptInfo[i].score
@@ -1967,7 +1967,7 @@ export default {
               t = 2;
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                cocopi.content;
+                encodeURIComponent(cocopi.content);
               workJson[
                 cocopiInfo[i].stage + "-" + cocopiInfo[i].task
               ].cocopiInfo.push({

+ 1 - 1
src/components/pages/components/worksDetail3GM.vue

@@ -712,7 +712,7 @@ export default {
                 ) {
                   var a =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
-                    pptInfo[i].content;
+                    encodeURIComponent(pptInfo[i].content);
                   workJson[k].wpptInfo.push(a);
                   this.showPDF = false;
                 } else if (

+ 90 - 28
src/components/pages/dataBoardNew/course/index.vue

@@ -120,19 +120,19 @@
               }}</span>
             </div>
           </div>
-          <Bar style="height: calc(100% - 70px)" v-if="skType == 0 && !oType" :workList="tedurArray"></Bar>
-          <!-- <ToolUse2 style="height: calc(100% - 100px)" v-if="skType == 0 && oType" :yearArray="courseWorksCountYearArray"></ToolUse2> -->
+          <Bar style="height: calc(100% - 100px)" v-if="skType == 0 && !oType" :workList="tedurArray"></Bar>
+          <ToolUse2 style="height: calc(100% - 100px)" v-if="skType == 0 && oType" :yearArray="courseWorksCountYearArray2"></ToolUse2>
 
           <ToolUse style="height: calc(100% - 100px)" v-if="skType == 1 && !oType2"
             :yearArray="courseWorksCountYearArray"></ToolUse>
           <Bar2 style="height: calc(100% - 100px)" v-if="skType == 1 && oType2" :workList="tedurArray2"></Bar2>
-          <!-- <div class="otherCss" v-if="skType == 0">
+          <div class="otherCss" v-if="skType == 0">
             <div v-if="!oType">切换为柱状图</div>
             <div v-if="oType">切换为热力图</div>
             <div class="otherImg" @click="otherEchart">
               <img src="../../../../assets/icon/other.png" alt="" />
             </div>
-          </div> -->
+          </div>
           <div class="otherCss" v-if="skType == 1">
             <div v-if="!oType2">切换为热力图</div>
             <div v-if="oType2">切换为柱状图</div>
@@ -378,6 +378,7 @@ export default {
       courseTList: [],
       courseLength: 0,
       courseWorksCountYearArray: [],
+      courseWorksCountYearArray2: [],
       allCourseWorks: [],
       gradeList: [],
       subjectList2: [],
@@ -500,6 +501,90 @@ export default {
       }
       this.allTime = time;
 
+      const date = new Date();
+      var Month = date.getMonth() + 1;
+      var Year = date.getFullYear();
+      let courseWorksCountYearArray = [];
+      for (var i = Month; i > Month - 12; i--) {
+        if (i <= 0) {
+          courseWorksCountYearArray.push({
+            Year: Year - 1,
+            Month: 12 + i,
+            mon: 0,
+            tue: 0,
+            wed: 0,
+            thur: 0,
+            fri: 0,
+            sat: 0,
+            sun: 0,
+          });
+        } else {
+          courseWorksCountYearArray.push({
+            Month: i,
+            Year: Year,
+            mon: 0,
+            tue: 0,
+            wed: 0,
+            thur: 0,
+            fri: 0,
+            sat: 0,
+            sun: 0,
+          });
+        }
+      }
+      courseWorksCountYearArray = courseWorksCountYearArray.reverse();
+
+      for (var i = 0; i < this.courseTList.length; i++) {
+        let _date = new Date(this.courseTList[i].create_at);
+        let _type = this.courseTList[i].typeid;
+        var _month = _date.getMonth() + 1;
+        var _year = _date.getFullYear();
+        var _day = _date.getDay();
+        let dayArray = ["sun", "mon", "tue", "wed", "thur", "fri", "sat"];
+        for (var j = 0; j < courseWorksCountYearArray.length; j++) {
+          let time = (this.courseTList[i].text / 3600).toFixed(0)
+          time = parseInt(time) ? parseInt(time) : 0
+          if (this.lType1 == "all") {
+            if (
+              _month == courseWorksCountYearArray[j].Month &&
+              _year == courseWorksCountYearArray[j].Year
+            ) {
+              courseWorksCountYearArray[j][dayArray[_day]]+=time;
+              break;
+            }
+          } else if (this.lType1 == "grade") {
+            if (
+              _month == courseWorksCountYearArray[j].Month &&
+              _year == courseWorksCountYearArray[j].Year &&
+              this.gradeList.indexOf(_type) != -1
+            ) {
+              courseWorksCountYearArray[j][dayArray[_day]]+=time;
+              break;
+            }
+          } else if (this.lType1 == "subject") {
+            if (
+              _month == courseWorksCountYearArray[j].Month &&
+              _year == courseWorksCountYearArray[j].Year &&
+              this.subjectList2.indexOf(_type) != -1
+            ) {
+              courseWorksCountYearArray[j][dayArray[_day]]+=time;
+              break;
+            }
+          } else {
+            if (
+              _month == courseWorksCountYearArray[j].Month &&
+              _year == courseWorksCountYearArray[j].Year &&
+              this.thList.indexOf(_type) != -1
+            ) {
+              courseWorksCountYearArray[j][dayArray[_day]]+=time;
+              break;
+            }
+          }
+        }
+      }
+
+      this.courseWorksCountYearArray2 = courseWorksCountYearArray;
+      
       this.$forceUpdate();
     },
     typeChange2() {
@@ -918,36 +1003,13 @@ export default {
           this.subjectLength = _sList.length;
           this.themeLength = _tList.length;
 
-          var a = [];
-          if (this.lType == "all") {
-            this.tedurArray = _allTime;
-            this.courseLength = _timeList.length;
-          } else if (this.lType == "grade") {
-            this.tedurArray = _grade;
-            this.courseLength = _gList.length;
-          } else if (this.lType == "subject") {
-            this.tedurArray = _subject;
-            this.courseLength = _sList.length;
-          } else {
-            this.tedurArray = _themeList;
-            this.courseLength = _tList.length;
-          }
-
-          var time = 0;
-          a = this.tedurArray;
-          for (var i = 0; i < a.length; i++) {
-            if (a[i].time) {
-              time += a[i].time;
-            }
-          }
-          this.allTime = time;
-
           let allCourseWorks = res.data[7]; //作业总数量
           this.allCourseWorks = allCourseWorks;
           this.gradeList = _gradeList;
           this.subjectList2 = _subjectList;
           this.thList = _thList;
           this.typeChange2();
+          this.typeChange1();
 
           let _course = res.data[8]; //课程
           let _gradeArray = [];

+ 20 - 0
src/components/pages/dataBoardNew/school/cateRank/index.vue

@@ -20,6 +20,11 @@ export default {
   components: {
     highcharts: Chart,
   },
+  props: {
+    resultSubject: {
+      type: Array,
+    },
+  },
   data() {
     return {
       chartObj: null,
@@ -115,10 +120,25 @@ export default {
         // this.chartObj.setOption(this.option);
       });
     },
+    setArray(array) {
+      // this.option.series[0].data = array
+
+    }
   },
   watch: {
+    resultSubject: {
+      immediate: true,
+      deep: true,
+      handler(newValue, oldValue) {
+        this.setArray(newValue)
+        this.$forceUpdate();
+      },
+    },
   },
   mounted() {
+    this.setArray(this.resultSubject)
+    // this.setChart();
+
   },
 };
 </script>

+ 42 - 3
src/components/pages/dataBoardNew/school/index.vue

@@ -97,7 +97,7 @@
           <barToolUser style="height: calc(100%)" v-if="skType == 0 && oType" :yearArray="allTimeYearArray"></barToolUser>
           <div class="otherCss" v-if="skType == 0">
             <div v-if="!oType">切换为热力图</div>
-            <div v-if="oType">切换为柱状图</div>
+            <div v-if="oType">切换为仪表盘</div>
             <div class="otherImg" @click="otherEchart">
               <img src="../../../../assets/icon/other.png" alt="" />
             </div>
@@ -322,7 +322,7 @@
           </el-select> -->
         </div>
         <div class="dataBox">
-          <cateRank style="height: calc(100%)"></cateRank>
+          <cateRank style="height: calc(100%)" :resultSubject="resultSubject"></cateRank>
         </div>
       </div>
     </div>
@@ -418,6 +418,7 @@ export default {
       allTimeYearArray: [],
       teacherLoginCount: 0,
       studentLoginCount: 0,
+      resultSubject: []
     };
   },
   mounted() {
@@ -496,7 +497,7 @@ export default {
         .then((res) => {
           this.isLoading = false;
           let _grade = res.data[0]; //年级
-          let _subject = res.data[1]; //学科
+          let _subject = JSON.parse(JSON.stringify(res.data[1])); //学科
           let _theme = res.data[2]; //主题
 
           this.allUser = res.data[3][0].count; //总人数
@@ -895,6 +896,41 @@ export default {
             }
           }
           this.allTimeYearArray = allTimeYearArray
+
+
+          let CourseLabel = res.data[29]; //带分类的课程
+          let _subject2 = JSON.parse(JSON.stringify(res.data[1]))
+          const resultSubject = [];
+          for (let i = 0; i < _subject2.length - 1; i++) {
+            for (let j = i + 1; j < _subject2.length; j++) {
+              resultSubject.push({
+                id: [_subject2[i].id, _subject2[j].id],
+                name: [_subject2[i].name, _subject2[j].name],
+                count: 0,
+              });
+            }
+          }
+
+          for(var i = 0; i < CourseLabel.length; i++){
+            let array = CourseLabel[i].type.split(',');
+            for(var j = 0; j < resultSubject.length; j++){
+              if(this.checkArrayInclusion(resultSubject[j].id, array)){
+                resultSubject[j].count++
+              }
+            }
+          }
+
+          let resultSubject2 = []
+
+          for(var i = 0; i < resultSubject.length; i++){
+            let el = resultSubject[i]
+            if(el.count > 0){
+              resultSubject2.push([el.name[0], el.name[1], el.count])
+            }
+          }
+
+          this.resultSubject = resultSubject2
+          console.log(resultSubject);
           this.$forceUpdate();
         })
         .catch((err) => {
@@ -902,6 +938,9 @@ export default {
           console.error(err);
         });
     },
+    checkArrayInclusion(arr1, arr2) {
+      return arr1.every(item => arr2.includes(item));
+    },
     typeChange() {
       // if (this.cType === '') {
       //   this.courseNumberArray = this.allArray

+ 155 - 0
src/components/pages/dataBoardNew/student/bar2/index.vue

@@ -0,0 +1,155 @@
+<template>
+  <div class="data_body">
+      <div style="width: 100%; height: 100%">
+          <div id="charts_canvas" class="echart" style="width: 100%; height: 100%; "></div>
+      </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+      EloginTimeArray: {
+          type: Array,
+      },
+  },
+  data() {
+      return {
+          chartObj: null,
+          ooption: {
+              xdata: [],
+              data: [],
+          },
+          option: {
+              // title: {
+              //     text: '登录频次',
+              //     textStyle: {
+              //         fontSize: 12,
+              //     },
+              //     padding: [5, 0, 0, 10]
+              // },
+              tooltip: {
+                  trigger: "axis",
+                  axisPointer: {
+                      type: "shadow",
+                  },
+              },
+              dataZoom: [
+                  {
+                      // start: 50,
+                      type: 'inside',
+                      yAxisIndex: 0
+                  },
+                  {
+                      type: 'slider',
+                      yAxisIndex: 0
+                  }
+              ],
+              grid: {
+                  top: '5%',
+                  left: '5%',
+                  right: '10%',
+                  bottom: '5%',
+                  containLabel: true
+              },
+              xAxis: {
+                  type: 'value',
+                  boundaryGap: [0, 0.01]
+              },
+
+              yAxis: {
+                  type: 'category',
+                  // data: ['一年级', '二年级', '三年级', '四年级', '五年级', '六年级']
+                  data: []
+              },
+              series: [
+                  {
+                      name: "登录频次(次)",
+                      type: 'bar',
+                      // data: [180, 50, 70, 90, 100, 130],
+                      data: [],
+                      itemStyle: {
+                          normal: {
+                              color: function (params) {
+                                  return "#106bff";
+                              },
+                          },
+                      },
+                  }
+              ]
+          },
+      };
+  },
+  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.data;
+              // 初始化雷达图
+              this.chartObj = chartObj;
+              this.chartObj.setOption(this.option);
+          });
+      },
+      setArray(Array) {
+          this.ooption = {
+              xdata: [],
+              data: [],
+          }
+          let _array = Array
+          for (var i = 0; i < _array.length; i++) {
+              this.ooption.xdata.push(_array[i].name)
+              this.ooption.data.push(_array[i].loginTime)
+          }
+
+          if (!this.chartObj) {
+              this.setChart(this.ooption);
+          } else {
+              this.option.yAxis.data = this.ooption.xdata;
+              this.option.series[0].data = this.ooption.data;
+              this.chartObj.setOption(this.option);
+          }
+      }
+  },
+  watch: {
+      EloginTimeArray: {
+          immediate: true,
+          deep: true,
+          handler(newValue, oldValue) {
+              this.setArray(newValue)
+              this.$forceUpdate();
+          },
+      },
+  },
+  mounted() {
+      this.setArray(this.EloginTimeArray)
+      var _this = this;
+      window.addEventListener("resize", () => {
+          if (_this.chartObj) {
+              _this.chartObj.resize();
+          }
+      });
+  },
+};
+</script>
+
+<style scoped>
+.data_body {
+  height: 100%;
+  position: relative;
+  border-radius: 5px;
+  margin: 0 auto;
+  box-sizing: border-box;
+  padding: 0;
+  width: 95%;
+  background: #fff;
+}
+</style>

+ 108 - 6
src/components/pages/dataBoardNew/student/index.vue

@@ -116,22 +116,43 @@
         </div>
         <div class="dataBox" style="height: calc(100% - 110px)">
           <toolUser
-            style="height: calc(100%)"
-            v-if="skType == 1"
+            style="height: calc(100% - 30px)"
+            v-if="skType == 1 && !oType"
             :yearArray="loginCountYearArray"
           ></toolUser>
+          <bar2
+            style="height: calc(100% - 30px)"
+            v-if="skType == 1 && oType"
+            :EloginTimeArray="EloginTimeArray2"
+          ></bar2>
+
+
           <bar
-            style="height: calc(100%)"
-            v-if="skType == 0"
+            style="height: calc(100% - 30px)"
+            v-if="skType == 0 && !oType2"
             :EloginTimeArray="EloginTimeArray"
           ></bar>
-          <!-- <div class="otherCss">
+          <toolUser2
+            style="height: calc(100% - 30px)"
+            v-if="skType == 0 && oType2"
+            :yearArray="loginCountYearArray2"
+          ></toolUser2>
+
+          <div class="otherCss" v-if="skType == 1">
             <div v-if="!oType">切换为柱状图</div>
             <div v-if="oType">切换为热力图</div>
             <div class="otherImg" @click="otherEchart">
               <img src="../../../../assets/icon/other.png" alt="" />
             </div>
-          </div> -->
+          </div>
+
+          <div class="otherCss" v-if="skType == 0">
+            <div v-if="oType2">切换为柱状图</div>
+            <div v-if="!oType2">切换为热力图</div>
+            <div class="otherImg" @click="otherEchart2">
+              <img src="../../../../assets/icon/other.png" alt="" />
+            </div>
+          </div>
         </div>
       </div>
     </div>
@@ -506,7 +527,9 @@ import loginTime from "./loginTime";
 import stuAct from "./stuAct";
 import stuAct2 from "./stuAct2";
 import toolUser from "./toolUser";
+import toolUser2 from "./toolUser2";
 import bar from "./bar";
+import bar2 from "./bar2";
 import courseNum from "./courseNum";
 export default {
   props: {
@@ -527,7 +550,9 @@ export default {
     stuAct,
     stuAct2,
     toolUser,
+    toolUser2,
     bar,
+    bar2,
     courseNum,
   },
   data() {
@@ -549,12 +574,15 @@ export default {
       cType8: "全部年级",
       cType9: "",
       oType: false,
+      oType2: false,
       studentCount: 0,
       loginCountMonthArray: [],
       countLogin: 0,
       loginCountYearArray: [],
+      loginCountYearArray2: [],
       loginTime: 0,
       EloginTimeArray: [],
+      EloginTimeArray2: [],
       classList: [],
       courseNum: 0,
       scourseNum: 0,
@@ -587,6 +615,9 @@ export default {
     otherEchart() {
       this.oType = !this.oType;
     },
+    otherEchart2() {
+      this.oType2 = !this.oType2;
+    },
     getData() {
       this.isLoading = true;
       let params = [
@@ -834,6 +865,77 @@ export default {
             return el.works > 0;
           });;
 
+
+          let loginCountYear2 = res.data[22]; //一年的在线时长
+          let loginCountYearArray2 = [];
+          for (var i = Month; i > Month - 12; i--) {
+            if (i <= 0) {
+              loginCountYearArray2.push({
+                Year: Year - 1,
+                Month: 12 + i,
+                mon: 0,
+                tue: 0,
+                wed: 0,
+                thur: 0,
+                fri: 0,
+                sat: 0,
+                sun: 0,
+              });
+            } else {
+              loginCountYearArray2.push({
+                Month: i,
+                Year: Year,
+                mon: 0,
+                tue: 0,
+                wed: 0,
+                thur: 0,
+                fri: 0,
+                sat: 0,
+                sun: 0,
+              });
+            }
+          }
+          loginCountYearArray2 = loginCountYearArray2.reverse();
+          for (var i = 0; i < loginCountYear2.length; i++) {
+            let _date = new Date(loginCountYear2[i].create_at);
+            var _month = _date.getMonth() + 1;
+            var _year = _date.getFullYear();
+            var _day = _date.getDay();
+            let dayArray = ["sun", "mon", "tue", "wed", "thur", "fri", "sat"];
+            for (var j = 0; j < loginCountYearArray2.length; j++) {
+              let time = (loginCountYear2[i].text / 3600).toFixed(0)
+              time = parseInt(time) ? parseInt(time) : 0
+              if (
+                _month == loginCountYearArray2[j].Month &&
+                _year == loginCountYearArray2[j].Year
+              ) {
+                loginCountYearArray2[j][dayArray[_day]]+=time;
+                break;
+              }
+            }
+          }
+          console.log(loginCountYearArray2);
+          this.loginCountYearArray2 = loginCountYearArray2;
+
+          let _loginTimeArray2 = res.data[23]; //一年的在线时长
+          let _EloginTimeArray2 = [];
+          for (let i = 0; i < _classList.length; i++) {
+            _EloginTimeArray2.push({
+              id: _classList[i].id,
+              name: _classList[i].name,
+              loginTime: 0,
+            });
+            for (let j = 0; j < _loginTimeArray2.length; j++) {
+              const _user = _loginTimeArray2[j];
+              if (_user.classid.indexOf(_classList[i].id) != -1) {
+                _EloginTimeArray2[i].loginTime++;
+              }
+            }
+          }
+          this.EloginTimeArray2 = _EloginTimeArray2.filter((el)=>{
+            return el.loginTime > 0;
+          });
+
           this.$forceUpdate();
         })
         .catch((err) => {

+ 206 - 0
src/components/pages/dataBoardNew/student/toolUser2/index.vue

@@ -0,0 +1,206 @@
+<template>
+  <div class="data_body">
+    <div style="width: 100%; height: 100%">
+      <div id="charts_canvas" class="echart" style="width: 100%; height: 100%; "></div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    yearArray: {
+      type: Array,
+    },
+  },
+  data() {
+    return {
+      chartObj: null,
+      ooption: {
+        xdata: [],
+        sdata: [],
+      },
+      option: {
+        // title: {
+        //   text: '在线时长',
+        //   textStyle: {
+        //     fontSize: 12,
+        //   },
+        //   padding: [10, 0, 0, 10]
+        // },
+        tooltip: {
+          position: 'top'
+        },
+        grid: {
+          top: '50',
+          left: '5%',
+          right: '5%',
+          bottom: '5%',
+          containLabel: true
+        },
+        xAxis: {
+          type: 'category',
+          // data: [
+          //     '1月', '2月', '3月', '4月', '5月', '6月', '7月',
+          //     '8月', '9月', '10月', '11月', '12月'
+          // ],
+          data: [],
+          splitArea: {
+            show: true
+          },
+          axisLabel: {
+            formatter: function (value) {
+              console.log(value);
+              var ret = "";//拼接加\n返回的类目项  
+              var maxLength = 2;//每项显示文字个数  
+              var valLength = value.length;//X轴类目项的文字个数  
+              var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数  
+              if (rowN > 1)//如果类目项的文字大于5,  
+              {
+                for (var i = 0; i < rowN; i++) {
+                  var temp = "";//每次截取的字符串  
+                  var start = i * maxLength;//开始截取的位置  
+                  var end = start + maxLength;//结束截取的位置  
+                  //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧  
+                  temp = value.substring(start, end) + "\n";
+                  ret += temp; //凭借最终的字符串  
+                }
+                return ret;
+              }
+              else {
+                return value;
+              }
+            }
+          }
+        },
+        yAxis: {
+          type: 'category',
+          data: [
+            '星期天', '星期一', '星期二', '星期三',
+            '星期四', '星期五', '星期六',
+          ],
+          splitArea: {
+            show: true
+          },
+        },
+        visualMap: {
+          min: 0,
+          max: 10,
+          calculable: true,
+          orient: 'horizontal',
+          right: '10',
+          top: '0%'
+        },
+        series: [
+          {
+            name: '',
+            type: 'heatmap',
+            data: [],
+            label: {
+              show: true
+            },
+            emphasis: {
+              itemStyle: {
+                shadowBlur: 10,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
+            }
+          }
+        ]
+      },
+    };
+  },
+  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.option.visualMap.max = option.max ? option.max : 0;
+        // 初始化雷达图
+        this.chartObj = chartObj;
+        this.chartObj.setOption(this.option);
+      });
+    },
+    setJson(array) {
+      this.ooption = {
+        xdata: [],
+        sdata: [],
+        max: 0
+      }
+      let _array = array
+      let max = []
+      for (var i = 0; i < _array.length; i++) {
+        this.ooption.xdata.push(_array[i].Month + '月')
+        this.ooption.sdata.push([i, 0, _array[i].sun])
+        this.ooption.sdata.push([i, 1, _array[i].mon])
+        this.ooption.sdata.push([i, 2, _array[i].tue])
+        this.ooption.sdata.push([i, 3, _array[i].wed])
+        this.ooption.sdata.push([i, 4, _array[i].thur])
+        this.ooption.sdata.push([i, 5, _array[i].fri])
+        this.ooption.sdata.push([i, 6, _array[i].sat])
+        // let _data = [_array[i].Month-1,] //[月份,星期,值]
+        max.push(_array[i].sun)
+        max.push(_array[i].mon)
+        max.push(_array[i].tue)
+        max.push(_array[i].wed)
+        max.push(_array[i].thur)
+        max.push(_array[i].fri)
+        max.push(_array[i].sat)
+      }
+      this.ooption.max = max.sort(function (a, b) {
+        return b - a;
+      })[0];
+      if (!this.chartObj) {
+        this.setChart(this.ooption);
+      } else {
+        this.option.xAxis.data = this.ooption.xdata;
+        this.option.series[0].data = this.ooption.sdata;
+        this.option.visualMap.max = this.ooption.max ? this.ooption.max : 0;
+        this.chartObj.setOption(this.option);
+      }
+    }
+  },
+  watch: {
+    yearArray: {
+      immediate: true,
+      deep: true,
+      handler(newValue, oldValue) {
+        this.setJson(newValue)
+        this.$forceUpdate();
+      },
+    },
+  },
+  mounted() {
+    this.setJson(this.yearArray)
+
+    window.addEventListener("resize", () => {
+      if (_this.chartObj) {
+        _this.chartObj.resize();
+      }
+    });
+  },
+};
+</script>
+
+<style scoped>
+.data_body {
+  height: 100%;
+  position: relative;
+  border-radius: 5px;
+  margin: 0 auto;
+  box-sizing: border-box;
+  padding: 0;
+  width: 95%;
+  background: #fff;
+}
+</style>

+ 1 - 1
src/components/pages/liveRoom.vue

@@ -1799,7 +1799,7 @@ export default {
       }
     },
     openFile(u) {
-      this.pptImgUrl = "https://view.officeapps.live.com/op/view.aspx?src=" + u;
+      this.pptImgUrl = "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(u);
       this.isBlock = 10;
     },
     playVideo() {

+ 1 - 1
src/components/pages/liveRoomKQ.vue

@@ -1799,7 +1799,7 @@ export default {
       }
     },
     openFile(u) {
-      this.pptImgUrl = "https://view.officeapps.live.com/op/view.aspx?src=" + u;
+      this.pptImgUrl = "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(u);
       this.isBlock = 10;
     },
     playVideo() {

+ 2 - 2
src/components/pages/myReport/components/MyLookComponent/worksDetail3.vue

@@ -1819,7 +1819,7 @@ export default {
             ) {
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                pptInfo[i].content;
+                encodeURIComponent(pptInfo[i].content);
               workJson[pptInfo[i].stage + "-" + pptInfo[i].task].wpptInfo.push({
                 wpptInfo: a,
                 score: pptInfo[i].score
@@ -1966,7 +1966,7 @@ export default {
               t = 2;
               var a =
                 "https://view.officeapps.live.com/op/view.aspx?src=" +
-                cocopi.content;
+                encodeURIComponent(cocopi.content);
               workJson[
                 cocopiInfo[i].stage + "-" + cocopiInfo[i].task
               ].cocopiInfo.push({

+ 3 - 3
src/components/pages/student/addCourse.vue

@@ -4544,7 +4544,7 @@ export default {
                   _type = 3;
                   src =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
-                    data.Location;
+                    encodeURIComponent(data.Location);
                 } else if (
                   videoA.indexOf(
                     data.Location.split(".")[
@@ -4592,7 +4592,7 @@ export default {
                 } else if (type == 3) {
                   src =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
-                    data.Location;
+                    encodeURIComponent(data.Location);
                 } else {
                   src = data.Location;
                 }
@@ -8366,7 +8366,7 @@ export default {
         -1
       ) {
         this.pptImgUrl =
-          "https://view.officeapps.live.com/op/view.aspx?src=" + f;
+          "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(f);
         this.showPDF = false;
         this.dialogVisibleFile = true;
       } else if (

+ 2 - 2
src/components/pages/studio/addCourse.vue

@@ -5608,7 +5608,7 @@ export default {
                 } else if (type == 3) {
                   src =
                     "https://view.officeapps.live.com/op/view.aspx?src=" +
-                    data.Location;
+                    encodeURIComponent(data.Location);
                 } else {
                   src = data.Location;
                 }
@@ -9133,7 +9133,7 @@ export default {
         -1
       ) {
         this.pptImgUrl =
-          "https://view.officeapps.live.com/op/view.aspx?src=" + f;
+          "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(f);
         this.showPDF = false;
         this.dialogVisibleFile = true;
       } else if (

+ 4 - 3
src/components/pages/tencent/student.vue

@@ -265,6 +265,7 @@ export default {
     //新增学生
     insertStudent() {
       this.dialogVisible = true;
+      let sMail = this.sMail.indexOf("@") != -1 ? this.sMail : this.sMail + "@qq.com";
       if (this.sName === "") {
         this.$message.error("学生姓名不能为空");
         return;
@@ -272,7 +273,7 @@ export default {
         this.$message.error("手机号格式不正确");
         return;
       } else if (
-        !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(this.sMail)
+        !/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(sMail)
       ) {
         this.$message.error("邮箱格式不正确");
         return;
@@ -297,7 +298,7 @@ export default {
         //     if (res.data[0].length > 0) {
         //       this.$message.error("此学生手机号码已被注册");
         //     } else {
-        let params = { un: this.sMail };
+        let params = { un: sMail };
         this.ajax
           .get(this.$store.state.api + "findMail", params)
           .then((res) => {
@@ -332,7 +333,7 @@ export default {
     add_Student() {
       let params = [
         {
-          username: this.sMail,
+          username: this.sMail.indexOf("@") != -1 ? this.sMail : this.sMail + "@qq.com",
           userpassword: 123456,
           alias: this.sName,
           oid: this.oid,

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov