Browse Source

Merge branch 'beta'

lsc 10 months ago
parent
commit
5af8944329

+ 1 - 1
dist/index.html

@@ -32,7 +32,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.8c78e8a360de5844a1a102ce618918f7.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.40eea1b0322d874bd5e9.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.f398745547aa6b312d151b4eeacf6852.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.884f5b51457646503a9d.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.8c78e8a360de5844a1a102ce618918f7.css


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


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


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


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


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


File diff suppressed because it is too large
+ 495 - 85
src/components/pages/aiAddCourse/addCourse.vue


+ 150 - 17
src/components/pages/aiAddCourse/record.vue

@@ -1,5 +1,30 @@
 <template>
   <div class="record_box">
+    <div class="ca-b-o-main2" style="height: 25px;">
+      <div class="select_box" v-if="audioUrlArray.length">
+        <span>音频:</span>
+        <el-select v-model="audioUrl">
+          <el-option v-for="(item, index) in audioUrlArray" :key="index" :label="'音频'+(index+1)" :value="item">
+            <div class="selectBox">
+              <span>{{ '音频'+(index+1) }}</span>
+              <div class="controlsBox">
+                <span class="delSelect" @click.stop="delAudio(index)"></span>
+              </div>
+            </div>
+          </el-option>
+        </el-select>
+      </div>
+      <div class="select_box">
+        <span>语言:</span>
+        <el-select v-model="languageRadio">
+          <el-option v-for="item in languageList"
+            :key="item.label"
+            :label="item.lang"
+            :value="item.label">
+          </el-option>
+        </el-select>
+      </div>
+    </div>
     <div class="ca-b-o-main">
       <div
         class="ca-b-o-m-tape"
