lsc 2 лет назад
Родитель
Сommit
8448861ffb

+ 1 - 1
dist/index.html

@@ -25,7 +25,7 @@
       height: 100%;
       width: 100%;
       background: #e6eaf0;
-    }</style><link href=./static/css/app.ee1bc2b6a53d91844028093d234d7335.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.1b8e037bd3fbbd358d74.js></script><script type=text/javascript src=./static/js/app.e2a598fa2587d95100c1.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.6d902dcba5c1b40dd2b31d3b0ee47ee4.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.1b8e037bd3fbbd358d74.js></script><script type=text/javascript src=./static/js/app.304e816e6e59c28fa0a6.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.6d902dcba5c1b40dd2b31d3b0ee47ee4.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.6d902dcba5c1b40dd2b31d3b0ee47ee4.css.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.304e816e6e59c28fa0a6.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.304e816e6e59c28fa0a6.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/manifest.3512a67a6213c2df4180.js.map


+ 4 - 1
src/components/pages/components/classReport.vue

@@ -107,7 +107,7 @@
 
 <script>
 export default {
-  props: ["ooid"],
+  props: ["ooid","checkid"],
   data() {
     return {
       sName: "",
@@ -235,6 +235,9 @@ export default {
     },
   },
   created() {
+    if(this.checkid){
+          this.classChoose = this.checkid
+        }
     this.getClass();
     this.getCData();
   },

+ 7 - 1
src/components/pages/components/courseReport.vue

@@ -79,7 +79,7 @@
 
 <script>
 export default {
-  props: ["ooid"],
+  props: ["ooid","checkid"],
   data() {
     return {
       sName: "",
@@ -99,6 +99,9 @@ export default {
       immediate: true,
       deep: true,
       handler(newValue, oldValue) {
+        if(this.checkid){
+          this.classChoose = this.checkid
+        }
         this.getClass();
         this.getCourse();
         this.getCourseData();
@@ -191,6 +194,9 @@ export default {
     },
   },
   created() {
+    if(this.checkid){
+          this.classChoose = this.checkid
+        }
     this.getClass();
     this.getCourse();
     this.getCourseData();

+ 7 - 1
src/components/pages/components/evaReport.vue

@@ -128,7 +128,7 @@
 
 <script>
 export default {
-  props: ["ooid"],
+  props: ["ooid","checkid"],
   data() {
     return {
       sName: "",
@@ -153,6 +153,9 @@ export default {
       immediate: true,
       deep: true,
       handler(newValue, oldValue) {
+        if(this.checkid){
+          this.classChoose = this.checkid
+        }
         this.getClass();
         this.getCourse();
         this.getCourseData();
@@ -290,6 +293,9 @@ export default {
     },
   },
   created() {
+    if(this.checkid){
+          this.classChoose = this.checkid
+        }
     this.getClass();
     this.getCourse();
     this.getCourseData();

+ 7 - 1
src/components/pages/components/stReport.vue

@@ -124,7 +124,7 @@
 
 <script>
 export default {
-  props: ["ooid", "ccid"],
+  props: ["ooid", "ccid","checkid"],
   data() {
     return {
       sName: "",
@@ -146,6 +146,9 @@ export default {
       immediate: true,
       deep: true,
       handler(newValue, oldValue) {
+        if(this.checkid){
+          this.classChoose = this.checkid
+        }
         this.getClass();
         this.getSData();
         this.$forceUpdate();
@@ -259,6 +262,9 @@ export default {
     },
   },
   created() {
+    if(this.checkid){
+      this.classChoose = this.checkid
+    }
     this.getClass();
     this.getSData();
   },

+ 1 - 0
src/components/pages/dataBoard/course/chartList/workTime.vue

@@ -52,6 +52,7 @@ export default {
         },
         series: [
           {
+            name: "授课时长(时)",
             type: "bar",
             // data: [60, 110, 25, 130, 65, 80],
             data: [],

+ 1 - 1
src/components/pages/dataBoard/school/index.vue

@@ -697,7 +697,7 @@ export default {
 
     },
     format(percentage) {
-      return percentage;
+      return percentage + '%';
     },
   },
 };

+ 89 - 10
src/components/pages/dataBoard/student/index.vue

@@ -57,7 +57,7 @@
               <span>{{scoreJun}}</span>
             </div>
           </div>
-          <studentInfo style="height: calc(100% - 70px)"></studentInfo>
+          <studentInfo style="height: calc(100% - 70px)" :EscoreArray2="EscoreArray2" @openDataClass="openDataClass"></studentInfo>
         </div>
       </div>
       <div class="bottom">
@@ -72,7 +72,7 @@
                 <el-progress
                   :width="90"
                   type="circle"
-                  :percentage="36"
+                  :percentage="lightJson.course ? ((lightJson.course / count) * 100).toFixed(0) : 0"
                   :stroke-width="15"
                   :format="format"
                   color="#106BFF"
@@ -85,7 +85,7 @@
                 <el-progress
                   :width="90"
                   type="circle"
-                  :percentage="76"
+                  :percentage="lightJson.scourse ? ((lightJson.scourse / count) * 100).toFixed(0) : 0"
                   :stroke-width="15"
                   :format="format"
                   color="#106BFF"
@@ -98,7 +98,7 @@
                 <el-progress
                   :width="90"
                   type="circle"
-                  :percentage="76"
+                  :percentage="lightJson.tools ? ((lightJson.tools / count) * 100).toFixed(0) : 0"
                   :stroke-width="15"
                   :format="format"
                   color="#106BFF"
@@ -111,7 +111,7 @@
                 <el-progress
                   :width="90"
                   type="circle"
-                  :percentage="76"
+                  :percentage="lightJson.xcourse ? ((lightJson.xcourse / count) * 100).toFixed(0) : 0"
                   :stroke-width="15"
                   :format="format"
                   color="#106BFF"
@@ -124,7 +124,7 @@
                 <el-progress
                   :width="90"
                   type="circle"
-                  :percentage="76"
+                  :percentage="lightJson.exchange ? ((lightJson.exchange / count) * 100).toFixed(0) : 0"
                   :stroke-width="15"
                   :format="format"
                   color="#106BFF"
@@ -139,7 +139,7 @@
       <div class="top">
         <div class="titleBox">
           <div class="title">学生综合评价</div>
-          <el-select v-model="eva" @change="typeChange2" @focus="setMinWidth" class="selectBox" style="width: 150px;">
+          <el-select v-model="eva" @focus="setMinWidth" class="selectBox" style="width: 150px;">
             <el-option v-for="item in evArray" :key="item.id" :label="item.title" :value="item.id" :style="{'width': minWidth + 2 + 'px'}"></el-option>
           </el-select>
         </div>
@@ -162,7 +162,7 @@
               <span>{{ (loginTime / count).toFixed(0) }}小时</span>
             </div>
           </div>
-          <loginTime style="height: calc(100% - 70px)"></loginTime>
+          <loginTime style="height: calc(100% - 70px)" :EloginTimeArray="EloginTimeArray"></loginTime>
         </div>
       </div>
     </div>
@@ -205,13 +205,33 @@ export default {
       eva:'',
       evCourseArray:[],
       minWidth:0,
-      courseClass:[]
+      courseClass:[],
+      lightJson: {
+        course:0,
+        scourse:0,
+        tools:0,
+        xcourse:0,
+        exchange:0,
+      },
+      EloginTimeArray:[],
+      EscoreArray2:[],
     };
   },
   mounted() {
     this.getData();
   },
   methods: {
+    openDataClass(classIndex){
+      console.log(classIndex);
+      console.log(this.EscoreArray2[classIndex]);
+      window.parent.postMessage(
+        { 
+          tools: "openDataClass",
+          classid: this.EscoreArray2[classIndex].id,
+        }, 
+        "*"
+      );
+    },
     setMinWidth (val) {
       this.minWidth = val.srcElement.clientWidth
     },
@@ -367,6 +387,65 @@ export default {
             }
           }
           this.courseClass = _courseClass
+
+          let _lcourse = res.data[10][0].num //参与课程数量
+          let _lscourse = res.data[11][0].num //参与项目
+          let _ltools = res.data[12][0].num //使用工具
+          let _lxcourse = res.data[13][0].num //协同合作
+          let _lexchange = res.data[14][0].num //互动交流
+
+          this.lightJson = {
+            course:_lcourse,
+            scourse:_lscourse,
+            tools:_ltools,
+            xcourse:_lxcourse,
+            exchange:_lexchange,
+          }
+
+          let _loginTimeArray = res.data[15] //在线时间
+          let _scoreArray2 = res.data[16] //得分
+
+
+          let _EloginTimeArray = []
+          for (let i = 0; i < _classList.length; i++) {
+            _EloginTimeArray.push({
+              id:_classList[i].id,
+              name:_classList[i].name,
+              loginTime:0
+            })
+            for (let j = 0; j < _loginTimeArray.length; j++) {
+              const _user = _loginTimeArray[j];
+              if(_user.classid.indexOf(_classList[i].id) != -1){
+                _EloginTimeArray[i].loginTime += _user.time
+              }
+            }
+            _EloginTimeArray[i].loginTime = (_EloginTimeArray[i].loginTime / 60).toFixed(2) //换算成小时
+          }
+          this.EloginTimeArray = _EloginTimeArray
+          let _EscoreArray2 = []
+          for (let i = 0; i < _classList.length; i++) {
+            _EscoreArray2.push({
+              id:_classList[i].id,
+              name:_classList[i].name,
+              max:0,
+              min:0,
+              score:[]
+            })
+            for (let j = 0; j < _scoreArray2.length; j++) {
+              const _user = _scoreArray2[j];
+              if(_user.classid.indexOf(_classList[i].id) != -1){
+                _EscoreArray2[i].score.push(_user.score)
+              }
+            }
+            if(_EscoreArray2[i].score.length){
+              _EscoreArray2[i].score = _EscoreArray2[i].score.sort((i, j) => {
+                return i-j; 
+              })
+              _EscoreArray2[i].max = _EscoreArray2[i].score[_EscoreArray2[i].score.length-1]
+              _EscoreArray2[i].min = _EscoreArray2[i].score[0]
+            }
+          }
+          this.EscoreArray2 = _EscoreArray2
         })
         .catch((err) => {
           this.isLoading = false;
@@ -374,7 +453,7 @@ export default {
         });
     },
     format(percentage) {
-      return percentage;
+      return percentage + '%';
     },
   },
 };

+ 63 - 13
src/components/pages/dataBoard/student/loginTime/index.vue

@@ -8,26 +8,47 @@
   
 <script>
 export default {
+    props: {
+        EloginTimeArray: {
+            type: Array,
+        },
+    },
     data() {
         return {
             chartObj: null,
             ooption: {
                 xdata: [],
-                sdata: [],
+                data: [],
             },
             option: {
                 title: {
                     text: '在线时长',
-                    textStyle:{
+                    textStyle: {
                         fontSize: 12,
                     },
                     padding: [5, 0, 0, 10]
                 },
-                tooltip: {},
+                tooltip: {
+                    trigger: "axis",
+                    axisPointer: {
+                        type: "shadow",
+                    },
+                },
+                dataZoom: [
+                    {
+                        // start: 50,
+                        type: 'inside',
+                        yAxisIndex: 0
+                    },
+                    {
+                        type: 'slider',
+                        yAxisIndex: 0
+                    }
+                ],
                 grid: {
                     top: '10%',
                     left: '5%',
-                    right: '5%',
+                    right: '10%',
                     bottom: '5%',
                     containLabel: true
                 },
@@ -35,20 +56,24 @@ export default {
                     type: 'value',
                     boundaryGap: [0, 0.01]
                 },
+
                 yAxis: {
                     type: 'category',
-                    data: ['一年级', '二年级', '三年级', '四年级', '五年级', '六年级']
+                    // data: ['一年级', '二年级', '三年级', '四年级', '五年级', '六年级']
+                    data: []
                 },
                 series: [
                     {
+                        name: "在线时长(时)",
                         type: 'bar',
-                        data: [180, 50, 70, 90, 100, 130],
+                        // data: [180, 50, 70, 90, 100, 130],
+                        data: [],
                         itemStyle: {
                             normal: {
-                                    color: function (params) {
+                                color: function (params) {
                                     return "#106bff";
-                                    },
                                 },
+                            },
                         },
                     }
                 ]
@@ -67,20 +92,45 @@ export default {
                     //劳动课程
                     this.$el.querySelector("#charts_canvas")
                 );
-                //   this.option.xAxis.data = option.xdata;
-                //   this.option.series[0].data = data;
+                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.setChart(this.ooption);
+        this.setArray(this.EloginTimeArray)
         var _this = this;
         window.addEventListener("resize", () => {
             if (_this.chartObj) {

+ 63 - 17
src/components/pages/dataBoard/student/studentInfo/index.vue

@@ -8,6 +8,11 @@
   
 <script>
 export default {
+    props: {
+        EscoreArray2: {
+            type: Array,
+        },
+    },
     data() {
         return {
             chartObj: null,
@@ -17,33 +22,43 @@ export default {
             },
             option: {
                 xAxis: {
-                    data: ['一年级一班', '一年级二班', '一年级三班', '一年级四班', '一年级五班', '一年级六班', '一年级七班']
+                    // data: ['一年级一班', '一年级二班', '一年级三班', '一年级四班', '一年级五班', '一年级六班', '一年级七班']
+                    data: []
                 },
                 tooltip: {
                     formatter: function (params, ticket, callback) {
-                        return `最高分:${params.value[2]}</br>最低分:${params.value[1]}`;
+                        return `${params.marker + params.name}</br>最高分:${params.value[2]}</br>最低分:${params.value[1]}`;
                     }
                 },
+                dataZoom: [
+                    {
+                        // start: 50,
+                        type: 'inside',
+                    },
+                    {
+                        type: 'slider',
+                    }
+                ],
                 yAxis: {},
                 grid: {
-                    top:'5%',
+                    top: '5%',
                     left: '0%',
                     right: '0%',
-                    bottom: '5%',
+                    bottom: '13%',
                     containLabel: true
                 },
                 series: [
                     {
                         type: 'candlestick',
                         data: [
-                            [70, 80, 70, 80],
-                            [60, 90, 60, 90],
-                            [50, 80, 50, 80],
-                            [78, 88, 78, 88],
-                            [85, 98, 85, 98],
-                            [75, 95, 75, 95],
-                            [65, 100, 65, 100],
-                            [55, 99, 55, 99]
+                            // [70, 80, 70, 80],
+                            // [60, 90, 60, 90],
+                            // [50, 80, 50, 80],
+                            // [78, 88, 78, 88],
+                            // [85, 98, 85, 98],
+                            // [75, 95, 75, 95],
+                            // [65, 100, 65, 100],
+                            // [55, 99, 55, 99]
                         ],
                         itemStyle: {
                             color: '#17C469',
@@ -66,20 +81,51 @@ export default {
                     //劳动课程
                     this.$el.querySelector("#charts_canvas")
                 );
-                //   this.option.xAxis.data = option.xdata;
-                //   this.option.series[0].data = option.sdata;
+                this.option.xAxis.data = option.xdata;
+                this.option.series[0].data = option.sdata;
+                chartObj.off('click')
+                let _this = this
+                chartObj.on('click', function (param) {
+                    console.log(param);  //X轴的值
+                    _this.$emit('openDataClass', param.dataIndex)
+                });
                 // 初始化雷达图
                 this.chartObj = chartObj;
                 this.chartObj.setOption(this.option);
             });
         },
+        setArray(Array) {
+            this.ooption = {
+                xdata: [],
+                sdata: [],
+            }
+            let _array = Array
+            for (var i = 0; i < _array.length; i++) {
+                this.ooption.xdata.push(_array[i].name)
+                this.ooption.sdata.push([_array[i].min, _array[i].max, _array[i].min, _array[i].max])
+            }
+
+            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);
+            }
+        }
     },
     watch: {
-
+        EscoreArray2: {
+            immediate: true,
+            deep: true,
+            handler(newValue, oldValue) {
+                this.setArray(newValue)
+                this.$forceUpdate();
+            },
+        },
     },
     mounted() {
-
-        this.setChart(this.ooption);
+        this.setArray(this.EscoreArray2)
         var _this = this;
         window.addEventListener("resize", () => {
             if (_this.chartObj) {

+ 1 - 1
src/components/pages/dataBoard/teacher/index.vue

@@ -613,7 +613,7 @@ export default {
         });
     },
     format(percentage) {
-      return percentage;
+      return percentage + '%';
     },
   },
 };

+ 7 - 1
src/components/pages/worksReport.vue

@@ -59,19 +59,24 @@
             :uuid="userid"
             :ooid="oid"
             :ccid="cid"
+            :checkid="checkid"
             @getStReport="getOneReport"
           ></StReport>
           <ClassReport
             v-if="wrType == 1"
             :ooid="oid"
+            :checkid="checkid"
             @getCStReport="getSecondReport"
           ></ClassReport>
           <CourseReport
             v-if="wrType == 2"
             :ooid="oid"
+            :checkid="checkid"
             @getCourseReport="getThirdReport"
           ></CourseReport>
-          <EvaReport v-if="wrType == 3" :ooid="oid" @getEvaReport="getFourReport"></EvaReport>
+          <EvaReport v-if="wrType == 3" :ooid="oid" @getEvaReport="getFourReport" 
+          :checkid="checkid"
+          ></EvaReport>
         </div>
       </div>
     </div>
@@ -120,6 +125,7 @@ export default {
       org: this.$route.query.org,
       oid: this.$route.query.oid,
       cid: this.$route.query.classid,
+      checkid: this.$route.query.checkid,
       wrType: 0,
       reportVisible: false,
       reportVisible1: false,

Некоторые файлы не были показаны из-за большого количества измененных файлов