Sfoglia il codice sorgente

Merge branch 'beta'

lsc 10 mesi fa
parent
commit
52360a6d9f

+ 1 - 1
dist/index.html

@@ -32,7 +32,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.495892e4baa50d732f4946780f603a10.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.571c38d63f24b1ae9e16.js></script><script type=text/javascript src=./static/js/vendor.bba3ed5aca95350eeef8.js></script><script type=text/javascript src=./static/js/app.3e069b7251da762b2909.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.22cd54163a6e49b4b9c808dedf5eb0f9.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.571c38d63f24b1ae9e16.js></script><script type=text/javascript src=./static/js/vendor.bba3ed5aca95350eeef8.js></script><script type=text/javascript src=./static/js/app.91179cbbc0a9a999346e.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.22cd54163a6e49b4b9c808dedf5eb0f9.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.22cd54163a6e49b4b9c808dedf5eb0f9.css.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.495892e4baa50d732f4946780f603a10.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.91179cbbc0a9a999346e.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.91179cbbc0a9a999346e.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/manifest.571c38d63f24b1ae9e16.js.map


+ 10 - 9
src/components/pages/aiAddCourse/addCourse.vue

@@ -1967,9 +1967,9 @@
                       @click="openAiDialog(2, 'aiOutline2')" v-if="templateid == '61c628b9-3d96-11ef-b873-005056b86db5'">生成大纲</button>
                    </el-tooltip>
                     <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @click="openAiDialog2(2, 'aiOutline'), addCourseBehavior('courseBehavior', '点击课程大纲-重新生成课程大纲按钮')" v-if="panOutline() > 0 && templateid != '61c628b9-3d96-11ef-b873-005056b86db5' && istemplate != 1">重新生成大纲</button>
+                      @click="openAiDialog2(2, 'aiOutline'), addCourseBehavior('courseBehavior', '点击课程大纲-重新生成课程大纲按钮')" v-if="templateid != '61c628b9-3d96-11ef-b873-005056b86db5' && istemplate != 1">{{panOutline() > 0 ? '重新生成大纲' : '生成大纲'}}</button>
                     <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @click="openAiDialog2(2, 'aiOutline2'), addCourseBehavior('courseBehavior', '点击课程大纲-重新生成课程大纲按钮')" v-if="panOutline() > 0 && (templateid == '61c628b9-3d96-11ef-b873-005056b86db5') && istemplate != 1">重新生成大纲</button>
+                      @click="openAiDialog2(2, 'aiOutline2'), addCourseBehavior('courseBehavior', '点击课程大纲-重新生成课程大纲按钮')" v-if="(templateid == '61c628b9-3d96-11ef-b873-005056b86db5') && istemplate != 1">{{panOutline() > 0 ? '重新生成大纲' : '生成大纲'}}</button>
                   <!-- <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;">AI优化</button> -->
                 </div>
                 <div class="task_outline">
@@ -2137,7 +2137,7 @@
                       @click="openAiDialog(2, 'aiTeacher2')">生成教案</button>
                    </el-tooltip>
                     <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
-                      @click="openAiDialog2(2, 'aiTeacher2'), addCourseBehavior('courseBehavior', `点击教案-重新生成教案按钮`)" v-if="panTeacher() > 0 && istemplate != 1">重新生成教案</button>
+                      @click="openAiDialog2(2, 'aiTeacher2'), addCourseBehavior('courseBehavior', `点击教案-重新生成教案按钮`)" v-if="istemplate != 1">重新生成教案</button>
                   <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom" v-if="panTeacher() == 0 && istemplate == 1 && (templateid == '4480d65a-1e48-11ef-bee5-005056b86db5' || templateid == 'cf5722a4-401b-11ef-b873-005056b86dc3')">
                       <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
                       @contextmenu.prevent="openAiDialog(1, 'aiTeacher3')"
