huangminghao 1 سال پیش
والد
کامیت
dca16b9330

+ 4 - 0
dist/index.html

@@ -25,7 +25,11 @@
       height: 100%;
       width: 100%;
       background: #e6eaf0;
+<<<<<<< HEAD
     }</style><link href=./static/css/app.b8c8b736e19ece5e4019bf16756a906d.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.4ae2783fdfe7ab52e4d5.js></script><script type=text/javascript src=./static/js/vendor.b01159b52abeac4e6216.js></script><script type=text/javascript src=./static/js/app.291521c7fb52d32edc55.js></script></body></html><script>function stopSafari() {
+=======
+    }</style><link href=./static/css/app.0834bf7c0ffe459133d86755e1d8f590.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.0c2ba8174d8601044962.js></script></body></html><script>function stopSafari() {
+>>>>>>> 358ea8102b1d43cdd7d2a6e8a9713334e98d629d
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/css/app.0834bf7c0ffe459133d86755e1d8f590.css


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/css/app.0834bf7c0ffe459133d86755e1d8f590.css.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/0.7da288988865a9378b49.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/0.7da288988865a9378b49.js.map


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/app.0c2ba8174d8601044962.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/app.0c2ba8174d8601044962.js.map


+ 2 - 0
dist/static/js/manifest.3512a67a6213c2df4180.js

@@ -0,0 +1,2 @@
+!function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,a,c){for(var i,u,f,s=0,l=[];s<r.length;s++)u=r[s],t[u]&&l.push(t[u][0]),t[u]=0;for(i in a)Object.prototype.hasOwnProperty.call(a,i)&&(e[i]=a[i]);for(n&&n(r,a,c);l.length;)l.shift()();if(c)for(s=0;s<c.length;s++)f=o(o.s=c[s]);return f};var r={},t={4:0};function o(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,o),t.l=!0,t.exports}o.e=function(e){var n=t[e];if(0===n)return new Promise(function(e){e()});if(n)return n[2];var r=new Promise(function(r,o){n=t[e]=[r,o]});n[2]=r;var a=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.charset="utf-8",c.async=!0,c.timeout=12e4,o.nc&&c.setAttribute("nonce",o.nc),c.src=o.p+"static/js/"+e+"."+{0:"7da288988865a9378b49",1:"994623639438b244a74c"}[e]+".js";var i=setTimeout(u,12e4);function u(){c.onerror=c.onload=null,clearTimeout(i);var n=t[e];0!==n&&(n&&n[1](new Error("Loading chunk "+e+" failed.")),t[e]=void 0)}return c.onerror=c.onload=u,a.appendChild(c),r},o.m=e,o.c=r,o.d=function(e,n,r){o.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},o.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(n,"a",n),n},o.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},o.p="./",o.oe=function(e){throw console.error(e),e}}([]);
+//# sourceMappingURL=manifest.3512a67a6213c2df4180.js.map

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/manifest.3512a67a6213c2df4180.js.map


+ 67 - 47
src/components/pages/dataBoardNew/course/chartList/subjuect.vue