@@ -135,7 +160,14 @@ export default {
       uploadFileLoading: false,
       controlsStatus: 0, //0--点击开始录音  1--录音中   2--录音完毕预览  3--文字输��
       audioUrl: this.audioUrl2,
+      audioUrlArray: [],
       languageRadio: 2, //设置选择语言
+      // 设置list
+      languageList: [
+        { label: 2, lang: "普通话" },
+        { label: 3, lang: "粤语" },
+        { label: 13, lang: "英语" }
+      ],
       recordedForm: {
         time: "00:00:00", //时间
         status: 0, //0--未录音  1--正在录音  2--暂停  3--录音结束
@@ -157,17 +189,53 @@ export default {
     videoText(newValue) {
       this.$emit("update:videoText2", newValue);
     },
-    audioUrl(newValue) {
-      this.$emit("update:audioUrl2", newValue);
+    // audioUrl(newValue) {
+    //   this.$emit("update:audioUrl2", newValue);
+    // },
+    audioUrlArray(newValue) {
+      this.$emit("update:audioUrl2", newValue.join(','));
     },
     videoText2(newValue) {
       this.videoText = newValue;
+    },
+    audioUrl2(newVal){
+      if(newVal){
+        this.audioUrlArray = newVal.split(",")
+        if(!this.audioUrl){
+          this.audioUrl = newVal.split(",")[0]
+        }
+        this.controlsStatus = 2
+      }
     }
   },
   mounted() {
     this.videoText = this.videoText2;
   },
   methods: {
+    delAudio(index){
+      
+      this.$confirm("是否确定删掉此音频?", "提醒", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+        .then(() => {
+          if(this.audioUrl == this.audioUrlArray[index] && this.audioUrlArray.length > 1){
+            this.audioUrlArray.splice(index, 1)
+            this.audioUrl = this.audioUrlArray[0]
+          }else {
+            this.audioUrlArray.splice(index, 1)
+          }
+          if(!this.audioUrlArray.length){
+            this.audioUrl = ''
+            this.controlsStatus = 0
+          }
+        })
+        .catch(e => {
+          console.log(e);
+          console.log("不顶替");
+        });
+    },
     updateRecordedTime({ duration }) {
       // 更新currentTime,将秒数转换为时分秒格式
       let hours = Math.floor(duration / 3600);
@@ -186,20 +254,20 @@ export default {
       if (this.uploadFileLoading) return this.$message.info("请稍等...");
       // 开始录音
       if (this.audioUrl) {
-        this.$confirm("是否删掉此音频并开始录音?", "提醒", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        })
-          .then(() => {
-            this.recordedForm.status = 0;
-            this.audioUrl = "";
-            this.onClickStartRecord();
-          })
-          .catch(e => {
-            console.log(e);
-            console.log("不顶替");
-          });
+        // this.$confirm("是否删掉此音频并开始录音?", "提醒", {
+        //   confirmButtonText: "确定",
+        //   cancelButtonText: "取消",
+        //   type: "warning"
+        // })
+        //   .then(() => {
+        this.recordedForm.status = 0;
+        this.audioUrl = "";
+        this.onClickStartRecord();
+          // })
+          // .catch(e => {
+          //   console.log(e);
+          //   console.log("不顶替");
+          // });
       } else if (this.controlsStatus != 1 && this.recordedForm.status == 0) {
         this.controlsStatus = 1;
         this.recordedForm.status = 1;
@@ -453,6 +521,8 @@ export default {
     changeAudioUrl(newValue) {
       if (!newValue) return;
       this.audioUrl = newValue;
+      this.audioUrlArray.push(newValue)
+      this.$forceUpdate()
       if (![1, 2].includes(this.pageStatus)) this.pageStatus = 1;
       this.controlsStatus = 2;
     },
@@ -834,7 +904,7 @@ export default {
 .text_box {
   width: calc(100% - 20px);
   margin: 0 auto;
-  height: calc(100% - 75px);
+  height: calc(100% - 105px);
 }
 
 .binfo_input {
@@ -899,4 +969,67 @@ export default {
 .audio_class >>> .slider .process {
   background: #000;
 }
+
+
+.ca-b-o-main2 {
+  width: calc(100% - 20px);
+  height: 50px;
+  margin: 10px auto;
+  /* border-radius: 5px; */
+  transition: 0.3s;
+  position: relative;
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+}
+
+.select_box >>> .el-inpu__inner{
+  border: none;
+}
+
+.select_box{
+  width: 150px;
+  display: flex;
+  align-items: center;
+}
+
+.select_box > span{
+  min-width: fit-content;
+}
+
+.select_box + .select_box{
+  margin-left: 10px;
+}
+
+.selectBox {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.controlsBox {
+  display: flex;
+  align-items: center;
+  width: auto;
+  height: 100%;
+  display: none;
+}
+
+.selectBox:hover > .controlsBox {
+  display: flex;
+}
+
+.delSelect {
+  width: 16px;
+  height: 16px;
+  /* display: none; */
+  align-items: center;
+  justify-content: center;
+  background: url("../../../assets/icon/classroomObservation/del.svg") no-repeat;
+  background-size: 100% 100%;
+  box-sizing: border-box;
+  /* transform: translateY(7px); */
+}
 </style>

+ 44 - 3
src/components/pages/classroomObservation/components/baseMessage.vue

@@ -171,10 +171,12 @@
 						<span></span>
 						<!-- <span>(建议视频比例16:9,最多上传1个)</span> -->
 					</div>
+  
 					<div class="m-m-formImage" v-loading="uploadVideoLoading">
+						
 								<div
 									class="m-m-fi-imageItem"
-									style="max-width:60%;"
+									style="max-width:100%;"
 									v-if="!imageList.videoList.length==0"
 									v-for="(item, index) in imageList.videoList?imageList.videoList:[]"
 									:key="index"
@@ -189,10 +191,25 @@
 									<span @click.stop="delVideo('videoList')"></span>
 								</div>
 							<!-- <el-progress v-if="progressData.uploadVideo && !imageList.videoList.length" class="m_m_fi_progress" :percentage="progressData.value"></el-progress> -->
+							<el-popover
+  					  placement="top"
+  					  width="180"
+  					  trigger="hover"
+							style="width: 140px"
+							:disabled="!tid"
+							v-if="(((imageList.videoList&&imageList.videoList.length<=0) || !imageList.videoList) && !progressData.uploadVideo)"
+  					>
+						<div class="m_m_box">
+							<el-button-group style="width: 100%;display: flex;justify-content: center;">
+							  <el-button size="small" @click="localUploadVideo()">本地上传</el-button>
+								<el-button size="small" @click="resourceUploadVideo()">资源库上传</el-button>
+							</el-button-group>
+						</div>
 							<div
+							  slot="reference"
 								class="m-m-fi-imageItem"
 								@click.stop="addVideo()"
-								style="max-width:60%;"
+								style="max-width:100%;"
 								v-if="(((imageList.videoList&&imageList.videoList.length<=0) || !imageList.videoList) && !progressData.uploadVideo)"
 							>
 								<img
@@ -210,6 +227,7 @@
 									点击上传视频
 								</div>
 							</div>
+						</el-popover>
 
 							<div
 								class="m-m-fi-imageItem"
@@ -286,6 +304,7 @@
 		</div>
 		<previewVideoDialog ref="previewVideoDialogRef" />
 		<uploadFile v-if="progressData.uploadVideo" ref="uploadFileRef" @progressUpdate="videoProgressUpdate" @delUpload="videoDelUpload" @success="updateVideoSuccess" @startUpload="videoStartUpload"/>
+		<resourceLibraryDialog ref="resourceLibraryDialogRef" @addFile="resourceLibraryDialogAddFile"/>
 	</div>
 </template>
 
@@ -294,12 +313,14 @@ import previewVideoDialog from './previewVideoDialog.vue';
 import wordcloudEChart from './wordcloudEChart.vue'
 import uploadFile from './uploadFile.vue';
 import { v4 as uuidv4 } from "uuid";
+import resourceLibraryDialog from './resourceLibraryDialog.vue';
 export default {
 	emits: ["saveData", "saveImage", "saveVideo","delImage","saveNephogram"],
 	components:{
 		previewVideoDialog,
 		wordcloudEChart,
-		uploadFile
+		uploadFile,
+		resourceLibraryDialog
 	},
 	props: {
 		data: {
@@ -780,6 +801,26 @@ ${this.data.editorBarData?this.data.editorBarData.content:""}
 			this.$refs.uploadFileRef.stopUpload();
 			this.$refs.uploadFileRef.abortMultipartUpload(this.progressData.key,this.progressData.uploadid);
 		},
+		localUploadVideo(){
+			this.addVideo();
+		},
+		resourceUploadVideo(){
+			this.$refs.resourceLibraryDialogRef.open();
+		},
+		resourceLibraryDialogAddFile(file){
+			let _file = file[0];
+			if(!_file.file.endsWith(".mp4")){
+				this.$message.error("请选择mp4视频文件")
+				return;
+			}
+			this.$emit('saveVideo',{
+					name: _file.name,
+					status: "success",
+					uid: _file.id,
+					url: _file.file,
+			})
+			this.$message.success("上传成功")
+		}
 	},
 	mounted() {
 		// this.showNephogram();

+ 12 - 13
src/components/pages/classroomObservation/components/chatArea.vue

@@ -1719,19 +1719,18 @@ ${JSON.stringify(_list)}
                     _this.loading = false;
                     _this.progressData.uploadLoading = false;
                     if (!_this.fileIdId) return;
-                    let pram2 = {
-                      id: _this.fileIdId,
-                      json_data: JSON.stringify({
-                        file_ids: _data.result.id
-                      })
-                      // json_data: JSON.stringify({file_ids:'file-r5phg4I2oFqly4WpW7oOOTnA'}),
-                    };
-                    _this.ajax
-                      .post(
-                        "https://gpt4.cocorobo.cn/update_classroom_observation",
-                        pram2
-                      )
-                      .then(res => {});
+                    // let pram2 = {
+                    //   id: _this.fileIdId,
+                    //   json_data: JSON.stringify({
+                    //     file_ids: _data.result.id
+                    //   })
+                    // };
+                    // _this.ajax
+                    //   .post(
+                    //     "https://gpt4.cocorobo.cn/update_classroom_observation",
+                    //     pram2
+                    //   )
+                    //   .then(res => {});
                   } else {
                     _this.$message.error("修改fileId失败");
                   }

+ 38 - 2
src/components/pages/classroomObservation/components/messageArea.vue

@@ -270,7 +270,29 @@ export default {
       // if (!this.tid) return this.$message.error("请先选择课堂");
       this.$refs.analysisTemplateDialogRef.open();
     },
-    useTemplate(json) {
+		checkUseTemplate(){
+			return new Promise(resolve => {
+				if(this.bmData && this.bmData.jsonData.editorBarData){
+					if(this.bmData.jsonData.editorBarData && (this.bmData.jsonData.editorBarData.content || this.bmData.jsonData.editorBarData.url)){
+						this.$confirm("是否保留本课堂的转录文稿数据至新课堂?","提示").then(_ => {
+							window.localStorage.setItem("saveEditorBarData",JSON.stringify({editorBarData:this.bmData.jsonData.editorBarData,fileId:this.fileId}));
+							resolve(1);
+						}).catch(_ => {
+							resolve(2);
+						})
+					}else{
+						resolve(2);
+					}
+				}else{
+					resolve(2);
+				}
+			})
+		},
+    async useTemplate(json) {
+
+			let saveStatus = await this.checkUseTemplate();
+			// console.log("是否保留👉",saveStatus)
+			// return;
       let _result = [];
       json.forEach(i => {
         if (i.isOtherData) return _result.push(i);
@@ -286,7 +308,6 @@ export default {
         .addNewCourseByTemplate(_result)
         .then(res => {
           this.$refs.analysisTemplateDialogRef.close();
-
           this.$refs.analysisTemplateDialogRef.loading = false;
         })
         .catch(e => {
@@ -644,6 +665,15 @@ export default {
                 _currency.jsonData = JSON.parse(_currency.jsonData);
                 currency.push(_currency);
               }
+
+							//判断是否有保留装了文稿数据
+							let saveEditorBarData = window.localStorage.getItem("saveEditorBarData")?JSON.parse(window.localStorage.getItem("saveEditorBarData")):null;
+							if(saveEditorBarData){
+								console.log("saveEditorBarData👉",saveEditorBarData)
+								_bmData.jsonData.editorBarData = saveEditorBarData.editorBarData;
+								// this.fileId = _saveEditorBarData.fileId;
+								window.localStorage.removeItem("saveEditorBarData");
+							}
               this.dataList.push(...currency);
               this.bmData = _bmData;
               this.dialogTagList = _dialogTagList;
@@ -671,6 +701,12 @@ export default {
                     i => i.value == type
                   ).loading = false)
                 : "";
+
+							if(saveEditorBarData){
+								console.log("保存数据👉",saveEditorBarData)
+								this.$parent.updateFileId(saveEditorBarData.fileId);
+								this.saveData(this.bmData);
+							}
               resolve();
             } else {
               if (_data.length == 0) {

+ 101 - 0
src/components/pages/classroomObservation/components/resourceLibraryDialog.vue

@@ -0,0 +1,101 @@
+<template>
+	<el-dialog title="素材库" :visible="show" :append-to-body="true" width="100%"
+			:before-close="handleClose" class="dialog_diy">
+			<div style="width: 100%;height: 100%;">
+					<fileBox type="2" ref="fileBoxRef" @addFile="addFile"></fileBox>
+			</div>
+	</el-dialog>    
+</template>
+
+<script>
+import fileBox from '../../library.vue';
+export default {
+	components: {
+			fileBox,
+	},
+	props: {
+
+	},
+	data() {
+			return {
+					show:false,
+					progress: 0,
+					isFinishSize: 0,
+					proVisible: false,
+					isAllSize: 0,
+					dialogVisiblefile2: false,
+					userid: this.$route.query.userid,
+					page: 1,
+					isLoading: false,
+					total: 0,
+					chapInfo: [],
+					choose: 0,
+					mtp: require("../../../../assets/tup1.png"),
+					msp: require("../../../../assets/icon/fileIcon/isVideo.png"),
+					mfj: require("../../../../assets/icon/fileIcon/word2.png"),
+			};
+	},
+	methods: {
+		open(){
+			this.show = true;
+			this.$refs.fileBoxRef.getData();
+		},
+		handleClose(done) {
+			this.close();
+					done();
+			},
+			handleClose2(done) {
+					done();
+			},
+			close() {
+				this.show = false;
+			},
+			addFile(file){
+					this.$emit("addFile",file);
+					this.close();
+			}
+
+	}   
+};
+</script>
+
+<style scoped>
+.dialog_diy>>>.el-dialog {
+	height: 100%;
+	margin: 0 auto !important;
+}
+
+.dialog_diy>>>.el-dialog__header {
+	background: #454545 !important;
+	padding: 15px 20px;
+}
+
+.dialog_diy>>>.el-dialog__body {
+	height: calc(100% - 55px);
+	box-sizing: border-box;
+	padding: 0px;
+}
+
+.dialog_diy>>>.el-dialog__title {
+	color: #fff;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn {
+	top: 19px;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close {
+	color: #fff;
+}
+
+.dialog_diy>>>.el-dialog__headerbtn .el-dialog__close:hover {
+	color: #fff;
+}
+
+.dialog_diy>>>.el-dialog__body,
+.dialog_diy>>>.el-dialog__footer {
+	background: #fafafa;
+}
+
+
+</style>

+ 37 - 6
src/components/pages/classroomObservation/index.vue

@@ -48,7 +48,12 @@
             </el-option>
           </el-select>
         </span>
-        <el-tooltip class="item" effect="light" content="添加课堂"  placement="top">
+        <el-tooltip
+          class="item"
+          effect="light"
+          content="添加课堂"
+          placement="top"
+        >
           <span class="co_h2_add" @click="addNewCourse()">
             <svg
               t="1730428938505"
@@ -266,13 +271,23 @@ export default {
       }
     };
   },
+	watch:{
+		fileIdId(newValue){
+			let needUpdateFileId = window.localStorage.getItem("needUpdateFileId")?window.localStorage.getItem("needUpdateFileId"):null;
+			if(needUpdateFileId && newValue){
+				console.log("查询到needUpdateFileId,更新fileId👉",needUpdateFileId)
+				this.updateFileId(needUpdateFileId);
+				window.localStorage.removeItem("needUpdateFileId");
+			}
+		}
+	},
   methods: {
     //切换了课堂
     changeTid(newValue) {
-      this.$nextTick(() => {
+      this.$nextTick(async () => {
+        this.getFileIdId();
         this.$refs.messageAreaRef.getData();
         this.$refs.chatAreaRef.getData();
-        this.getFileIdId();
 
         // 	setTimeout(()=>{
         // 		this.$refs.messageAreaRef.init();
@@ -455,7 +470,7 @@ export default {
                   if (converter(_data2.message) == converter("创建成功")) {
                     this.loading = false;
                     this.$nextTick(() => {
-                      this.getCourseList().then(_ => {
+                      this.getCourseList().then(async _ => {
                         this.getFileIdId();
                         this.$refs.messageAreaRef
                           .getData(tagList ? tagList.dialogTagList : [])
@@ -486,6 +501,22 @@ export default {
       });
     },
     updateFileId(newValue) {
+			if(!this.fileIdId){
+				console.log("未查询到fileIdId,先保存到localStorage👉",newValue)
+				return window.localStorage.setItem("needUpdateFileId",newValue);
+			}
+      this.ajax
+        .post("https://gpt4.cocorobo.cn/update_classroom_observation", {
+          id: this.fileIdId,
+          json_data: JSON.stringify({ file_ids: newValue })
+        })
+        .then(res => {
+          console.log("保存fileId成功✌");
+        })
+        .catch(e => {
+          console.log(e);
+          console.log("保存fileId失败");
+        });
       this.fileId = newValue;
     },
     // 生成报告
@@ -1052,7 +1083,7 @@ export default {
               this.tid = "";
               this.fileIdId = "";
               this.fileId = "";
-              this.getCourseList().then(_ => {
+              this.getCourseList().then(async _ => {
                 if (!this.tid) {
                   this.$refs.messageAreaRef.init();
                   this.$refs.chatAreaRef.init();
@@ -1352,7 +1383,7 @@ export default {
   width: 20px;
   height: 20px;
   cursor: pointer;
-	margin-left: 20px;
+  margin-left: 20px;
 }
 
 .co_h2_add > svg {

+ 17 - 7
src/components/pages/components/lookWork.vue

@@ -10,6 +10,7 @@
         />
         <span>{{ userName }}</span>
         <span>{{ courseName }}</span>
+        <el-button size="small" type="primary" style="margin-left: 10px;height: 25px;line-height: 8px;" @click="expPdf">导出</el-button>
       </div>
 
       <div v-if="isStu == 0">
@@ -31,6 +32,7 @@
           <el-menu
             default-active="2"
             :default-openeds="['0']"
+            active-text-color="#409EFF"
             class="el-menu-vertical-demo"
           >
             <el-submenu
@@ -50,7 +52,7 @@
                 <el-menu-item
                   v-for="(k, kin) in i.taskList"
                   :key="k.id"
-                  :index="k.id"
+                  :index="i.id+'-'+k.id"
                   style="display: flex; align-items: center"
                 >
                   <div @click.stop="positT(k.id)" class="TitBti">
@@ -707,7 +709,8 @@ export default {
       workList: [],
       CState: 0,
       tableData: [],
-      loading: false
+      loading: false,
+      resData:{}
     };
   },
 
@@ -785,6 +788,9 @@ export default {
     }
   },
   methods: {
+    expPdf(){
+      this.$emit('childExportPdfSetBtn',{uid:this.uid,con:this.resData});
+    },
     // 下一个
     nxtPer() {
       this.positP++;
@@ -835,7 +841,7 @@ export default {
         .get(this.$store.state.api + "getCourseWorks6", params) //getCourseWorks4
         .then(res => {
           this.tableData = res.data[0];
-          console.log("this.tableData", this.tableData);
+          // console.log("this.tableData", this.tableData);
 
           this.exportPdfSet();
         })
@@ -847,7 +853,7 @@ export default {
       this.$hevueImgPreview(url);
     },
     // 获取作业信息
-    async exportPdfSet(uid, con) {
+    async exportPdfSet() {
       this.loading = true;
       this.tableData.forEach((e, i) => {
         if (e.userid == this.uid) {
@@ -877,6 +883,9 @@ export default {
             var wordInfo = res.data[12]; //文档作业
             this.workEvaList = res.data[13];
 
+            console.log('res.data[0][0]',res.data[0][0]);
+            this.resData = JSON.parse(JSON.stringify(res.data[0][0]))
+            
             this.courseName = res.data[0][0].course;
             this.CState = res.data[0][0].state;
 
@@ -1057,6 +1066,8 @@ export default {
     },
     // 点击任务滑动跳转
     positT(val) {
+      console.log('666666');
+      
       let a = document.getElementById(val);
       if (a) {
         a.scrollIntoView({
@@ -1130,12 +1141,11 @@ export default {
   box-sizing: border-box;
 }
 .rightBar {
-  min-width: 300px;
   margin-right: 20px;
   border-radius: 10px;
   height: 100%;
-  min-width: 200px;
-  overflow-y: auto;
+  width: 270px;
+  overflow: hidden;
   background-color: #ffffff;
 }
 .workCon {

File diff suppressed because it is too large
+ 750 - 630
src/components/pages/components/report.vue


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

@@ -1470,7 +1470,7 @@
     </el-dialog>
 
     <div class="report_box" v-if="reportVisible">
-      <el-dialog
+      <!-- <el-dialog
         v-if="exportData.state == 5"
         :visible.sync="reportVisible"
         width="100%"
@@ -1481,7 +1481,7 @@
       <div slot="title" class="header-title">
         <div style="color: #fff">查看作业</div>
       </div>
-    </el-dialog>
+    </el-dialog>  -->
 
     <el-dialog
       v-if="exportData.state == 5"

+ 55 - 14
src/components/pages/components/worksDetail2.vue

@@ -18,18 +18,23 @@
           >一键导出</el-button
         >
         <el-button @click="exportData" 
-          v-if="cutTabNum == 0 && multipleSelection.length > 1"
+          v-if="DState == 5 && cutTabNum == 0 && multipleSelection.length > 1"
           type="primary" 
           size="small"
           >批量导出</el-button
         >
         <el-button @click="exportData" 
-          v-if="cutTabNum == 0 && multipleSelection.length < 2"
+          v-if="DState == 5 && cutTabNum == 0 && multipleSelection.length < 2"
           type="info" 
           disabled
           size="small"
           >批量导出</el-button
         >
+        <el-button @click="customizeExport" 
+          type="primary" 
+          size="small"
+          >{{ DState == 5 ? '按任务导出' : '自定义导出' }}</el-button
+        >
         <el-button style="margin-left: 20px;" @click="retPage" type="primary" size="small">返回</el-button>
       </div>
     </div>
@@ -159,10 +164,12 @@
           @selection-change="handleSelectionChange"
         >
           <el-table-column
-            v-show="cutTabNum == 0"
+            v-if="cutTabNum == 0 && DState == 5"
+            key="1"
             type="selection"
             width="55">
           </el-table-column>
+
           <el-table-column
             prop="sName"
             label="姓名"
@@ -295,7 +302,7 @@
           <div slot="title" class="header-title">
             <div style="color: #fff">查看&批改</div>
           </div>
-          <LookWork  :id="id" :studentId="studentId" :key="studentId"></LookWork>
+          <LookWork @childExportPdfSetBtn="childExportPdfSetBtn" :id="id" :studentId="studentId" :key="dialogVisible3"></LookWork>
 
           <!-- <div v-else class="zyBoxC" ref="reportPdf">
             <div class="courseTitle" v-if="allWorks.course">
@@ -1569,19 +1576,36 @@
       class="worksDialogCSSExp"
       :append-to-body="true"
       :fullscreen="true"
-
     >
       <div slot="title" class="header-title">
         <div style="color: #fff">导出作业集</div>
       </div>
       <exportWorksDialog  :key="exportW" :multipleSelection="multipleSelection" :digNum="digNum" :oid="oid" :worksDialog.sync="worksDialog" :worksDialogCon="worksDialogCon" :uid="exportPdfSetUid" :cid="id"></exportWorksDialog>
     </el-dialog>
+
+<!-- 自定义导出作业筛选弹框 -->
+    <el-dialog
+      :title="dataJson.state == 5 ? '按任务导出作业' : '自定义导出作业'"
+      :visible.sync="dialogVisibleBao"
+      :append-to-body="true"
+      width="550px"
+      :before-close="handleClose"
+      class="dialog_diy r_diy"
+    >
+      <div>
+        <div>
+          <Report :cid="dataJson.courseId" :dataJson="dataJson" ref="reportRef"></Report>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer"> </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import StudentData from "./studentData";
 import exportWorksDialog from "./exportWorksDialog";
+import Report from "./report";
 
 import pdf from "./vpdf";
 import htmlDocx from "html-docx-js/dist/html-docx";
@@ -1595,6 +1619,7 @@ export default {
     LookWork,
     pdf,
     exportWorksDialog,
+    Report
   },
   props: ["cid", "uid", "ooid","DState","dataJson"],
   data() {
@@ -1834,7 +1859,8 @@ export default {
       exportPdfSetUid:'',
       exportW:0,
       digNum:0,
-      multipleSelection:[]
+      multipleSelection:[],
+      dialogVisibleBao:false
     };
   },
   computed: {
@@ -1931,6 +1957,11 @@ export default {
         return;
       });
     },
+    // 自定义导出
+    customizeExport(){
+      this.dialogVisibleBao = true
+    },
+
     // 批量导出
     exportData(){
       // this.$emit("update:dialogVisibleBao", true);
@@ -1967,6 +1998,15 @@ export default {
 
       this.exportW++
     },
+    // 子元素调用父元素 按任务查看导出作业集
+    childExportPdfSetBtn(val) {
+      this.worksDialog = true;
+      this.worksDialogCon = val.con;
+      this.exportPdfSetUid = val.uid;
+      this.digNum = 0
+
+      this.exportW++
+    },
     // 导出所有作业
     exportPdfSetAllWork(){
       this.worksDialog = true;
@@ -2168,7 +2208,7 @@ export default {
       }
     },
     handleClose(done) {
-      this.studentId =""
+      // this.studentId =""
       done();
     },
     tableRowClassName({ row, rowIndex }) {
@@ -2192,17 +2232,18 @@ export default {
       // this.getWorks();
     },
     lookWork(id, uid, type, index,con) {
-      console.log('con',con);
+      // console.log('con',con);
+      this.studentId = '';
 
       this.scopeId1 = id;
       this.studentId = uid;
 
-      if (this.DState == 5) {
-        this.$nextTick(()=>{
-          this.dialogVisible3 = true
-        })
-        return
-      }
+      // if (this.DState == 5) {
+      // this.$nextTick(()=>{
+      this.dialogVisible3 = true
+      // })
+      // }
+      return
       
             
       

+ 2 - 2
src/components/pages/pocAiClassroom/chatArea2.vue

@@ -17,12 +17,12 @@ export default {
       org: this.$route.query.org,
       oid: this.$route.query.oid,
       type: this.$route.query.type,
-      src: "https://beta.cloud.cocorobo.cn/aigpt/#/js?active_role=0"
+      src:`https://cloud.cocorobo.hk/aigpt/#/poc?muti_agent_id=90bec943-65cf-11ef-9db4-12e77c4cb76b&isPbl=false`
     };
   },
   methods: {},
   mounted() {
-   
+   this.src = `https://cloud.cocorobo.hk/aigpt/#/poc?muti_agent_id=90bec943-65cf-11ef-9db4-12e77c4cb76b&isPbl=false&session_id=${this.userId}-chat`
   }
 };
 </script>

+ 7 - 3
src/components/pages/pocAiClassroom/pocClass.vue

@@ -14,7 +14,7 @@ export default {
       org: this.$route.query.org,
       oid: this.$route.query.oid,
 			type:this.$route.query.type,
-			src:"https://beta.cloud.cocorobo.cn/aigpt/#/js?active_role=3"
+			src:"https://cloud.cocorobo.hk/aigpt/#/poc?muti_agent_id=798c3511-6b32-11ef-8ce0-12e77c4cb76b&isPbl=false&session_id=merenduihua444"
     };
   },
   methods: {
@@ -22,10 +22,14 @@ export default {
   },
   mounted() {
 		if (this.type == 1) {
-      this.src = `https://beta.cloud.cocorobo.cn/aigpt/#/js?active_role=${5}`;
+			// 2.1
+			console.log("2.1课程")
+      this.src = `https://cloud.cocorobo.hk/aigpt/#/poc?muti_agent_id=798c3511-6b32-11ef-8ce0-12e77c4cb76b&isPbl=false&session_id=${this.userId}-21`;
 			console.log("5")
     } else if (this.type == 2) {
-      this.src = `https://beta.cloud.cocorobo.cn/aigpt/#/js?active_role=${3}`;
+			//2.2
+			console.log("2.2课程")
+      this.src = `https://cloud.cocorobo.hk/aigpt/#/poc?muti_agent_id=a9883cc4-6c3d-11ef-8ce0-12e77c4cb76b&isPbl=false&session_id=${this.userId}-22`;
 			console.log(3)
     }
   }

+ 1 - 15
src/components/pages/works.vue

@@ -326,21 +326,7 @@
     ></WorkDate>
     
     
-    <el-dialog
-      title="自定义导出作业"
-      :visible.sync="dialogVisibleBao"
-      :append-to-body="true"
-      width="550px"
-      :before-close="handleClose"
-      class="dialog_diy r_diy"
-    >
-      <div>
-        <div>
-          <Report :cid="dataJson.courseId"></Report>
-        </div>
-      </div>
-      <span slot="footer" class="dialog-footer"> </span>
-    </el-dialog>
+   
 
 
 

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