@@ -7871,7 +7871,7 @@ export default {
       dialogTemplateArray: [ 'cf5722a4-401b-11ef-b873-005056b86cd2', '68629cfb-e719-48e9-a03d-56f189fb9cb0' ],
       taskCancelToken1: [],
       taskCancelToken2: [],
-      isDisplay: true,
+      isDisplay: false,
       isDialog: 0,
       recordVideoText: "",
       recordAudioUrl: "",
@@ -9816,7 +9816,7 @@ ${_this.unitJson[0].chapterInfo[0].taskJson[index].taskDetail3.replaceAll('#',''
       // debugger
       const dname = `${a}.docx`;
       // 创建文件流
-
+      // const file = new File([blob], dname, { type: 'application/msword' });
       let file = new File([blob], dname, { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
       // let params = convertApi.createParams()
       // params.add('file', file)
@@ -18706,7 +18706,7 @@ ${msg3}
           // this.taskGLoading[this.aiCallBack[0]][2] = true
           this.aiGetG321(message1, this.aiCallBack[0], () => {
             // this.aiGetG322(message2, this.aiCallBack[0])
-            this.aiCallBack[0] ? this.aiCallBack[0]() : ''
+            // this.aiCallBack[0] ? this.aiCallBack[0]() : ''
           })
           // this.aiGetG323(message3, this.aiCallBack[0])
         }
@@ -19473,8 +19473,9 @@ ${this.courseText && this.aiCallBack[0] == 2 ? '注意,优化原有的<参考
                     }
 
                 } catch (error) {
-                  _this.$message.error('返回json格式不正确')
+                  _this.$message.error('返回json格式不正确,',data.message)
                   // _this.aiGet2(messages, callback);
+                  _this.isOutlineCancelToken = null
                   console.log("error_________________" + error);
                 }
                 console.log("error_________________" + error);
@@ -21020,7 +21021,7 @@ ${this.courseText && this.aiCallBack[0] == 2 ? '注意,优化原有的<参考
             if(!_task.toolChoose){
               console.log("error_________________JSON不对重新生成");
               _this.$message.error('哎呀,网络波动了...小可正在为您重新生成中...')
-              _this.aiGet322(messages, index)
+              _this.aiGetG322(messages, index)
               return;
             }
             _this.unitJson[0].chapterInfo[0].taskJson[index].toolChoose = []
@@ -21160,7 +21161,7 @@ ${this.courseText && this.aiCallBack[0] == 2 ? '注意,优化原有的<参考
             if(!_task.elist){
               console.log("error_________________JSON不对重新生成");
               _this.$message.error('哎呀,网络波动了...小可正在为您重新生成中...')
-              _this.aiGet322(messages, index)
+              _this.aiGetG322(messages, index)
               return;
             }
             _task.elist = _task.elist.filter(el=>{

+ 3 - 3
src/components/pages/aiAddCourse/jsmind2.vue

@@ -268,7 +268,7 @@ export default {
         for(var j = 0;j<_eJsonz.length;j++){
           let item2 = _e3[_eJsonz[j]]
           data.data.push({
-            id: _eJsonz[j],
+            id: `${_eJsonz[j]}-${i}-${j}`,
             parentid: _JsonName[i],
             topic: _eJsonz[j],
           })
@@ -279,8 +279,8 @@ export default {
           for(var zz = 0;zz<_e4.length;zz++){
             data.data.push({
               // id: `${_eJsonz[j]}-${_eJsonz2[z]}-${zz}`,
-              id: `${_eJsonz[j]}-${zz}`,
-              parentid: _eJsonz[j],
+              id: `${_eJsonz[j]}-${i}-${j}-${zz}`,
+              parentid: `${_eJsonz[j]}-${i}-${j}`,
               topic: `工具${_e4[zz] + 1}`,
             })
           }

+ 33 - 6
src/components/pages/aiAddCourse/record.vue

@@ -309,7 +309,8 @@ export default {
       iiframe.contentWindow.testdoContinuousPronunciationAssessment();
       // 录音开始
       let flag = true;
-      iiframe.contentWindow.onRecognizedResult = e => {
+      iiframe.contentWindow.onRecognizing = (e, recognitionEventArgs) => {
+        var result = recognitionEventArgs.result;
         // let e = {
         // 	privText:"测试测试"
         // }
@@ -319,19 +320,30 @@ export default {
           flag = false;
           this.uploadFileLoading = false;
         }
-        let privText = e.privText;
+        // let privText = e.privText;
+        let privText = result.text;
         if (privText == undefined || privText == "undefined") return;
         console.log("👇转译对象👇");
         console.log(e);
         console.log("👇转译结果👇");
         console.log(privText);
         this.recordedForm.startTime = this.recordedForm.timeDuration + 1;
-        this.videoText += privText;
+        // this.videoText += privText;
+        this.videoText = this.videoText.replace(/(^|[\r\n]+).*?\[\.\.\.\][\r\n]+/, '$1') + `${result.text} [...]\r\n`;
+
         // 将textarea滚动到最底部
         this.$nextTick(() => {
           this.$refs.videoTextTextarea.scrollTop = this.$refs.videoTextTextarea.scrollHeight;
         });
       };
+
+      iiframe.contentWindow.onRecognizedResult = result =>{
+        this.$refs.videoTextTextarea.scrollTop = this.$refs.videoTextTextarea.scrollHeight;
+        this.videoText = this.videoText.replace(/(^|[\r\n]+).*?\[\.\.\.\][\r\n]+$/, '$1');
+        if (result.text) {
+          this.videoText += `${result.text}\r\n`;
+        }
+      }
     },
     async onPauseRecordWithMicrosoft() {
       let _resolve;
@@ -348,6 +360,7 @@ export default {
         console.log("停止录音", e);
         this.recordedForm.audioBlob.push(e.preaudio);
         iiframe.contentWindow.onSessionStopped = null;
+        iiframe.contentWindow.onRecognizing = null;
         iiframe.contentWindow.onRecognizedResult = null;
         _resolve();
       };
@@ -439,6 +452,7 @@ export default {
           });
           this.uploadFile(file, { changeText: false, flag: true });
           iiframe.contentWindow.onSessionStopped = null;
+          iiframe.contentWindow.onRecognizing = null;
           iiframe.contentWindow.onRecognizedResult = null;
         };
       } else if (this.recordedForm.status == 2) {
@@ -535,26 +549,39 @@ export default {
 			// 录音开始
       let flag = true;
       // 录音开始
-      iiframe.contentWindow.onRecognizedResult = e => {
+      iiframe.contentWindow.onRecognizing = (e, recognitionEventArgs) => {
+        var result = recognitionEventArgs.result;
+    
         this.recordedForm.endTime = this.recordedForm.timeDuration;
+
         if (flag) {
           this.controlsStatus = 1;
           flag = false;
           this.uploadFileLoading = false;
         }
-        let privText = e.privText;
+        // let privText = e.privText;
+        let privText = result.text;
         if (privText == undefined || privText == "undefined") return;
         console.log("👇转译对象👇");
         console.log(e);
         console.log("👇转译结果👇");
         console.log(privText);
         this.recordedForm.startTime = this.recordedForm.timeDuration + 1;
-        this.videoText += privText;
+        // this.videoText += privText;
+        this.videoText = this.videoText.replace(/(^|[\r\n]+).*?\[\.\.\.\][\r\n]+/, '$1') + `${result.text} [...]\r\n`;
         // 将textarea滚动到最底部
         this.$nextTick(() => {
           this.$refs.videoTextTextarea.scrollTop = this.$refs.videoTextTextarea.scrollHeight;
         });
       };
+      
+      iiframe.contentWindow.onRecognizedResult = result =>{
+        this.$refs.videoTextTextarea.scrollTop = this.$refs.videoTextTextarea.scrollHeight;
+        this.videoText = this.videoText.replace(/(^|[\r\n]+).*?\[\.\.\.\][\r\n]+$/, '$1');
+        if (result.text) {
+          this.videoText += `${result.text}\r\n`;
+        }
+      }
     }
   }
 };

+ 84 - 55
src/components/pages/components/exportDataDialog.vue

@@ -1031,16 +1031,16 @@ export default {
 
       // 工具类大分类
       hd: [10, 65],
-      sw: [7, 1, 52, 3, 52],
+      sw: [7, 1, 52, 3,48],
       xz: [49],
       cp: [4, 45, 15, 16, 50, 41, 47],
       pj: [40],
       bc: [18, 21, 23, 24, 32, 57, 63, 71],
       xk: [28, 31, 39, 66, , 68, 69, 70],
       // 师生互动工具list
-      TeaStuInt: [7, 1, 52, 3, 48, 15, 16, 50, 57],
+      TeaStuInt: [ 1, 52, 3, 48, 16],
       // 处理过的分组,师生互动数据
-      TeaStuInt2: [1, 3, 5, 4, 10, 11, 13, 15],
+      // TeaStuInt2: [1, 3, 52, 4, 10, 11, 13, 15],
 
       AiAnalysisCon2Copy: "", //ai数据分析
       AiAnalysisCon2: {
@@ -1156,6 +1156,8 @@ export default {
       this.loading = true;
       this.tableData = this.multipleSelection;
         // 单个下载报告
+      this.claOptions = []
+      
       if (this.tableData.length == 1) {
         // 查看学生有几个班级
         let stuCla = [];
@@ -1172,14 +1174,15 @@ export default {
           });
         });
 
-        if (this.claOptions.length == 1) {
+        if (this.claOptions.length == 1 ) {
           this.claV = this.claOptions[0].value;
         } else if (this.claOptions.length == 0) {
           // 没有班级时
           this.claV = "——";
-        } else {
+        } else if (this.claOptions.length > 1 && !this.claV){
           //有两个及以上班级时
           this.loading = false;
+       
           return this.$message.info("请选择班级");
         }
         // 得到班级数据
@@ -1195,14 +1198,14 @@ export default {
           this.isDown = false;
           setTimeout(() => {
             this.getPdf();
-          }, 1000);
+          }, 2000);
         } else {  //当无ai分析时先进行ai分析
           await this.getAiAnalysisCon3();
           this.loading = false;
           this.isDown = false;
           setTimeout(() => {
             this.getPdf();
-          }, 1000);
+          }, 2000);
         }
 
 
@@ -1246,6 +1249,8 @@ export default {
     // 查看pdf报告
     async lookPage() {
       this.loading = true;
+      this.claOptions = []
+
       // 处理班级,查看学生有几个班级
       let stuCla = [];
       if (this.worksDialogCon.classid) {
@@ -1266,7 +1271,7 @@ export default {
       } else if (this.claOptions.length == 0) {
         // 没有班级时
         this.claV = "——";
-      } else {
+      } else if(this.claOptions.length > 1 && !this.claV ){
         //有两个及以上班级时
         this.loading = false;
         return this.$message.info("请选择班级");
@@ -1650,6 +1655,7 @@ export default {
     getTarget(data) {
       // 素养与分数重组后的数据
       let tar = [];
+      console.log('data',JSON.parse(JSON.stringify(data)));
 
       // 细分出每个任务工具的细则
       data.forEach((e, i) => {
@@ -1659,7 +1665,7 @@ export default {
         });
       });
 
-      // console.log("tar", JSON.parse(JSON.stringify(tar)));
+      console.log("tar", JSON.parse(JSON.stringify(tar)));
       let zjm = [];
       tar.forEach((e, i) => {
         e.forEach(k => {
@@ -1676,7 +1682,7 @@ export default {
         e.tarD = JSON.parse(e.rate);
       });
       // console.log('tar',JSON.parse(JSON.stringify(tar)));
-      // console.log('data4Copy',JSON.parse(JSON.stringify(data4Copy)));
+      console.log('data4Copy',JSON.parse(JSON.stringify(data4Copy)));
 
       tar.forEach((k, ki) => {
         data4Copy.forEach((e, ei) => {
@@ -1722,6 +1728,7 @@ export default {
           }
         });
       });
+      console.log('tarCopy',JSON.parse(JSON.stringify(tarCopy)));
 
       // 将细则的素养全部放到一个数组中
       let tarList = [];
@@ -1737,8 +1744,8 @@ export default {
       // 素养多边形数据
       let polygonData = this.tarArrFn(tarList);
 
-      // console.log("polygonData", JSON.parse(JSON.stringify(polygonData)));
-      // console.log("tarList", JSON.parse(JSON.stringify(tarList)));
+      console.log("polygonData", JSON.parse(JSON.stringify(polygonData)));
+      console.log("tarList", JSON.parse(JSON.stringify(tarList)));
 
       polygonData.forEach(e => {
         e.sco = 0;
@@ -1830,6 +1837,8 @@ export default {
           }
         });
       });
+      console.log("tarListCopy", JSON.parse(JSON.stringify(tarListCopy)));
+
 
       tarListCopy.forEach(e => {
         //素养
@@ -1851,6 +1860,7 @@ export default {
           });
         });
       });
+      console.log("this.treeData", JSON.parse(JSON.stringify(this.treeData)));
 
       this.treeData = {
         id: "0",
@@ -1858,9 +1868,9 @@ export default {
         children: tarListCopy
       };
 
-      setTimeout(() => {
-        this.moreRenderChart();
-      }, 500);
+      // setTimeout(() => {
+      this.moreRenderChart();
+      // }, 100);
     },
 
 
@@ -2562,6 +2572,8 @@ export default {
 
     // ai模式处理数据
     getDataAiMode(data) {
+      console.log('getDataAiMode',data);
+      
       data.forEach((e, eInd) => {
         let toolList = e.chapterInfo[0].taskJson;
         toolList.forEach((i, iInd) => {
@@ -2611,7 +2623,7 @@ export default {
           });
         });
       });
-      // console.log("this.toolData", this.toolData);
+      console.log("this.toolData", this.toolData);
 
       // 环形图占比
       this.toolRatio[0].value = this.toolData[0].length;
@@ -2624,6 +2636,8 @@ export default {
       this.toolRatio = this.toolRatio.filter(e => {
         return e.value != 0;
       });
+      console.log("this.toolRatio", this.toolRatio);
+
       this.renderChart2(); //环形
 
       // console.log("this.toolRatio[0]", this.toolRatio);
@@ -2960,31 +2974,41 @@ export default {
       this.getClaFoldLineDataAi(val);
     },
     getClaFoldLineDataAi(repeatWork) {
-      let repeatWorkCopy = [];
-      let allWorkNum = [];
+      let repeatWorkCopy = []; //作业任务分类容器
+      let allWorkNum = [];   
 
       this.stageList.forEach((e, index) => {
         repeatWorkCopy[index] = [];
         allWorkNum[index] = 0;
       });
-      // 将作业进行阶段分类
+
+      // 将作业进行任务分类
       repeatWork.forEach(e => {
         repeatWorkCopy[e.task].push(e);
       });
 
-      this.toolPercentage.forEach((e, index) => {
-        allWorkNum[index] = e.length * this.data12[0].num;
-      });
-
-      allWorkNum.forEach((e, index) => {
-        if (repeatWorkCopy[index].length) {
-          this.classStageListPer[index] = (
-            repeatWorkCopy[index].length / e
-          ).toFixed(2);
-        } else {
-          this.classStageListPer[index] = 0;
+      repeatWorkCopy.forEach((e,index)=>{
+        if (e.length) {
+          this.classStageListPer[index] = (e.length / (this.data12[0].num * this.toolPercentage[index].length)).toFixed(2);
+        }else{
+          this.classStageListPer[index] = 0
         }
-      });
+      })
+
+
+      // this.toolPercentage.forEach((e, index) => {
+      //   allWorkNum[index] = e.length * this.data12[0].num;
+      // });
+
+      // allWorkNum.forEach((e, index) => {
+      //   if (repeatWorkCopy[index].length) {
+      //     this.classStageListPer[index] = (
+      //       repeatWorkCopy[index].length / e
+      //     ).toFixed(2);
+      //   } else {
+      //     this.classStageListPer[index] = 0;
+      //   }
+      // });
       this.initChart(); // 作业提交率折线图
     },
 
@@ -2996,8 +3020,8 @@ export default {
         e.sco = 0;
         let kop = 0;
 
-        con.forEach(i => {
-          if (!isNaN(Number(i))) {
+        con.forEach((i,k) => {
+          if (k != con.length-1) {
             e.sco += i * 1;
             kop++;
           }
@@ -3023,8 +3047,6 @@ export default {
         repeatWorkCopy[e.task].push(e);
       });
 
-      // console.log("repeatWorkCopy", repeatWorkCopy);
-
       repeatWorkCopy.forEach((e, index) => {
         e.forEach(k => {
           scoList[index] += k.sco * 1;
@@ -3053,8 +3075,8 @@ export default {
         let con = Object.values(JSON.parse(e.rate));
         e.sco = 0;
         let kop = 0;
-        con.forEach(i => {
-          if (!isNaN(Number(i))) {
+        con.forEach((i,k) => {
+          if (k != con.length-1) {
             e.sco += i * 1;
             kop++;
           }
@@ -3079,37 +3101,44 @@ export default {
         repeatWorkCopy[e.task].push(e);
       });
 
+
+      // 获取任务下的可评分工具数量
+      let toolNum = []
+
+      this.toolPercentage.forEach((e,i) => {
+        toolNum[i] = []
+        e.forEach(k=>{
+          if (this.TeaStuInt.indexOf(k) != -1) {
+            toolNum[i].push(k)
+          }
+        })
+      });
+
       repeatWorkCopy.forEach((e, index) => {
         e.forEach(k => {
           scoList[index] += k.sco * 1;
         });
+        // scoList[index] //任务得分
+
         if (scoList[index] == 0) {
           scoList[index] = 0;
         } else {
-          scoList[index] = scoList[index] / e.length;
+        
+          //任务平均分 = 任务得分 / 人数 / 评分
+          scoList[index] = (scoList[index] / this.data12[0].num);
         }
       });
-      // let repeatWorkCopyTwo = []
-
-      // repeatWorkCopy.forEach((e,i)=>{
-      //   repeatWorkCopyTwo[i]= []
-      //   if (e.length) {
-      //     e.forEach(k=>{
-      //       repeatWorkCopyTwo[i].push(k.sco)
-      //     })
-      //   }
-      //   repeatWorkCopyTwo[i]=
-      // })
+    
 
 
-      this.claScoFoldLineData = scoList.map(e => {
+      this.claScoFoldLineData = scoList.map((e,i) => {
         if (e == 0) {
           return 0;
         } else {
-          return (e / this.data12[0].num).toFixed(2);
+          return (e / toolNum[i].length).toFixed(2);
         }
       });
-      this.initChart2(); // 任务成绩
+      this.initChart2(); // 班级任务成绩
     },
 
     // 师生互动数据
@@ -3380,9 +3409,9 @@ export default {
 
       chart.setOption(option);
 
-      window.onresize = () => {
-        jm.resize();
-      };
+      // window.onresize = () => {
+      //   jm.resize();
+      // };
     },
     // 分组工具占比
     initChart3() {

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

@@ -37,8 +37,8 @@
         <el-button
           v-if="checkCourse.state == 5"
           @click="batchExportPdf"
-          :type="multipleSelection.length < 3 ? 'info' : 'primary'"
-          :disabled="multipleSelection.length < 3"
+          :type="multipleSelection.length < 2 ? 'info' : 'primary'"
+          :disabled="multipleSelection.length < 2"
           size="small"
           >批量导出</el-button
         >

+ 3 - 2
src/components/pages/components/lookWork.vue

@@ -563,7 +563,7 @@
                     <!-- 评语 -->
                     <div
                       style="
-                          width: 60%;
+                          width: 40%;
                           display: flex;
                           flex-direction: column;
                           margin-left: 10px;
@@ -648,7 +648,7 @@
                   <!-- 评语 -->
                   <div
                     style="
-                          width: 60%;
+                          width: 40%;
                           display: flex;
                           flex-direction: column;
                           margin-left: 10px;
@@ -1475,6 +1475,7 @@ export default {
 .taskScoConEList {
   justify-content: space-between;
   display: flex;
+  flex: 1;
 }
 .taskScoConTit {
   text-align: left;

+ 13 - 33
src/components/pages/components/report.vue

@@ -29,7 +29,6 @@
         class="r_select"
         v-model="uname"
         placeholder="全部"
-        filterable
       >
         <el-option
           v-for="item in userAarray"
@@ -117,7 +116,7 @@
 
           <div
             v-for="(i, wip) in workList"
-           
+            v-if="(chap.length ? chap.indexOf(wip) != -1 : true)"
             :key="i.id"
             class="stageCon"
           >
@@ -131,10 +130,12 @@
             <div
               v-for="k in i.taskList"
               :key="k.task + 'a'"
+              v-if="isTask( k)"
               
               style="margin-bottom: 15px"
             >
             <!-- v-if="isTask(k.toolEList, userP.userid, k)" -->
+
               <div
                 style="
                     width: 100%;
@@ -1068,21 +1069,14 @@ export default {
   },
   computed: {
     isStage() {
-      return function(val, userP) {
+      return function(val) {
         let isShow = false;
+
         val.forEach(e => {
           e.toolEList.forEach(i => {
-            i.content.forEach(k => {
-              if (k instanceof Array) {
-                if (k[0].userid == userP) {
-                  isShow = true;
-                }
-              } else {
-                if (k.userid == userP) {
-                  isShow = true;
-                }
-              }
-            });
+            if (i.content.length) {
+              isShow = true;
+            }
           });
         });
 
@@ -1090,26 +1084,10 @@ export default {
       };
     },
     isTask() {
-      return function(val, userP, tas) {
+      return function(tas) {
         let isShow = false;
 
-        val.forEach(i => {
-          i.content.forEach(k => {
-            if (k instanceof Array) {
-              if (k[0].userid == userP) {
-                isShow = true;
-              }
-            } else {
-              if (k.userid == userP) {
-                isShow = true;
-              }
-            }
-          });
-        });
         let ap = `${tas.stage}-${tas.task}`;
-        if (!isShow) {
-          return isShow;
-        }
 
         if (this.task.length) {
           let arr = this.task.filter(e => {
@@ -1121,6 +1099,8 @@ export default {
           } else {
             isShow = false;
           }
+        }else{
+          isShow = true;
         }
 
         return isShow;
@@ -1462,10 +1442,10 @@ export default {
   overflow: hidden;
 }
 .worksDiaCon {
-  width: 810pt;
+  width: 780pt;
   margin: auto;
   min-height: 1200px;
-  padding: 60px 8%;
+  padding: 60px 5%;
   box-sizing: border-box;
   background-color: rgb(255, 251, 220);
 }

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

@@ -19,8 +19,8 @@
         >
         <el-button @click="exportData" 
           v-if="DState == 5 && cutTabNum == 0"
-          :type="multipleSelection.length < 3 ? 'info' : 'primary'" 
-          :disabled="multipleSelection.length < 3"
+          :type="multipleSelection.length < 2 ? 'info' : 'primary'" 
+          :disabled="multipleSelection.length < 2"
           size="small"
           >批量导出</el-button
         >

+ 10 - 10
src/components/pages/test/add/edit/index.vue

@@ -150,20 +150,20 @@ export default {
       input.type = "file";
       // input.accept = ".wav";
       // input.accept = "audio/*, .txt, .pdf, .xlsx";
-      input.accept = ".docx,.doc";
+      input.accept = ".docx";
       input.click();
       input.onchange = async () => {
         this.loading = true;
         let file = input.files[0];
-				if(/\.(doc)$/i.test(file.name)){
-					let params = convertApi.createParams()
-          params.add('file', file)
-					let result = await convertApi.convert('doc', 'docx', params)
-          // Get result file URL
-          file = await fetch(result.files[0].Url).then(res => res.blob()).then(blob => {
-            return new File([blob], result.files[0].FileName, { type: 'application/octet-stream' });
-          });
-				}
+				// if(/\.(doc)$/i.test(file.name)){
+				// 	let params = convertApi.createParams()
+        //   params.add('file', file)
+				// 	let result = await convertApi.convert('doc', 'docx', params)
+        //   // Get result file URL
+        //   file = await fetch(result.files[0].Url).then(res => res.blob()).then(blob => {
+        //     return new File([blob], result.files[0].FileName, { type: 'application/octet-stream' });
+        //   });
+				// }
 				console.log("file",file)
         if (!/\.(docx)$/i.test(file.name)) {
           this.loading = false;

File diff suppressed because it is too large
+ 25 - 0
src/components/pages/testAi.vue


+ 9 - 0
src/router/index.js

@@ -138,6 +138,7 @@ import pocAiChat from '@/components/pages/pocAiClassroom/chatArea2'
 import pocDoTask from '@/components/pages/pocAiClassroom/doTask'
 import pocClass from '@/components/pages/pocAiClassroom/pocClass'
 import choseCheckTest from '@/components/pages/test/choseCheck'
+import testAi from '@/components/pages/testAi'
 // 全局修改默认配置,点击空白处不能关闭弹窗
 ElementUI.Dialog.props.closeOnClickModal.default = false
 Vue.use(Router).use(ElementUI)
@@ -1188,5 +1189,13 @@ export default new Router({
 						requireAuth:''//不需要鉴权
 					}
 				},
+                {
+					path:"/testAi",
+					name:"testAi",
+					component:testAi,
+					meta:{
+						requireAuth:''//不需要鉴权
+					}
+				},
     ]
 })

Some files were not shown because too many files changed in this diff