@@ -20,6 +20,11 @@ export default {
   components: {
     highcharts: Chart,
   },
+  props: {
+    resultSubject: {
+      type: Array,
+    },
+  },
   data() {
     return {
       chartObj: null,
@@ -36,53 +41,53 @@ export default {
         series: [{
           keys: ['from', 'to', 'weight'],
           data: [
-            ['Brazil', 'Portugal', 5],
-            ['Brazil', 'France', 1],
-            ['Brazil', 'Spain', 1],
-            ['Brazil', 'England', 1],
-            ['Canada', 'Portugal', 1],
-            ['Canada', 'France', 5],
-            ['Canada', 'England', 1],
-            ['Mexico', 'Portugal', 1],
-            ['Mexico', 'France', 1],
-            ['Mexico', 'Spain', 5],
-            ['Mexico', 'England', 1],
-            ['USA', 'Portugal', 1],
-            ['USA', 'France', 1],
-            ['USA', 'Spain', 1],
-            ['USA', 'England', 5],
-            ['Portugal', 'Angola', 2],
-            ['Portugal', 'Senegal', 1],
-            ['Portugal', 'Morocco', 1],
-            ['Portugal', 'South Africa', 3],
-            ['France', 'Angola', 1],
-            ['France', 'Senegal', 3],
-            ['France', 'Mali', 3],
-            ['France', 'Morocco', 3],
-            ['France', 'South Africa', 1],
-            ['Spain', 'Senegal', 1],
-            ['Spain', 'Morocco', 3],
-            ['Spain', 'South Africa', 1],
-            ['England', 'Angola', 1],
-            ['England', 'Senegal', 1],
-            ['England', 'Morocco', 2],
-            ['England', 'South Africa', 7],
-            ['South Africa', 'China', 5],
-            ['South Africa', 'India', 1],
-            ['South Africa', 'Japan', 3],
-            ['Angola', 'China', 5],
-            ['Angola', 'India', 1],
-            ['Angola', 'Japan', 3],
-            ['Senegal', 'China', 5],
-            ['Senegal', 'India', 1],
-            ['Senegal', 'Japan', 3],
-            ['Mali', 'China', 5],
-            ['Mali', 'India', 1],
-            ['Mali', 'Japan', 3],
-            ['Morocco', 'China', 5],
-            ['Morocco', 'India', 1],
-            ['Morocco', 'Japan', 3],
-            ['Japan', 'Brazil', 1]
+            // ['Brazil', 'Portugal', 5],
+            // ['Brazil', 'France', 1],
+            // ['Brazil', 'Spain', 1],
+            // ['Brazil', 'England', 1],
+            // ['Canada', 'Portugal', 1],
+            // ['Canada', 'France', 5],
+            // ['Canada', 'England', 1],
+            // ['Mexico', 'Portugal', 1],
+            // ['Mexico', 'France', 1],
+            // ['Mexico', 'Spain', 5],
+            // ['Mexico', 'England', 1],
+            // ['USA', 'Portugal', 1],
+            // ['USA', 'France', 1],
+            // ['USA', 'Spain', 1],
+            // ['USA', 'England', 5],
+            // ['Portugal', 'Angola', 2],
+            // ['Portugal', 'Senegal', 1],
+            // ['Portugal', 'Morocco', 1],
+            // ['Portugal', 'South Africa', 3],
+            // ['France', 'Angola', 1],
+            // ['France', 'Senegal', 3],
+            // ['France', 'Mali', 3],
+            // ['France', 'Morocco', 3],
+            // ['France', 'South Africa', 1],
+            // ['Spain', 'Senegal', 1],
+            // ['Spain', 'Morocco', 3],
+            // ['Spain', 'South Africa', 1],
+            // ['England', 'Angola', 1],
+            // ['England', 'Senegal', 1],
+            // ['England', 'Morocco', 2],
+            // ['England', 'South Africa', 7],
+            // ['South Africa', 'China', 5],
+            // ['South Africa', 'India', 1],
+            // ['South Africa', 'Japan', 3],
+            // ['Angola', 'China', 5],
+            // ['Angola', 'India', 1],
+            // ['Angola', 'Japan', 3],
+            // ['Senegal', 'China', 5],
+            // ['Senegal', 'India', 1],
+            // ['Senegal', 'Japan', 3],
+            // ['Mali', 'China', 5],
+            // ['Mali', 'India', 1],
+            // ['Mali', 'Japan', 3],
+            // ['Morocco', 'China', 5],
+            // ['Morocco', 'India', 1],
+            // ['Morocco', 'Japan', 3],
+            // ['Japan', 'Brazil', 1]
           ],
           type: 'dependencywheel',
           name: 'Dependency wheel series',
@@ -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>

+ 54 - 1
src/components/pages/dataBoardNew/course/index.vue

@@ -292,7 +292,7 @@
         </div>
         <div class="dataBox">
           <WorkTime style="height: calc(100% - 25px)" :personArray="personList" v-if="xtType"></WorkTime>
-          <Subjuect style="height: calc(100% - 25px)" v-if="!xtType"></Subjuect>
+          <Subjuect style="height: calc(100% - 25px)" v-if="!xtType" :resultSubject="resultSubject"></Subjuect>
           <div class="otherCss">
             <div v-if="!xtType">转换为人员协同</div>
             <div v-if="xtType">转换为学科协同</div>
@@ -408,6 +408,10 @@ export default {
         { value: 0, name: "教学评一体化课程" },
       ],
       weekCourse2: [],
+<<<<<<< HEAD
+=======
+      resultSubject: []
+>>>>>>> 358ea8102b1d43cdd7d2a6e8a9713334e98d629d
     };
   },
   mounted() {
@@ -831,7 +835,11 @@ export default {
         .then((res) => {
           this.isLoading = false;
           let _grade = res.data[0]; //年级
+<<<<<<< HEAD
           let _subject = res.data[1]; //学科
+=======
+          let _subject = JSON.parse(JSON.stringify(res.data[1])); //学科
+>>>>>>> 358ea8102b1d43cdd7d2a6e8a9713334e98d629d
           let _themeList = res.data[2]; //主题
           let _allTime = [..._grade, ..._subject, ..._themeList]; //年级 + 学科 + 主题
           this.allCourse = res.data[3][0].count; //课程总数
@@ -1384,6 +1392,45 @@ export default {
 
           this.weekCourse2 = weekCourse2;
 
+<<<<<<< HEAD
+=======
+
+
+          let CourseLabel = res.data[14]; //带分类的课程
+          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);
+
+>>>>>>> 358ea8102b1d43cdd7d2a6e8a9713334e98d629d
           this.$forceUpdate();
         })
         .catch((err) => {
@@ -1391,6 +1438,12 @@ export default {
           console.error(err);
         });
     },
+<<<<<<< HEAD
+=======
+    checkArrayInclusion(arr1, arr2) {
+      return arr1.every(item => arr2.includes(item));
+    },
+>>>>>>> 358ea8102b1d43cdd7d2a6e8a9713334e98d629d
   },
 };
 </script>

+ 26 - 1
src/components/pages/dataBoardNew/index.vue

@@ -12,7 +12,7 @@
       <div class="db_check">
         <div :class="{ active: type == 1 }" @click="setType(1)">综合数据</div>
         <div :class="{ active: type == 2 }" @click="setType(2)">课程数据</div>
-        <div :class="{ active: type == 5 }" @click="setType(5)">项目数据</div>
+        <div :class="{ active: type == 5 }" @click="setType(5)" v-if="scourseLength > 0">项目数据</div>
         <div :class="{ active: type == 3 }" @click="setType(3)">学生数据</div>
         <div :class="{ active: type == 4 }" @click="setType(4)">教师数据</div>
       </div>
@@ -46,12 +46,37 @@ export default {
       type: 1,
       oid: this.$route.query.oid,
       org: this.$route.query.org,
+      scourseLength: 0,
     };
   },
   methods: {
     setType(type) {
       this.type = type;
     },
+    getData() {
+      this.isLoading = true;
+      let params = [
+        {
+          oid: this.oid,
+          org: this.org,
+        },
+      ];
+      this.ajax
+        .post(this.$store.state.api + "getCourseLength", params)
+        .then((res) => {
+          this.isLoading = false;
+         
+          this.scourseLength = res.data[0][0].count;
+          this.$forceUpdate();
+        })
+        .catch((err) => {
+          this.isLoading = false;
+          console.error(err);
+        });
+    },
+  },
+  mounted () {
+    this.getData();
   },
 };
 </script>

+ 147 - 180
src/components/pages/dataBoardNew/project/chartList/cateRank.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="data_body">
-        <div style="width: 100%; height: 100%">
+        <div style="width: 100%; height: 100%" :style="{ minWidth: ooption.hours.length * 75 + 'px' }">
             <div id="charts_canvas" class="echart" style="width: 100%; height: 100%; "></div>
         </div>
     </div>
@@ -26,105 +26,63 @@ export default {
                     position: 'top',
                     formatter: function (params) {
                         // console.log(params);
-                        return params.marker + params.name + ' ' + params.data[1];//params.seriesName + '<br>' + params.
+                        return params.marker + params.name + ' ' + params.data[2];//params.seriesName + '<br>' + params.
 
                     }
                 },
-                title: [],
-                singleAxis: [],
-                series: []
+                grid: {
+                    top: '5%',
+                    left: 0,
+                    bottom: '5%',
+                    right: '5%',
+                    containLabel: true
+                },
+                xAxis: {
+                    type: 'category',
+                    data: [],
+                    boundaryGap: false,
+                    splitLine: {
+                        show: true
+                    },
+                    axisLine: {
+                        show: false
+                    }
+                },
+                yAxis: {
+                    type: 'category',
+                    data: [],
+                    axisLine: {
+                        show: false
+                    }
+                },
+                series: [
+                    {
+                        name: 'Punch Card',
+                        type: 'scatter',
+                        symbolSize: function (val) {
+                            return val[2] * 3;
+                        },
+                        data: [],
+                        animationDelay: function (idx) {
+                            return idx * 5;
+                        },
+                        itemStyle: {
+                            color: function(params) {
+                            // 根据行索引设置不同的颜色
+                            var row = params.value[1];
+                            var colorList = ['hsl(170, 80%, 75%)', 'hsl(300, 99%, 70%)', 'hsl(139, 93%, 60%)', 'hsl(56, 73%, 69%)', 'hsl(352, 98%, 69%)', 'hsl(288, 76%, 66%)', 'hsl(167, 89%, 60%)', 'hsl(83, 81%, 74%)', 'hsl(359, 84%, 66%)', 'hsl(208, 96%, 66%)', 'hsl(259, 82%, 62%)', 'hsl(224, 95%, 64%)', 'hsl(119, 89%, 71%)', 'hsl(35, 75%, 70%)', 'hsl(48, 73%, 76%)', 'hsl(10, 73%, 69%)', 'hsl(112, 88%, 71%)', 'hsl(90, 87%, 61%)', 'hsl(37, 83%, 66%)', 'hsl(192, 86%, 72%)'];
+                            return colorList[row % colorList.length];
+                            }
+                        }
+                    }
+                ]
+                // title: [],
+                // singleAxis: [],
+                // series: []
             },
         };
     },
     methods: {
-        // setChart(option) {
-        //     // 雷达图显示的标签
-        //     let newPromise = new Promise((resolve) => {
-        //         resolve();
-        //     });
-        //     //然后异步执行echarts的初始化函数
-        //     newPromise.then(() => {
-        //         const chartObj = this.$echarts.init(
-        //             //劳动课程
-        //             this.$el.querySelector("#charts_canvas")
-        //         );
-        //         const hours = option.hours
-        //         // [
-        //         //     // '语文', '数学', '英语', '科学', '体育', '音乐', '美术',
-        //         //     // '劳动', '其他',
-        //         // ];
-        //         // prettier-ignore
-        //         const days = option.days
-        //         // [
-        //         //     // '一年级', '二年级', '三年级', '四年级', '五年级', '六年级'
-        //         // ];
-        //         // prettier-ignore
-        //         const data = option.data
-        //         // [
-        //         //     // [0, 0, 2], [0, 1, 1], [0, 2, 3], [0, 3, 0], [0, 4, 5], [0, 5, 5], [0, 6, 7], [0, 7, 8], [0, 8, 1],
-        //         //     // [1, 0, 5], [1, 1, 1], [1, 2, 2], [1, 3, 0], [1, 4, 5], [1, 5, 7], [1, 6, 7], [1, 7, 8], [1, 8, 6],
-        //         //     // [2, 0, 5], [2, 1, 2], [2, 2, 0], [2, 3, 2], [2, 4, 1], [2, 5, 5], [2, 6, 4], [2, 7, 4], [2, 8, 1],
-        //         //     // [3, 0, 1], [3, 1, 1], [3, 2, 1], [3, 3, 0], [3, 4, 5], [3, 5, 2], [3, 6, 7], [3, 7, 8], [3, 8, 5],
-        //         //     // [4, 0, 5], [4, 1, 3], [4, 2, 0], [4, 3, 3], [4, 4, 4], [4, 5, 2], [4, 6, 3], [4, 7, 5], [4, 8, 1],
-        //         //     // [5, 0, 5], [5, 1, 1], [5, 2, 0], [5, 3, 0], [5, 4, 5], [5, 5, 5], [5, 6, 7], [5, 7, 8], [5, 8, 3],
-        //         // ];
-        //         const title = [];
-        //         const singleAxis = [];
-        //         const series = [];
-        //         days.forEach(function (day, idx) {
-        //             title.push({
-        //                 textBaseline: 'middle',
-        //                 top: ((idx + 0.5) * 90) / days.length + '%',
-        //                 text: day,
-        //                 textStyle: {
-        //                     fontSize: 12,
-        //                 },
-        //             });
-        //             singleAxis.push({
-        //                 left: 70,
-        //                 type: 'category',
-        //                 boundaryGap: false,
-        //                 data: hours,
-        //                 top: (idx * 90) / days.length + 5 + '%',
-        //                 height: 90 / days.length - 10 + '%'
-        //             });
-        //             series.push({
-        //                 singleAxisIndex: idx,
-        //                 coordinateSystem: 'singleAxis',
-        //                 type: 'scatter',
-        //                 data: [],
-        //                 symbolSize: function (dataItem) {
-        //                     return dataItem[1] * 3;
-        //                 }
-        //             });
-        //         });
-        //         data.forEach(function (dataItem) {
-        //             series[dataItem[0]].data.push([dataItem[1], dataItem[2]]);
-        //         });
-        //         chartObj.off('click')
-        //         let _this = this
-        //         chartObj.on('click', function (param) {  
-        //             //param参数包含的内容有: 
-        //             //param.name:X轴的值 
-        //             //param.data:Y轴的值 
-        //             //param.value:Y轴的值 
-        //             //param.type:点击事件均为click 
-        //             //param.seriesName:legend的名称 
-        //             //param.seriesIndex:系列序号(series中当前图形是第几个图形第几个) 
-        //             //param.dataIndex:数值序列(X轴上当前点是第几个点)
-        //             //alert(param.seriesName);  //legend的名称
-        //             console.log(param);  //X轴的值
-        //             _this.$emit('openCourse',param.componentIndex,param.data[0])
-        //         });
-
-        //         this.option.title = title
-        //         this.option.singleAxis = singleAxis
-        //         this.option.series = series
-        //         // 初始化雷达图
-        //         this.chartObj = chartObj;
-        //         this.chartObj.setOption(this.option);
-        //     });
-        // },
         setChart(option) {
             // 雷达图显示的标签
             let newPromise = new Promise((resolve) => {
@@ -136,68 +94,73 @@ export default {
                     //劳动课程
                     this.$el.querySelector("#charts_canvas")
                 );
-                const hours = 
-                [
-                    '1班', '2班', '3班', '4班', '5班', '6班'
-                ];
+                const hours = option.hours
+                // [
+                //     // '语文', '数学', '英语', '科学', '体育', '音乐', '美术',
+                //     // '劳动', '其他',
+                // ];
                 // prettier-ignore
-                const days = 
-                [
-                    '一年级', '二年级', '三年级', '四年级', '五年级', '六年级'
-                ];
+                const days = option.days
+                // [
+                //     // '一年级', '二年级', '三年级', '四年级', '五年级', '六年级'
+                // ];
                 // prettier-ignore
-                const data = 
-                [
-                    [0, 0, 34], [0, 1, 35], [0, 2, 40], [0, 3, 33], [0, 4, 35], [0, 5, 35], 
-                    [1, 0, 34], [1, 1, 30], [1, 2, 35], [1, 3, 41], [1, 4, 42], [1, 5, 37], 
-                    [2, 0, 45], [2, 1, 35], [2, 2, 44], [2, 3, 45], [2, 4, 41], [2, 5, 35], 
-                    [3, 0, 41], [3, 1, 44], [3, 2, 43], [3, 3, 39], [3, 4, 42], [3, 5, 42], 
-                    [4, 0, 34], [4, 1, 36], [4, 2, 40], [4, 3, 0], [4, 4, 0], [4, 5, 0], 
-                    [5, 0, 44], [5, 1, 44], [5, 2, 34], [5, 3, 0], [5, 4, 0], [5, 5, 0],
-                ];
+                const data = option.data
+                // [
+                //     // [0, 0, 2], [0, 1, 1], [0, 2, 3], [0, 3, 0], [0, 4, 5], [0, 5, 5], [0, 6, 7], [0, 7, 8], [0, 8, 1],
+                //     // [1, 0, 5], [1, 1, 1], [1, 2, 2], [1, 3, 0], [1, 4, 5], [1, 5, 7], [1, 6, 7], [1, 7, 8], [1, 8, 6],
+                //     // [2, 0, 5], [2, 1, 2], [2, 2, 0], [2, 3, 2], [2, 4, 1], [2, 5, 5], [2, 6, 4], [2, 7, 4], [2, 8, 1],
+                //     // [3, 0, 1], [3, 1, 1], [3, 2, 1], [3, 3, 0], [3, 4, 5], [3, 5, 2], [3, 6, 7], [3, 7, 8], [3, 8, 5],
+                //     // [4, 0, 5], [4, 1, 3], [4, 2, 0], [4, 3, 3], [4, 4, 4], [4, 5, 2], [4, 6, 3], [4, 7, 5], [4, 8, 1],
+                //     // [5, 0, 5], [5, 1, 1], [5, 2, 0], [5, 3, 0], [5, 4, 5], [5, 5, 5], [5, 6, 7], [5, 7, 8], [5, 8, 3],
+                // ];
                 const title = [];
                 const singleAxis = [];
                 const series = [];
-                days.forEach(function (day, idx) {
-                    title.push({
-                        textBaseline: 'middle',
-                        top: ((idx + 0.5) * 90) / days.length + '%',
-                        text: day,
-                        textStyle: {
-                            fontSize: 12,
-                        },
-                    });
-                    singleAxis.push({
-                        left: 70,
-                        type: 'category',
-                        boundaryGap: false,
-                        data: hours,
-                        top: (idx * 90) / days.length + 5 + '%',
-                        height: 90 / days.length - 10 + '%'
-                    });
-                    series.push({
-                        singleAxisIndex: idx,
-                        coordinateSystem: 'singleAxis',
-                        type: 'scatter',
-                        data: [],
-                        symbolSize: function (dataItem) {
-                            return dataItem[1];
-                        }
-                    });
-                });
-                data.forEach(function (dataItem) {
-                    series[dataItem[0]].data.push([dataItem[1], dataItem[2]]);
-                });
-                this.option.title = title
-                this.option.singleAxis = singleAxis
-                this.option.series = series
+                // days.forEach(function (day, idx) {
+                //     title.push({
+                //         textBaseline: 'middle',
+                //         top: ((idx + 0.5) * 90) / days.length + '%',
+                //         text: day,
+                //         textStyle: {
+                //             fontSize: 12,
+                //         },
+                //     });
+                //     singleAxis.push({
+                //         left: 70,
+                //         type: 'category',
+                //         boundaryGap: false,
+                //         data: hours,
+                //         top: (idx * 90) / days.length + 5 + '%',
+                //         height: 90 / days.length - 10 + '%'
+                //     });
+                //     series.push({
+                //         singleAxisIndex: idx,
+                //         coordinateSystem: 'singleAxis',
+                //         type: 'scatter',
+                //         data: [],
+                //         symbolSize: function (dataItem) {
+                //             return dataItem[1] * 3;
+                //         }
+                //     });
+                // });
+                // data.forEach(function (dataItem) {
+                //     series[dataItem[0]].data.push([dataItem[1], dataItem[2]]);
+                // });
+                this.option.xAxis.data = hours
+                this.option.yAxis.data = days
+                this.option.series[0].data = data.map(function (item) {
+                    return [item[1], item[0], item[2]];
+                })
+                // this.option.title = title
+                // this.option.singleAxis = singleAxis
+                // this.option.series = series
                 // 初始化雷达图
                 this.chartObj = chartObj;
                 this.chartObj.setOption(this.option);
             });
         },
         setJson(array) {
-            this.setChart(this.ooption);
             if (array != undefined && array.length > 0) {
                 this.ooption = {
                     hours: [],
@@ -234,40 +197,44 @@ export default {
                     const title = [];
                     const singleAxis = [];
                     const series = [];
-                    days.forEach(function (day, idx) {
-                        title.push({
-                            textBaseline: 'middle',
-                            top: ((idx + 0.5) * 90) / days.length + '%',
-                            text: day,
-                            textStyle: {
-                                fontSize: 12,
-                            },
-                        });
-                        singleAxis.push({
-                            left: 70,
-                            type: 'category',
-                            boundaryGap: false,
-                            data: hours,
-                            top: (idx * 90) / days.length + 5 + '%',
-                            height: 90 / days.length - 10 + '%'
-                        });
-                        series.push({
-                            singleAxisIndex: idx,
-                            coordinateSystem: 'singleAxis',
-                            type: 'scatter',
-                            data: [],
-                            symbolSize: function (dataItem) {
-                                return dataItem[1] * 3;
-                            }
-                        });
-                    });
-                    data.forEach(function (dataItem) {
-                        series[dataItem[0]].data.push([dataItem[1], dataItem[2]]);
-                    });
-
-                    this.option.title = title
-                    this.option.singleAxis = singleAxis
-                    this.option.series = series
+                    // days.forEach(function (day, idx) {
+                    //     title.push({
+                    //         textBaseline: 'middle',
+                    //         top: ((idx + 0.5) * 90) / days.length + '%',
+                    //         text: day,
+                    //         textStyle: {
+                    //             fontSize: 12,
+                    //         },
+                    //     });
+                    //     singleAxis.push({
+                    //         left: 70,
+                    //         type: 'category',
+                    //         boundaryGap: false,
+                    //         data: hours,
+                    //         top: (idx * 90) / days.length + 5 + '%',
+                    //         height: 90 / days.length - 10 + '%'
+                    //     });
+                    //     series.push({
+                    //         singleAxisIndex: idx,
+                    //         coordinateSystem: 'singleAxis',
+                    //         type: 'scatter',
+                    //         data: [],
+                    //         symbolSize: function (dataItem) {
+                    //             return dataItem[1] * 3;
+                    //         }
+                    //     });
+                    // });
+                    // data.forEach(function (dataItem) {
+                    //     series[dataItem[0]].data.push([dataItem[1], dataItem[2]]);
+                    // });
+                    this.option.xAxis.data = hours
+                    this.option.yAxis.data = days
+                    this.option.series[0].data = data.map(function (item) {
+                        return [item[1], item[0], item[2]];
+                    })
+                    // this.option.title = title
+                    // this.option.singleAxis = singleAxis
+                    // this.option.series = series
                     this.chartObj.setOption(this.option);
                 }
             }
@@ -290,7 +257,6 @@ export default {
         // this.courseArray = this.courseArray.filter(item => {
         //     return ['一年级','二年级','三年级','四年级','五年级','六年级','七年级'].indexOf(item.name) !== -1
         // })
-
         this.setJson(this.courseArray)
         var _this = this;
         window.addEventListener("resize", () => {
@@ -312,6 +278,7 @@ export default {
     padding: 0;
     width: 95%;
     background: #fff;
+    overflow: auto;
 }
 </style>
-  
+  

+ 107 - 62
src/components/pages/dataBoardNew/project/chartList/courseAna.vue

@@ -1,80 +1,125 @@
 <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 style="width: 100%; height: 100%">
+          <div id="charts_canvas" class="echart" style="width: 100%; height: 100%; "></div>
+      </div>
   </div>
 </template>
 
 <script>
 export default {
-  data() {
-    return {
-      chartObj: null,
-      ooption: {
-        data: [],
+  props: {
+      courseNumberArray: {
+          type: Array,
       },
-      option: {
-        tooltip: {
-          trigger: "item",
-        },
-        series: [
-          {
-            type: "pie",
-            radius: '50%',
-            avoidLabelOverlap: true,
-            emphasis: {
-              label: {
-                show: true,
-                fontSize: 16,
-                fontWeight: "bold",
+  },
+  data() {
+      return {
+          chartObj: null,
+          ooption: {
+              data: [],
+          },
+          option: {
+              // title: {
+              //     text: '课程数量',
+              //     textStyle:{
+              //         fontSize: 12,
+              //     },
+              //     padding: [5, 0, 0, 10]
+              // },
+              tooltip: {
+                  trigger: 'item'
               },
-            },
-            data: [
-              { value: 100, name: "一年级" },
-              { value: 150, name: "二年级" },
-              { value: 223, name: "三年级" },
-              { value: 216, name: "四年级" },
-              { value: 130, name: "五年级" },
-              { value: 208, name: "六年级" },
-            ],
+              series: [
+                  {
+                      avoidLabelOverlap: true,  //是否启用防止标签重叠策略
+                      labelLine: { // 设置指示线的长度
+                          length: 8,
+                          length2: 5
+                      },
+                      label: {
+                          fontSize: 12,
+                          position:'outer',
+                          // alignTo:'labelLine'
+                      },
+                      labelLayout: {
+                          hideOverlap: false
+                      },
+                      type: 'pie',
+                      // radius: ['35%', '70%'],
+                      emphasis: {
+                          label: {
+                              show: true,
+                              fontSize: 13,
+                              fontWeight: 'bold'
+                          }
+                      },
+                      data: [
+                          // { value: 1048, name: '一年级' },
+                          // { value: 735, name: '二年级' },
+                          // { value: 580, name: '三年级' },
+                          // { value: 484, name: '四年级' },
+                          // { value: 484, name: '五年级' },
+                          // { value: 300, name: '六年级' }
+                      ]
+                  }
+              ]
           },
-        ],
-      },
-    };
+      };
   },
   methods: {
-    setChart() {
-      // 雷达图显示的标签
-      let newPromise = new Promise((resolve) => {
-        resolve();
-      });
-      //然后异步执行echarts的初始化函数
-      newPromise.then(() => {
-        const chartObj = this.$echarts.init(
-          //劳动课程
-          this.$el.querySelector("#charts_canvas")
-        );
-        // 初始化雷达图
-        this.chartObj = chartObj;
-        this.chartObj.setOption(this.option);
-      });
-    },
+      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 = this.ooption.data.filter(item => item.value !== 0);
+
+              // 初始化雷达图
+              this.chartObj = chartObj;
+              this.chartObj.setOption(this.option);
+          });
+      },
+      setArray(array) {
+          this.ooption = {
+              data: [],
+          }
+          for (var i = 0; i < array.length; i++) {
+              this.ooption.data.push({ value: array[i].course, name: array[i].name })
+          }
+          if (!this.chartObj) {
+              this.setChart(this.ooption);
+          } else {
+              this.option.series[0].data = this.ooption.data;
+              this.chartObj.setOption(this.option);
+          }
+          this.$forceUpdate();
+      },
   },
   watch: {
+      courseNumberArray: {
+          immediate: true,
+          deep: true,
+          handler(newValue, oldValue) {
+              this.setArray(newValue)
+              this.$forceUpdate();
+          },
+      },
   },
   mounted() {
-    this.setChart();
-    var _this = this;
-    window.addEventListener("resize", () => {
-      if (_this.chartObj) {
-        _this.chartObj.resize();
-      }
-    });
+      this.setArray(this.courseNumberArray)
+      var _this = this;
+      window.addEventListener("resize", () => {
+          if (_this.chartObj) {
+              _this.chartObj.resize();
+          }
+      });
   },
 };
 </script>
@@ -92,4 +137,4 @@ export default {
   width: 95%;
   background: #fff;
 }
-</style>
+</style>

+ 115 - 15
src/components/pages/dataBoardNew/project/index.vue

@@ -17,14 +17,16 @@
             </div>
             <div class="info blueBG">
               <span>本月新增项目环比</span>
-              <span v-if="loginCountMonthArray.length">{{ (loginCountMonthArray[loginCountMonthArray.length - 1].course) > 0 ? (((loginCountMonthArray[loginCountMonthArray.length - 1].course) / allCourse) * 100).toFixed(0) + '%' : 0 }}</span>
+              <span v-if="loginCountMonthArray.length">{{ (loginCountMonthArray[loginCountMonthArray.length - 1].course) >
+                0 ? (((loginCountMonthArray[loginCountMonthArray.length - 1].course) / allCourse) * 100).toFixed(0) + '%'
+                : 0 }}</span>
               <!-- <span v-if="loginCountMonthArray.length">{{
                 loginCountMonthArray[loginCountMonthArray.length - 1].course -
                 loginCountMonthArray[loginCountMonthArray.length - 2].course < 0 ? 0 : (
                   (loginCountMonthArray[loginCountMonthArray.length - 1].course -
                     loginCountMonthArray[loginCountMonthArray.length - 2].course) / (allCourse -
                       loginCountMonthArray[loginCountMonthArray.length - 1].course) * 100).toFixed(0) + "%" }}</span> -->
-                  <span v-else>0</span>
+              <span v-else>0</span>
             </div>
             <div class="info blueBG">
               <span>模板项目总数</span>
@@ -44,10 +46,10 @@
       </div>
       <div class="bottom">
         <div class="titleBox">
-          <div class="title" :class="{ isClick: skType == 0 }" @click="skType = 0"
+          <!-- <div class="title" :class="{ isClick: skType == 0 }" @click="skType = 0"
             style="cursor: pointer; padding: 0 0 5px 0">
             项目时长
-          </div>
+          </div> -->
           <div class="title" :class="{ isClick: skType == 1 }" @click="skType = 1"
             style="cursor: pointer; padding: 0 0 5px 0">
             作业数量
@@ -120,7 +122,7 @@
           </div>
         </div>
         <div class="dataBox">
-          <CateRank v-if="courseType == 0" style="height: calc(100%)"></CateRank>
+          <CateRank v-if="courseType == 0" style="height: calc(100%)" :courseArray="courseArray"></CateRank>
           <CourseNum v-if="courseType == 1" style="height: calc(100%)" :weekCourse2="weekCourse"></CourseNum>
         </div>
       </div>
@@ -213,11 +215,10 @@
               工具使用
             </div>
           </div>
-          <!-- <el-select v-model="cType4" class="selectBox" style="width: 110px" v-if="toolType == 0">
-            <el-option label="按年级" value="按年级"></el-option>
-            <el-option label="按学科" value="按学科"></el-option>
-            <el-option label="按主题" value="按主题"></el-option>
-          </el-select> -->
+          <el-select v-model="cType4" class="selectBox" style="width: 110px" v-if="toolType == 0 && courseNumberArray.length"  @change="typeChange">
+            <el-option label="赛道" value="box"></el-option>
+            <el-option label="主题" value="theme"></el-option>
+          </el-select>
           <!-- <div v-if="toolType == 1" style="
               display: flex;
               flex-direction: row;
@@ -237,7 +238,7 @@
           </div> -->
         </div>
         <div class="dataBox">
-          <CourseAna style="height: calc(100% - 40px)" v-if="toolType == 0"></CourseAna>
+          <CourseAna style="height: calc(100% - 40px)" v-if="toolType == 0 && courseNumberArray.length" :courseNumberArray="courseNumberArray"></CourseAna>
           <ToolChart style="height: calc(100% - 40px)" v-if="toolType == 1" :toolArray="toolList"></ToolChart>
         </div>
       </div>
@@ -310,7 +311,7 @@ export default {
       cType1: "全部年级",
       cType2: "全部学科",
       cType3: "全部主题",
-      cType4: "按年级",
+      cType4: "box",
       cType5: "全部学科",
       cType6: "全部年级",
       cType7: "全部课程",
@@ -318,7 +319,7 @@ export default {
       cType9: "全部学科",
       toolType: 0,
       tType: 0,
-      skType: 0,
+      skType:  1,
       courseType: 0,
       sType: 0,
       oType: false,
@@ -335,6 +336,10 @@ export default {
       personList: [],
       weekCourse: [],
       tsArray: {},
+      gradeCourseList:[],
+      subjectCourseList:[],
+      courseNumberArray:[],
+      courseArray: []
     };
   },
   mounted() {
@@ -409,8 +414,8 @@ export default {
         .post(this.$store.state.api + "selectDataBoardStudentCourseNew", params)
         .then((res) => {
           this.isLoading = false;
-          let _grade = res.data[0]; //赛道
-          let _subject = res.data[1]; //主题
+          let _grade = JSON.parse(JSON.stringify(res.data[0])); //赛道
+          let _subject = JSON.parse(JSON.stringify(res.data[1])); //主题
           this.allCourse = res.data[2][0].count; //课程总数
           let _timeCourse = res.data[3]; //查询半年内全部课程
           this.courseTemplate = res.data[4][0].count; //查询模板课程总数
@@ -654,6 +659,93 @@ export default {
           this.personList = personList;
           this.weekCourse = weekCourse;
           this.tsArray = _tsArray
+
+          let _course = res.data[9]
+          let _gradeCourseList = []
+          let _subjectCourseList = []
+
+          for (var i = 0; i < _grade.length; i++) {
+            _gradeCourseList.push({
+              name: _grade[i].name,
+              typeid: _grade[i].id,
+              course: 0,
+              array: []
+            })
+            for (var z = 0; z < _course.length; z++) {
+              if (_course[z].typeid == _grade[i].id) {
+                _gradeCourseList[i].course++
+                _gradeCourseList[i].array.push(_course[z].courseid)
+              }
+            }
+          }
+
+          for (var i = 0; i < _subject.length; i++) {
+            _subjectCourseList.push({
+              name: _subject[i].name,
+              typeid: _subject[i].id,
+              course: 0,
+              array: []
+            })
+            for (var z = 0; z < _course.length; z++) {
+              if (_course[z].typeid == _subject[i].id) {
+                _subjectCourseList[i].course++
+                _subjectCourseList[i].array.push(_course[z].courseid)
+              }
+            }
+          }
+          this.gradeCourseList = _gradeCourseList
+          this.subjectCourseList = _subjectCourseList
+          this.typeChange()
+
+
+          let _courseArray = []
+          let _gradeCourse = 0 //各年级上传课程
+          let _subjectCourse = 0 //各学科上传课程
+          _subject.push({ name: '其他' })
+
+          for (var i = 0; i < _grade.length; i++) {
+            _courseArray.push({
+              name: _grade[i].name,
+              id: _grade[i].id,
+              courseid: [],
+              subject: [],
+            })
+            for (var z = 0; z < _course.length; z++) {
+              if (_course[z].typeid == _grade[i].id) {
+                _gradeCourse++
+                if (_courseArray[i].courseid.indexOf(_course[z].courseid) === -1) {
+                  _courseArray[i].courseid.push(_course[z].courseid)
+                }
+              }
+
+            }
+            for (var j = 0; j < _subject.length; j++) {
+              _courseArray[i].subject.push({
+                name: _subject[j].name,
+                id: _subject[j].id,
+                course: 0
+              })
+              for (var z = 0; z < _course.length; z++) {
+                if (_course[z].typeid == _subject[j].id && _courseArray[i].courseid.indexOf(_course[z].courseid) !== -1) {
+                  _courseArray[i].subject[j].course++
+                }
+              }
+            }
+            let sum = 0
+            for (var j = 0; j < _courseArray[i].subject.length - 1; j++) {
+              sum += _courseArray[i].subject[j].course
+            }
+            _courseArray[i].subject[_courseArray[i].subject.length - 1].course = (_courseArray[i].courseid.length - sum) < 0 ? 0 : _courseArray[i].courseid.length - sum
+          }
+          for (var j = 0; j < _subject.length; j++) {
+            for (var z = 0; z < _course.length; z++) {
+              if (_course[z].typeid == _subject[j].id) {
+                _subjectCourse++
+              }
+            }
+          }
+
+          this.courseArray = _courseArray
           this.$forceUpdate();
         })
         .catch((err) => {
@@ -661,6 +753,14 @@ export default {
           console.error(err);
         });
     },
+    typeChange() { 
+      if (this.cType4 === 'box') {
+        this.courseNumberArray = this.gradeCourseList
+      } else if (this.cType4 === 'theme') {
+        this.courseNumberArray = this.subjectCourseList
+      }
+      this.$forceUpdate();
+    },
   },
 };
 </script>

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

@@ -41,53 +41,53 @@ export default {
         series: [{
           keys: ['from', 'to', 'weight'],
           data: [
-            ['Brazil', 'Portugal', 5],
-            ['Brazil', 'France', 1],
-            ['Brazil', 'Spain', 1],
-            ['Brazil', 'England', 1],
-            ['Canada', 'Portugal', 1],
-            ['Canada', 'France', 5],
-            ['Canada', 'England', 1],
-            ['Mexico', 'Portugal', 1],
-            ['Mexico', 'France', 1],
-            ['Mexico', 'Spain', 5],
-            ['Mexico', 'England', 1],
-            ['USA', 'Portugal', 1],
-            ['USA', 'France', 1],
-            ['USA', 'Spain', 1],
-            ['USA', 'England', 5],
-            ['Portugal', 'Angola', 2],
-            ['Portugal', 'Senegal', 1],
-            ['Portugal', 'Morocco', 1],
-            ['Portugal', 'South Africa', 3],
-            ['France', 'Angola', 1],
-            ['France', 'Senegal', 3],
-            ['France', 'Mali', 3],
-            ['France', 'Morocco', 3],
-            ['France', 'South Africa', 1],
-            ['Spain', 'Senegal', 1],
-            ['Spain', 'Morocco', 3],
-            ['Spain', 'South Africa', 1],
-            ['England', 'Angola', 1],
-            ['England', 'Senegal', 1],
-            ['England', 'Morocco', 2],
-            ['England', 'South Africa', 7],
-            ['South Africa', 'China', 5],
-            ['South Africa', 'India', 1],
-            ['South Africa', 'Japan', 3],
-            ['Angola', 'China', 5],
-            ['Angola', 'India', 1],
-            ['Angola', 'Japan', 3],
-            ['Senegal', 'China', 5],
-            ['Senegal', 'India', 1],
-            ['Senegal', 'Japan', 3],
-            ['Mali', 'China', 5],
-            ['Mali', 'India', 1],
-            ['Mali', 'Japan', 3],
-            ['Morocco', 'China', 5],
-            ['Morocco', 'India', 1],
-            ['Morocco', 'Japan', 3],
-            ['Japan', 'Brazil', 1]
+            // ['Brazil', 'Portugal', 5],
+            // ['Brazil', 'France', 1],
+            // ['Brazil', 'Spain', 1],
+            // ['Brazil', 'England', 1],
+            // ['Canada', 'Portugal', 1],
+            // ['Canada', 'France', 5],
+            // ['Canada', 'England', 1],
+            // ['Mexico', 'Portugal', 1],
+            // ['Mexico', 'France', 1],
+            // ['Mexico', 'Spain', 5],
+            // ['Mexico', 'England', 1],
+            // ['USA', 'Portugal', 1],
+            // ['USA', 'France', 1],
+            // ['USA', 'Spain', 1],
+            // ['USA', 'England', 5],
+            // ['Portugal', 'Angola', 2],
+            // ['Portugal', 'Senegal', 1],
+            // ['Portugal', 'Morocco', 1],
+            // ['Portugal', 'South Africa', 3],
+            // ['France', 'Angola', 1],
+            // ['France', 'Senegal', 3],
+            // ['France', 'Mali', 3],
+            // ['France', 'Morocco', 3],
+            // ['France', 'South Africa', 1],
+            // ['Spain', 'Senegal', 1],
+            // ['Spain', 'Morocco', 3],
+            // ['Spain', 'South Africa', 1],
+            // ['England', 'Angola', 1],
+            // ['England', 'Senegal', 1],
+            // ['England', 'Morocco', 2],
+            // ['England', 'South Africa', 7],
+            // ['South Africa', 'China', 5],
+            // ['South Africa', 'India', 1],
+            // ['South Africa', 'Japan', 3],
+            // ['Angola', 'China', 5],
+            // ['Angola', 'India', 1],
+            // ['Angola', 'Japan', 3],
+            // ['Senegal', 'China', 5],
+            // ['Senegal', 'India', 1],
+            // ['Senegal', 'Japan', 3],
+            // ['Mali', 'China', 5],
+            // ['Mali', 'India', 1],
+            // ['Mali', 'Japan', 3],
+            // ['Morocco', 'China', 5],
+            // ['Morocco', 'India', 1],
+            // ['Morocco', 'Japan', 3],
+            // ['Japan', 'Brazil', 1]
           ],
           type: 'dependencywheel',
           name: 'Dependency wheel series',
@@ -121,7 +121,7 @@ export default {
       });
     },
     setArray(array) {
-      // this.option.series[0].data = array
+      this.option.series[0].data = array
 
     }
   },

+ 3 - 0
src/components/pages/synergyCourse/addCourse.vue

@@ -4982,7 +4982,10 @@ export default {
         });
     },
     updateWork(type) {
+<<<<<<< HEAD
       let that =this;
+=======
+>>>>>>> 358ea8102b1d43cdd7d2a6e8a9713334e98d629d
       let cPan = 1;
       for (var i = 0; i < this.unitJson.length; i++) {
         for (

+ 4 - 0
src/components/pages/synergyCourse/course.vue

@@ -175,7 +175,11 @@
             </div>
             <div class="three_bottom">
               <!-- v-if="role == '1'" @click="get(item)"-->
+<<<<<<< HEAD
               <div @click="open(item.courseId, item.userid)">打开</div>
+=======
+              <div @click="open(item.courseId, item.userid)">授课</div>
+>>>>>>> 358ea8102b1d43cdd7d2a6e8a9713334e98d629d
               <!-- <div @click="jump(item.courseId)" v-else>评课</div> -->
               <!-- <div v-if="((item.userid == userid) ||
                 (item.course_teacher &&

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است