Ver código fonte

Merge branch 'beta'

lsc 1 ano atrás
pai
commit
21f44b7c1e
33 arquivos alterados com 1545 adições e 2347 exclusões
  1. 7 2
      dist/index.html
  2. 0 0
      dist/static/css/app.594e4e826ffe0f301bbea71fd2bfba4a.css
  3. 0 0
      dist/static/css/app.594e4e826ffe0f301bbea71fd2bfba4a.css.map
  4. 0 0
      dist/static/css/app.efa0cf5c1a40516117d74366de47d675.css
  5. 0 0
      dist/static/css/app.efa0cf5c1a40516117d74366de47d675.css.map
  6. 1 0
      dist/static/js/app.4f83bc4621a576a7d757.js
  7. 1 0
      dist/static/js/app.4f83bc4621a576a7d757.js.map
  8. 1 0
      dist/static/js/app.c36c929445a59cac30a9.js
  9. 0 0
      dist/static/js/app.c36c929445a59cac30a9.js.map
  10. 0 0
      dist/static/js/manifest.571c38d63f24b1ae9e16.js.map
  11. 3 3
      index.html
  12. 6 0
      src/assets/icon/course/copy.svg
  13. 6 0
      src/assets/icon/course/del.svg
  14. 6 0
      src/assets/icon/course/edit.svg
  15. 6 0
      src/assets/icon/course/lookeye.svg
  16. 6 0
      src/assets/icon/course/share.svg
  17. 18 0
      src/common/axios.config.js
  18. 9 11
      src/components/pages/aiAddCourse/addCourse.vue
  19. 16 4
      src/components/pages/classroomObservation/components/analysis.vue
  20. 20 15
      src/components/pages/classroomObservation/components/analysisItem.vue
  21. 7 19
      src/components/pages/classroomObservation/components/baseMessage.vue
  22. 91 11
      src/components/pages/classroomObservation/components/chatArea.vue
  23. 0 386
      src/components/pages/classroomObservation/components/currencyAnalysis.vue
  24. 0 389
      src/components/pages/classroomObservation/components/extendAnalysis.vue
  25. 154 625
      src/components/pages/classroomObservation/components/messageArea.vue
  26. 0 389
      src/components/pages/classroomObservation/components/scienceAnalysis.vue
  27. 2 0
      src/components/pages/classroomObservation/components/startPage.vue
  28. 558 440
      src/components/pages/classroomObservation/components/tape.vue
  29. 1 0
      src/components/pages/classroomObservation/components/transcription.vue
  30. 49 39
      src/components/pages/classroomObservation/index.vue
  31. 99 13
      src/components/pages/course.vue
  32. 477 0
      src/components/pages/dialog/shareDialog.vue
  33. 1 1
      src/components/pages/testPerson/test/trActivity.vue

+ 7 - 2
dist/index.html

@@ -1,10 +1,10 @@
 <!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>PBL教师端</title><link rel="shortcut icon" type=image/x-icon href=static/logo.ico><style>@charset "utf-8";
-    @font-face {
+    /* @font-face {
         font-family: 'Source Han Sans SC';
         src: url('./static/SourceHanSans-Regular.otf') format('truetype');
         font-weight: normal;
         font-style: normal;
-      }
+      } */
 
     div::-webkit-scrollbar {
       /*滚动条整体样式*/
@@ -31,8 +31,13 @@
       height: 100%;
       width: 100%;
       background: #e6eaf0;
+<<<<<<< HEAD
       font-family: 'Source Han Sans SC', sans-serif;
     }</style><link href=./static/css/app.594e4e826ffe0f301bbea71fd2bfba4a.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.eb26ca5b19390ddf3503.js></script><script type=text/javascript src=./static/js/app.c36c929445a59cac30a9.js></script></body></html><script>function stopSafari() {
+=======
+      font-family: '黑体';
+    }</style><link href=./static/css/app.efa0cf5c1a40516117d74366de47d675.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.eb26ca5b19390ddf3503.js></script><script type=text/javascript src=./static/js/app.4f83bc4621a576a7d757.js></script></body></html><script>function stopSafari() {
+>>>>>>> beta
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/css/app.594e4e826ffe0f301bbea71fd2bfba4a.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/css/app.594e4e826ffe0f301bbea71fd2bfba4a.css.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/css/app.efa0cf5c1a40516117d74366de47d675.css


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/css/app.efa0cf5c1a40516117d74366de47d675.css.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
dist/static/js/app.4f83bc4621a576a7d757.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
dist/static/js/app.4f83bc4621a576a7d757.js.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
dist/static/js/app.c36c929445a59cac30a9.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/app.c36c929445a59cac30a9.js.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/manifest.571c38d63f24b1ae9e16.js.map


+ 3 - 3
index.html

@@ -8,12 +8,12 @@
   <link rel="shortcut icon" type="image/x-icon" href="static/logo.ico">
   <style>
     @charset "utf-8";
-    @font-face {
+    /* @font-face {
         font-family: 'Source Han Sans SC';
         src: url('./static/SourceHanSans-Regular.otf') format('truetype');
         font-weight: normal;
         font-style: normal;
-      }
+      } */
 
     div::-webkit-scrollbar {
       /*滚动条整体样式*/
@@ -40,7 +40,7 @@
       height: 100%;
       width: 100%;
       background: #e6eaf0;
-      font-family: 'Source Han Sans SC', sans-serif;
+      font-family: '黑体';
     }
   </style>
 </head>

+ 6 - 0
src/assets/icon/course/copy.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="24" height="24" style="" filter="none">
+    
+    <g>
+    <path d="M9.333 8v-4c0-0.736 0.597-1.333 1.333-1.333v0h16c0.736 0 1.333 0.597 1.333 1.333v0 18.667c0 0.736-0.597 1.333-1.333 1.333v0h-4v4c0 0.736-0.6 1.333-1.343 1.333h-15.981c-0.002 0-0.005 0-0.008 0-0.737 0-1.334-0.597-1.335-1.333v-0l0.004-18.667c0-0.736 0.6-1.333 1.343-1.333h3.987zM6.671 10.667l-0.004 16h13.333v-16h-13.329zM12 8h10.667v13.333h2.667v-16h-13.333v2.667z" fill="rgba(79,79,79,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
src/assets/icon/course/del.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="24" height="24" style="" filter="none">
+    
+    <g>
+    <path d="M22.129 5.301l-1.614-3.687h-8.758l-1.614 3.687h-7.837v2.305h2.766v22.822h22.358v-22.823h2.536v-2.304h-7.837zM12.909 3.918h5.992l0.691 1.384h-7.146l0.462-1.38zM24.895 28.121h-17.749v-20.515h17.749v20.515zM9.451 11.526h2.305v13.138h-2.305zM14.752 11.526h2.305v13.138h-2.305zM20.285 11.526h2.305v13.138h-2.305z" fill="rgba(79,79,79,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
src/assets/icon/course/edit.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="64 64 896 896" width="24" height="24" style="" filter="none">
+    
+    <g>
+    <path d="M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 0 0 0-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 0 0 9.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z" fill="rgba(79,79,79,1)"></path>
+    </g>
+  </svg>

+ 6 - 0
src/assets/icon/course/lookeye.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 48 48" width="24" height="24" style="" filter="none">
+    
+    <g>
+    <path fill-rule="evenodd" clip-rule="evenodd" d="M24 37C30.6274 37 36.6274 32.6667 42 24C36.6274 15.3333 30.6274 11 24 11C17.3726 11 11.3726 15.3333 6 24C11.3726 32.6667 17.3726 37 24 37Z" stroke="rgba(79,79,79,1)" stroke-width="4" fill="none"></path><path d="M29 24C29 26.7614 26.7614 29 24 29C21.2386 29 19 26.7614 19 24C19 21.2386 21.2386 19 24 19C26.7614 19 29 21.2386 29 24Z" stroke="rgba(79,79,79,1)" stroke-width="4" fill="none"></path>
+    </g>
+  </svg>

+ 6 - 0
src/assets/icon/course/share.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" width="24" height="24" style="" filter="none">
+    
+    <g>
+    <path d="M13.333 4v2.667h-6.667v18.667h18.667v-6.667h2.667v8c0 0.736-0.597 1.333-1.333 1.333v0h-21.333c-0.736 0-1.333-0.597-1.333-1.333v0-21.333c0-0.736 0.597-1.333 1.333-1.333v0h8zM23.448 6.667h-6.115v-2.667h10.667v10.667h-2.667v-6.115l-9.333 9.333-1.885-1.885 9.333-9.333z" fill="rgba(79,79,79,1)"></path>
+    </g>
+  </svg>

+ 18 - 0
src/common/axios.config.js

@@ -82,6 +82,23 @@ function post(url, params) {
             })
     })
 }
+
+//返回一个Promise(发送put请求)
+function put(url, params) {
+	return new Promise((resolve, reject) => {
+			axios.put(url, params)
+					.then(response => {
+							resolve(response);
+					}, err => {
+							reject(err);
+					})
+					.catch((error) => {
+							reject(error)
+					})
+	})
+}
+
+
 ////返回一个Promise(发送get请求)
 function get(url, param) {
     return new Promise((resolve, reject) => {
@@ -99,4 +116,5 @@ function get(url, param) {
 export default {
     get,
     post,
+		put,
 }

Diferenças do arquivo suprimidas por serem muito extensas
+ 9 - 11
src/components/pages/aiAddCourse/addCourse.vue


+ 16 - 4
src/components/pages/classroomObservation/components/analysis.vue

@@ -13,7 +13,7 @@
 			</div>
 		</div>
 		<div class="a-main" v-show="showItem">
-			<analysisItem ref="analysisItemRef" v-if="analysisItemList.length > 0" v-for="(item,index) in analysisItemList" :key="item.id" :data="item" :tid="tid" :index="index" @delItem="delItem" @editItem="editItem"/>
+			<analysisItem ref="analysisItemRef" v-if="analysisItemList.length > 0" v-for="(item,index) in analysisItemList" :key="item.id" :data="item" :tid="tid" :fileId="fileId" :index="index" @delItem="delItem" @editItem="editItem"/>
 			<div class="a_m_empty" v-if="analysisItemList.length == 0">暂无模块...</div>
 		</div>
 	</div>
@@ -34,9 +34,17 @@ export default {
 				return []
 			}
 		},
+		type:{
+			type:Number,
+			default:0
+		},
 		tid:{
 			type:String,
 			require:true,
+		},
+		fileId:{
+			type:String,
+			require:true,
 		}
 	},
 	components: {
@@ -46,12 +54,11 @@ export default {
 		return {
 			showDialog: false,
 			showItem: true,
-			tagIndex: 0,
 		};
 	},
 	methods: {
 		addTemplate() {
-			this.$emit('updateMessage',  this.tagIndex);
+			this.$emit('updateMessage',  this.type);
 		},
 		changeShowItem(newValue) {
 			this.showItem = newValue;
@@ -62,6 +69,11 @@ export default {
 		editItem(id,_data){
 			this.$emit("editItem",id,_data)
 		},
+		getReport(){
+			this.$refs.analysisItemRef.forEach(i=>{
+				i.editBtn();
+			})
+		}
 	},
 };
 </script>
@@ -89,7 +101,7 @@ export default {
 	align-items: center;
 	justify-content: space-between;
 	box-sizing: border-box;
-	padding-right: 40px;
+	padding-right: 10px;
 }
 
 .a-h-left {

+ 20 - 15
src/components/pages/classroomObservation/components/analysisItem.vue

@@ -78,6 +78,10 @@ export default {
 		tid:{
 			type:String,
 			require:true,
+		},
+		fileId:{
+			type:String,
+			require:true,
 		}
 	},
 	data() {
@@ -115,6 +119,7 @@ export default {
 			this.$message.info("回退右");
 		},
 		editBtn() {
+			console.log("👇")
 			this.loading = true;
 			let assistant_id = {
 					"课堂观察": { value: "8ab07d41-e143-11ee-aaca-12e77c4cb76b", type: 0 },
@@ -130,7 +135,7 @@ export default {
 						value: "eac63117-00a7-11ef-aaca-12e77c4cb76b",
 						type: 0,
 					},
-					"麦锡问题分类": {
+					"麦锡问题分类": {
 						value: "18545cf7-0125-11ef-aaca-12e77c4cb76b",
 						type: 0,
 					},
@@ -174,11 +179,11 @@ export default {
 						value:"25e53379-0152-11ef-aaca-12e77c4cb76b",
 						type:3,
 					},
-					"scop课堂观察":{
+					"SCOP课堂观察":{
 						value:"d0c76d35-0152-11ef-aaca-12e77c4cb76b",
 						type:3,
 					},
-					"rtop课堂观察":{
+					"RTOP课堂观察":{
 						value:"2ace7ff6-0154-11ef-aaca-12e77c4cb76b",
 						type:3
 					}
@@ -192,7 +197,7 @@ export default {
 				message: "请使用代码解析器获取文件,帮我根据要求完整的分析,输出请按照要求。",
 				session_name: new Date().getTime(),
 				userId:"1cf9dc4b-d95f-11ea-af4c-52540005ab01",
-				file_ids:file_ids[this.tid],
+				file_ids:this.fileId?[this.fileId]:file_ids[this.tid],
 			}
 
 			if(!parm.assistant_id){
@@ -213,15 +218,15 @@ export default {
 				_copyData.jsonData.fileList = [];
 				_copyData.json_data = JSON.stringify(_copyData.jsonData)
 				this.$emit("editItem",this.data.id,_copyData);
-				// let pram2 = {
-				// 	id: _copyData.id,
-				// 	json_data: _copyData.json_data,
-				// };
-				// this.ajax
-				// .post(
-				// 	"https://gpt4.cocorobo.cn/update_classroom_observation",
-				// 	pram2
-				// )
+				let pram2 = {
+					id: _copyData.id,
+					json_data: _copyData.json_data,
+				};
+				this.ajax
+				.post(
+					"https://gpt4.cocorobo.cn/update_classroom_observation",
+					pram2
+				)
 				this.loading = false;
 			}).catch(err=>{
 				this.$message.error("AI无法识别优化")
@@ -252,9 +257,9 @@ export default {
 	width: 100%;
 	height: auto;
 
-	margin: 10px 0px;
+	margin: 11.7px 0px;
 
-	padding-right: 40px;
+	padding-right: 10px;
 	box-sizing: border-box;
 }
 .ai-header {

+ 7 - 19
src/components/pages/classroomObservation/components/baseMessage.vue

@@ -151,23 +151,6 @@ export default {
 				class: "",
 				studentNum: 0,
 			},
-			// imageList: [
-			// 	{
-			// 		id: 0,
-			// 		url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E8%AF%BE%E5%A0%82%E7%85%A7%E7%89%8711713229346909.jpeg",
-			// 		fileName: "课堂图片1.jpeg",
-			// 	},
-			// 	{
-			// 		id: 1,
-			// 		url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E8%AF%BE%E5%A0%82%E7%85%A7%E7%89%8721713229377830.jpeg",
-			// 		fileName: "课堂图片2.jpeg",
-			// 	},
-			// 	{
-			// 		id: 2,
-			// 		url: "https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/%E8%AF%BE%E5%A0%82%E7%85%A7%E7%89%8731713229401672.jpeg",
-			// 		fileName: "课堂图片3.jpeg",
-			// 	},
-			// ],
 			gradeList: [
 				{ value: "小学一年级", label: "小学一年级" },
 				{ value: "小学二年级", label: "小学二年级" },
@@ -179,6 +162,11 @@ export default {
 			subjectList: [{ value: "科学", label: "科学" }],
 		};
 	},
+	watch:{
+		data(newValue){
+			this.from = newValue;
+		}
+	},
 	methods: {
 		addImage() {
 			this.$message.info("添加课堂图片");
@@ -191,7 +179,7 @@ export default {
 		},
 	},
 	mounted(){
-		console.log(this.imageList)
+		
 	}
 };
 </script>
@@ -274,7 +262,7 @@ export default {
 }
 
 .m-main {
-	width: calc(100% - 40px);
+	width: calc(100% - 10px);
 	height: auto;
 	border-radius: 5px;
 	background-color: #ffffff;

+ 91 - 11
src/components/pages/classroomObservation/components/chatArea.vue

@@ -1,5 +1,5 @@
 <template>
-	<div class="chatArea">
+	<div class="chatArea" v-loading="loading">
 		<div class="m-operation">
 			<div>实时转录</div>
 			<div>2023-11-11 11:11:24</div>
@@ -35,7 +35,7 @@
 			<iframe
 				ref="viframe"
 				v-if="barNum == 2"
-				style="width: 100%; height: 99%; border: none"
+				style="width: 100%; height: 100%; border: none"
 				:src="
 					'https://view.officeapps.live.com/op/view.aspx?src=' +
 					encodeURIComponent(fileUrl)
@@ -59,7 +59,7 @@
 								class="ca-b-o-h-s-l-text"
 								@click.stop="languageShow = !languageShow"
 							>
-								{{ languageList.find(i=>i.label == languageRadio).lang }}
+								{{ languageList.find((i) => i.label == languageRadio).lang }}
 							</div>
 
 							<div
@@ -82,9 +82,7 @@
 						</div>
 
 						<div class="ca-b-o-h-l-btn" @click.stop="uploadRecording()">
-							<div class="ca-b-o-h-b-l-text">
-								上传录音
-							</div>
+							<div class="ca-b-o-h-b-l-text">上传录音</div>
 						</div>
 					</div>
 					<div class="ca-b-o-h-right">
@@ -231,6 +229,17 @@ const clickOutside = {
 	},
 };
 export default {
+	emits:["updateFileId"],
+	props: {
+		tid: {
+			type: String,
+			require:true,
+		},
+		fileIdid: {
+			type: String,
+			default: ''
+		}
+	},
 	components: {
 		startPage,
 		transcription,
@@ -249,9 +258,8 @@ export default {
 			// 判断0录音与1打字切换
 			TapeNum: 0,
 			startTape: 0,
-
+			loading:false,
 			judge: 0,
-
 			textareaValue: "",
 			barNum: 0,
 			audioUrl:
@@ -407,7 +415,80 @@ Markdown表格Markdown表格Markdown表格Markdown表格Markdown表格Markdown
 		handShow() {},
 		// 上传录音
 		uploadRecording() {
-			this.mainBtnStatus = 1;
+			let input = document.createElement("input");
+			input.type = "file";
+			input.accept = "*";
+			input.click();
+			input.onchange = () => {
+				this.loading=  true;
+				let file = input.files[0];
+				var credentials = {
+					accessKeyId: "AKIATLPEDU37QV5CHLMH",
+					secretAccessKey: "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",
+				}; //秘钥形式的登录上传
+				window.AWS.config.update(credentials);
+				window.AWS.config.region = "cn-northwest-1"; //设置区域
+
+				var bucket = new window.AWS.S3({ params: { Bucket: "ccrb" } }); //选择桶
+				var _this = this;
+
+				if (file) {
+					var params = {
+						Key:
+							file.name.split(".")[0] +
+							new Date().getTime() +
+							"." +
+							file.name.split(".")[file.name.split(".").length - 1],
+						ContentType: file.type,
+						Body: file,
+						"Access-Control-Allow-Credentials": "*",
+						ACL: "public-read",
+					}; //key可以设置为桶的相抵路径,Body为文件, ACL最好要设置
+					var options = {
+						partSize: 2048 * 1024 * 1024,
+						queueSize: 2,
+						leavePartsOnError: true,
+					};
+					bucket
+						.upload(params, options)
+						.on("httpUploadProgress", function (evt) {
+							//这里可以写进度条
+							// console.log("Uploaded : " + parseInt((evt.loaded * 80) / evt.total) + '%');
+						})
+						.send(function (err, data) {
+							if (err) {
+								_this.$message.error("上传失败");
+								_this.loading = false;
+							} else {
+								_this.ajax.put("https://gpt4.cocorobo.cn/upload_file_knowledge",{url: data.Location}).then(res=>{
+									let _data = res.data.FunctionResponse;
+									if(_data.result && _data.result.id){
+										_this.$emit("updateFileId", _data.result.id)
+										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
+										)
+									}else{
+										_this.$message.error("上传失败")
+									}
+									_this.loading = false;
+									// this.$emit("updateFileId", data.Location)
+								}).catch(e=>{
+									_this.loading = false;
+									_this.$message.error("上传失败")
+								})
+								
+							}
+						});
+				}
+			};
+			// this.mainBtnStatus = 1;
 			// this.barNum = 4;
 		},
 		cutBar(val) {
@@ -491,7 +572,6 @@ Markdown表格Markdown表格Markdown表格Markdown表格Markdown表格Markdown
 	flex-shrink: 0;
 	display: flex;
 	cursor: pointer;
-
 	justify-content: flex-start;
 }
 .titBar > .titBarRig {
@@ -519,7 +599,7 @@ Markdown表格Markdown表格Markdown表格Markdown表格Markdown表格Markdown
 .titBar > .titBarLeft > div {
 	height: 100%;
 	font-family: PingFang SC;
-	font-size: 14px;
+	font-size: 16px;
 	min-width: 75px;
 	margin-right: 30px;
 	text-align: left;

+ 0 - 386
src/components/pages/classroomObservation/components/currencyAnalysis.vue

@@ -1,386 +0,0 @@
-<template>
-	<div class="analysis">
-		<div class="a-header">
-			<div class="a-h-left" @click.stop="changeShowItem(!showItem)">
-				<span :class="['a-h-l-icon', showItem ? 'a-h-l-showIcon' : '']"></span>
-				<span class="a-h-l-title">{{ title }}</span>
-			</div>
-			<div class="a-h-right">
-				<div class="a-h-r-btn" @click.stop="addTemplate">
-					<img src="@/assets/icon/classroomObservation/newcon.png" alt="" />
-					添加模块
-				</div>
-			</div>
-		</div>
-		<div class="a-main" v-show="showItem">
-			<analysisItem ref="analysisItemRef" v-if="analysisItemList.length > 0" v-for="(item,index) in analysisItemList" :key="item.id" :data="item" :tid="tid" :index="index" @delItem="delItem" @editItem="editItem"/>
-			<div class="a_m_empty" v-if="analysisItemList.length == 0">暂无模块...</div>
-		</div>
-	</div>
-</template>
-
-<script>
-import analysisItem from "./analysisItem";
-export default {
-	emits:["delItem","editItem"],
-	props: {
-		analysisItemList:{
-			type:Array,
-			default:()=>{
-				return []
-			}
-		},
-		tid:{
-			type:String,
-			require:true,
-		}
-	},
-	components: {
-		analysisItem,
-	},
-	data() {
-		return {
-			title: "通用课堂分析",
-			showDialog: false,
-			showItem: true,
-			tagIndex: 0,
-		};
-	},
-	methods: {
-		addTemplate() {
-			this.$emit('updateMessage',  this.tagIndex);
-		},
-		changeShowItem(newValue) {
-			this.showItem = newValue;
-		},
-		delItem(id){
-			this.$emit("delItem",id)
-		},
-		editItem(id,_data){
-			this.$emit("editItem",id,_data)
-		},
-	},
-};
-</script>
-
-<style scoped>
-.itemTit {
-	width: 136px;
-	height: 32px;
-	padding: 5px 8px 5px 8px;
-	gap: 8px;
-	opacity: 0px;
-	margin: 20px 0;
-	margin-bottom: 10px;
-	border-bottom: 1px #ccc solid;
-}
-.analysis {
-	width: 100%;
-	height: auto;
-}
-
-.a-header {
-	width: 100%;
-	height: 50px;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	box-sizing: border-box;
-	padding-right: 40px;
-}
-
-.a-h-left {
-	display: flex;
-	align-items: center;
-	cursor: pointer;
-}
-
-.a-h-l-icon {
-	width: 16px;
-	height: 16px;
-	background: url("../../../../assets/icon/classroomObservation/right.png")
-		no-repeat;
-	background-size: 100% 100%;
-	margin-right: 5px;
-	transition: 0.3s;
-}
-
-.a-h-l-showIcon {
-	transform: rotate(90deg);
-}
-
-.a-h-l-title {
-	font-size: 18px;
-}
-
-.a-h-r-btn {
-	font-size: 16px;
-	height: 35px;
-	width: auto;
-	box-sizing: border-box;
-	/* padding: 0 20px; */
-	/* border: solid 1px #C5C5C5; */
-	/* border-radius: 18px; */
-	cursor: pointer;
-	/* background-color: white; */
-	display: flex;
-	color: rgba(54, 129, 252, 1);
-	justify-content: center;
-	align-items: center;
-}
-
-.a-h-r-btn > img {
-	width: 16px;
-	height: 16px;
-	margin-right: 5px;
-}
-
-.a-main {
-	width: calc(100%);
-	height: auto;
-}
-
-.a-dialog {
-	position: fixed;
-	width: 1200px;
-	height: 500px;
-	min-height: 600px;
-	box-shadow: 0px 0 8px 0px #555555;
-	border-radius: 8px;
-	z-index: 999;
-	background-color: #fff;
-	left: 0;
-	right: 0;
-	top: 100px;
-	margin: 0 auto;
-	/* margin: 0 auto; */
-	/* top: 50%; */
-	/* margin: -18% 0 0 -300px; */
-	overflow: hidden;
-}
-
-.a-d-top {
-	/* background: #adadad; */
-	display: flex;
-	flex-direction: row;
-	flex-wrap: nowrap;
-	align-items: center;
-	justify-content: space-between;
-	height: 54px;
-	border-radius: 8px 8px 0 0;
-	user-select: none;
-	border-bottom: 1px #ccc solid;
-}
-.a-d-top >>> .el-input__inner {
-	width: 320px;
-	height: 32px;
-}
-.a-d-top >>> .el-input__icon {
-	line-height: 32px;
-}
-.a-d-topTit {
-	width: 171px;
-	height: 32px;
-	display: flex;
-	align-items: center;
-	font-family: PingFang SC;
-	box-sizing: border-box;
-	padding: 5px;
-	line-height: 22px;
-	justify-content: center;
-	/* text-align: left; */
-}
-.a-d-t-left {
-	width: 200px;
-	height: 100%;
-	display: flex;
-	align-items: center;
-	flex-direction: column;
-	justify-content: flex-start;
-	box-sizing: border-box;
-	padding-left: 5px;
-}
-
-.a-d-t-l-item {
-	/* width: auto;
-	height: 90%;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	padding: 0 10px;
-	border-radius: 10px;
-	background-color: #d4d9da;
-	margin-right: 3px;
-	cursor: pointer; */
-	cursor: pointer;
-	width: 136px;
-	height: 32px;
-	display: flex;
-	align-items: center;
-	border-radius: 5px;
-	font-family: PingFang SC;
-	box-sizing: border-box;
-	padding: 5px;
-	font-size: 14px;
-	font-weight: 600;
-	line-height: 22px;
-	text-align: left;
-	margin-bottom: 20px;
-}
-
-.a-d-t-l-item:hover {
-	background-color: white;
-}
-
-.a-d-t-right {
-	width: 40px;
-	height: 40px;
-	margin-right: 10px;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	color: black !important;
-}
-
-.a-d-t-right > span {
-	width: 25px;
-	height: 25px;
-	border-radius: 25px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	/* align-items: center; */
-	font-size: 22px;
-	color: #fff;
-	/* background-color: #adadad; */
-	cursor: pointer;
-	/* background-color: #e6e6e6; */
-	color: #adadad;
-}
-
-.a-d-box {
-	width: 100%;
-	height: 100%;
-	/* height: calc(100% - 40px); */
-	background-color: #f0f2f5;
-	overflow: auto;
-
-	box-sizing: border-box;
-	padding: 15px;
-	padding-bottom: 50px;
-}
-
-.a-d-b-item {
-	width: 22%;
-	height: 200px;
-	display: flex;
-	flex-direction: column;
-	background-color: #fff;
-	border-radius: 10px;
-	padding: 15px;
-	float: left;
-	box-sizing: border-box;
-	margin-bottom: 10px;
-	/* position: relative; */
-}
-.a-d-b-item:hover .a-d-b-i-bottomBtn {
-	display: block !important;
-}
-.a-d-b-item:hover .a-d-b-i-bottomPer {
-	display: none !important;
-}
-.a-d-b-i-top {
-	width: 100%;
-	/* height: 50%; */
-	height: 20px;
-	margin-bottom: 15px;
-	display: flex;
-	align-items: center;
-	/* justify-content: space-between; */
-}
-.a-d-b-i-top > img {
-	width: 35px;
-	height: 35px;
-}
-/* .a-d-b-i-top>div{ */
-/* width: auto;
-	height: 35px;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	margin-left: 10px; */
-/* } */
-
-.a-d-b-i-t-title {
-	width: 100%;
-	height: 35px;
-	display: block;
-	align-items: center;
-	box-sizing: border-box;
-	padding: 0 10px;
-	text-overflow: ellipsis;
-	overflow: hidden;
-	word-break: break-all;
-	white-space: nowrap;
-	line-height: 35px;
-	/* display: -webkit-box;
-	-webkit-box-orient: vertical;
-	-webkit-line-clamp: 1;
-	overflow: hidden; */
-}
-
-.a-d-b-i-bottom {
-	width: 100%;
-	flex: 1;
-	overflow: hidden;
-	/* max-height: 186px; */
-	font-size: 14px;
-	-webkit-line-clamp: 5;
-	line-height: 20px;
-	display: -webkit-box;
-	-webkit-box-orient: vertical;
-	overflow: hidden;
-	text-overflow: ellipsis;
-}
-
-.a-d-b-i-t-btn {
-	font-size: 14px;
-	/* height: 30px; */
-	/* position: relative; */
-	/* top: 5px; */
-	box-sizing: border-box;
-	padding: 8px 25px;
-	/* background-color: #f3f3f3; */
-	border: 1px solid rgba(54, 129, 252, 1);
-	border-radius: 5px;
-	color: rgba(54, 129, 252, 1);
-
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	cursor: pointer;
-	/* position: absolute; */
-	/* right: 10px; */
-	/* top: 10px; */
-}
-.a-d-b-i-t-btn1 {
-	font-size: 14px;
-	box-sizing: border-box;
-	padding: 8px 25px;
-	border: 1px solid rgba(54, 129, 252, 1);
-	border-radius: 5px;
-	background-color: rgba(54, 129, 252, 1);
-	display: flex;
-	color: #fff;
-	justify-content: center;
-	align-items: center;
-	cursor: pointer;
-}
-.a_m_empty{
-	display: flex;
-	width: 100%;
-	justify-content: center;
-	font-size: 14px;
-	color: #555555;
-}
-</style>

+ 0 - 389
src/components/pages/classroomObservation/components/extendAnalysis.vue

@@ -1,389 +0,0 @@
-<template>
-	<div class="analysis">
-		<div class="a-header">
-			<div class="a-h-left" @click.stop="changeShowItem(!showItem)">
-				<span :class="['a-h-l-icon', showItem ? 'a-h-l-showIcon' : '']"></span>
-				<span class="a-h-l-title">{{ title }}</span>
-			</div>
-			<div class="a-h-right">
-				<div class="a-h-r-btn" @click.stop="addTemplate()">
-					<img src="@/assets/icon/classroomObservation/newcon.png" alt="" />
-					添加模块
-				</div>
-			</div>
-		</div>
-		<div class="a-main" v-show="showItem">
-			<analysisItem v-if="analysisItemList.length > 0" v-for="(item,index) in analysisItemList" :key="item.id" :data="item" :tid="tid" :index="index" @delItem="delItem" @editItem="editItem"/>
-			<div class="a_m_empty" v-if="analysisItemList.length == 0">暂无模块...</div>
-		</div>
-	</div>
-</template>
-
-<script>
-import analysisItem from "./analysisItem";
-export default {
-	emits:["delItem","editItem"],
-	props:{
-		analysisItemList:{
-			type:Array,
-			default:()=>{
-				return []
-			}
-		},
-		tid:{
-			type:String,
-			require:true,
-		}
-	},
-	components: {
-		analysisItem,
-	},
-	data(){
-		return{
-			title:"扩展分析",
-			showDialog:false,
-			showItem:true,
-			tagIndex:2,
-			analysisList:[
-				
-			]
-		}
-	},
-	methods: {
-		addTemplate() {
-			this.$emit('updateMessage', this.tagIndex);
-		},
-		changeShowItem(newValue) {
-			this.showItem = newValue;
-		},
-		delItem(id){
-			this.$emit("delItem",id)
-		},
-		editItem(id,_data){
-			this.$emit("editItem",id,_data)
-		},
-	},
-};
-</script>
-
-<style scoped>
-.itemTit {
-	width: 136px;
-	height: 32px;
-	padding: 5px 8px 5px 8px;
-	gap: 8px;
-	opacity: 0px;
-	margin: 20px 0;
-	margin-bottom: 10px;
-	border-bottom: 1px #ccc solid;
-}
-.analysis {
-	width: 100%;
-	height: auto;
-}
-
-.a-header {
-	width: 100%;
-	height: 50px;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	box-sizing: border-box;
-	padding-right: 40px;
-}
-
-.a-h-left {
-	display: flex;
-	align-items: center;
-	cursor: pointer;
-}
-
-.a-h-l-icon {
-	width: 16px;
-	height: 16px;
-	background: url("../../../../assets/icon/classroomObservation/right.png")
-		no-repeat;
-	background-size: 100% 100%;
-	margin-right: 5px;
-	transition: 0.3s;
-}
-
-.a-h-l-showIcon {
-	transform: rotate(90deg);
-}
-
-.a-h-l-title {
-	font-size: 18px;
-}
-
-.a-h-r-btn {
-	font-size: 16px;
-	height: 35px;
-	width: auto;
-	box-sizing: border-box;
-	/* padding: 0 20px; */
-	/* border: solid 1px #C5C5C5; */
-	/* border-radius: 18px; */
-	cursor: pointer;
-	/* background-color: white; */
-	display: flex;
-	color: rgba(54, 129, 252, 1);
-	justify-content: center;
-	align-items: center;
-}
-
-.a-h-r-btn > img {
-	width: 16px;
-	height: 16px;
-	margin-right: 5px;
-}
-
-.a-main {
-	width: calc(100%);
-	height: auto;
-}
-
-.a-dialog {
-	position: fixed;
-	width: 1200px;
-	height: 500px;
-	min-height: 600px;
-	box-shadow: 0px 0 8px 0px #555555;
-	border-radius: 8px;
-	z-index: 999;
-	background-color: #fff;
-	left: 0;
-	right: 0;
-	top: 100px;
-	margin: 0 auto;
-	/* margin: 0 auto; */
-	/* top: 50%; */
-	/* margin: -18% 0 0 -300px; */
-	overflow: hidden;
-}
-
-.a-d-top {
-	/* background: #adadad; */
-	display: flex;
-	flex-direction: row;
-	flex-wrap: nowrap;
-	align-items: center;
-	justify-content: space-between;
-	height: 54px;
-	border-radius: 8px 8px 0 0;
-	user-select: none;
-	border-bottom: 1px #ccc solid;
-}
-.a-d-top >>> .el-input__inner {
-	width: 320px;
-	height: 32px;
-}
-.a-d-top >>> .el-input__icon {
-	line-height: 32px;
-}
-.a-d-topTit {
-	width: 171px;
-	height: 32px;
-	display: flex;
-	align-items: center;
-	font-family: PingFang SC;
-	box-sizing: border-box;
-	padding: 5px;
-	line-height: 22px;
-	justify-content: center;
-	/* text-align: left; */
-}
-.a-d-t-left {
-	width: 200px;
-	height: 100%;
-	display: flex;
-	align-items: center;
-	flex-direction: column;
-	justify-content: flex-start;
-	box-sizing: border-box;
-	padding-left: 5px;
-}
-
-.a-d-t-l-item {
-	/* width: auto;
-	height: 90%;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	padding: 0 10px;
-	border-radius: 10px;
-	background-color: #d4d9da;
-	margin-right: 3px;
-	cursor: pointer; */
-	cursor: pointer;
-	width: 136px;
-	height: 32px;
-	display: flex;
-	align-items: center;
-	border-radius: 5px;
-	font-family: PingFang SC;
-	box-sizing: border-box;
-	padding: 5px;
-	font-size: 14px;
-	font-weight: 600;
-	line-height: 22px;
-	text-align: left;
-	margin-bottom: 20px;
-}
-
-.a-d-t-l-item:hover {
-	background-color: white;
-}
-
-.a-d-t-right {
-	width: 40px;
-	height: 40px;
-	margin-right: 10px;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	color: black !important;
-}
-
-.a-d-t-right > span {
-	width: 25px;
-	height: 25px;
-	border-radius: 25px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	/* align-items: center; */
-	font-size: 22px;
-	color: #fff;
-	/* background-color: #adadad; */
-	cursor: pointer;
-	/* background-color: #e6e6e6; */
-	color: #adadad;
-}
-
-.a-d-box {
-	width: 100%;
-	height: 100%;
-	/* height: calc(100% - 40px); */
-	background-color: #f0f2f5;
-	overflow: auto;
-
-	box-sizing: border-box;
-	padding: 15px;
-	padding-bottom: 50px;
-}
-
-.a-d-b-item {
-	width: 22%;
-	height: 200px;
-	display: flex;
-	flex-direction: column;
-	background-color: #fff;
-	border-radius: 10px;
-	padding: 15px;
-	float: left;
-	box-sizing: border-box;
-	margin-bottom: 10px;
-	/* position: relative; */
-}
-.a-d-b-item:hover .a-d-b-i-bottomBtn {
-	display: block !important;
-}
-.a-d-b-item:hover .a-d-b-i-bottomPer {
-	display: none !important;
-}
-.a-d-b-i-top {
-	width: 100%;
-	/* height: 50%; */
-	height: 20px;
-	margin-bottom: 15px;
-	display: flex;
-	align-items: center;
-	/* justify-content: space-between; */
-}
-.a-d-b-i-top > img {
-	width: 35px;
-	height: 35px;
-}
-/* .a-d-b-i-top>div{ */
-/* width: auto;
-	height: 35px;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	margin-left: 10px; */
-/* } */
-
-.a-d-b-i-t-title {
-	width: 100%;
-	height: 35px;
-	display: block;
-	align-items: center;
-	box-sizing: border-box;
-	padding: 0 10px;
-	text-overflow: ellipsis;
-	overflow: hidden;
-	word-break: break-all;
-	white-space: nowrap;
-	line-height: 35px;
-	/* display: -webkit-box;
-	-webkit-box-orient: vertical;
-	-webkit-line-clamp: 1;
-	overflow: hidden; */
-}
-
-.a-d-b-i-bottom {
-	width: 100%;
-	flex: 1;
-	overflow: hidden;
-	/* max-height: 186px; */
-	font-size: 14px;
-	-webkit-line-clamp: 5;
-	line-height: 20px;
-	display: -webkit-box;
-	-webkit-box-orient: vertical;
-	overflow: hidden;
-	text-overflow: ellipsis;
-}
-
-.a-d-b-i-t-btn {
-	font-size: 14px;
-	/* height: 30px; */
-	/* position: relative; */
-	/* top: 5px; */
-	box-sizing: border-box;
-	padding: 8px 25px;
-	/* background-color: #f3f3f3; */
-	border: 1px solid rgba(54, 129, 252, 1);
-	border-radius: 5px;
-	color: rgba(54, 129, 252, 1);
-
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	cursor: pointer;
-	/* position: absolute; */
-	/* right: 10px; */
-	/* top: 10px; */
-}
-.a-d-b-i-t-btn1 {
-	font-size: 14px;
-	box-sizing: border-box;
-	padding: 8px 25px;
-	border: 1px solid rgba(54, 129, 252, 1);
-	border-radius: 5px;
-	background-color: rgba(54, 129, 252, 1);
-	display: flex;
-	color: #fff;
-	justify-content: center;
-	align-items: center;
-	cursor: pointer;
-}
-.a_m_empty{
-	display: flex;
-	width: 100%;
-	justify-content: center;
-	font-size: 14px;
-	color: #555555;
-}
-</style>

Diferenças do arquivo suprimidas por serem muito extensas
+ 154 - 625
src/components/pages/classroomObservation/components/messageArea.vue


+ 0 - 389
src/components/pages/classroomObservation/components/scienceAnalysis.vue

@@ -1,389 +0,0 @@
-<template>
-	<div class="analysis">
-		<div class="a-header">
-			<div class="a-h-left" @click.stop="changeShowItem(!showItem)">
-				<span :class="['a-h-l-icon', showItem ? 'a-h-l-showIcon' : '']"></span>
-				<span class="a-h-l-title">{{ title }}</span>
-			</div>
-			<div class="a-h-right">
-				<div class="a-h-r-btn" @click.stop="addTemplate()">
-					<img src="@/assets/icon/classroomObservation/newcon.png" alt="" />
-					添加模块
-				</div>
-			</div>
-		</div>
-		<div class="a-main" v-show="showItem">
-			<analysisItem v-if="analysisItemList.length > 0" v-for="(item,index) in analysisItemList" :key="item.id" :data="item" :tid="tid" :index="index" @delItem="delItem" @editItem="editItem"/>
-			<div class="a_m_empty" v-if="analysisItemList.length == 0">暂无模块...</div>
-		</div>
-	</div>
-</template>
-
-<script>
-import analysisItem from "./analysisItem";
-export default {
-	emits:["delItem","editItem"],
-	props:{
-		analysisItemList:{
-			type:Array,
-			default:()=>{
-				return []
-			}
-		},
-		tid:{
-			type:String,
-			require:true,
-		}
-	},
-	components: {
-		analysisItem,
-	},
-	data() {
-		return {
-			title: "科学课堂分析",
-			showDialog: false,
-			showItem: true,
-			tagIndex: 1,
-			analysisList: [
-			
-			],
-		};
-	},
-	methods: {
-		addTemplate() {
-			this.$emit('updateMessage', this.tagIndex);
-		},
-		changeShowItem(newValue) {
-			this.showItem = newValue;
-		},
-		delItem(id){
-			this.$emit("delItem",id)
-		},
-		editItem(id,_data){
-			this.$emit("editItem",id,_data)
-		},
-	},
-};
-</script>
-
-<style scoped>
-.itemTit {
-	width: 136px;
-	height: 32px;
-	padding: 5px 8px 5px 8px;
-	gap: 8px;
-	opacity: 0px;
-	margin: 20px 0;
-	margin-bottom: 10px;
-	border-bottom: 1px #ccc solid;
-}
-.analysis {
-	width: 100%;
-	height: auto;
-}
-
-.a-header {
-	width: 100%;
-	height: 50px;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	box-sizing: border-box;
-	padding-right: 40px;
-}
-
-.a-h-left {
-	display: flex;
-	align-items: center;
-	cursor: pointer;
-}
-
-.a-h-l-icon {
-	width: 16px;
-	height: 16px;
-	background: url("../../../../assets/icon/classroomObservation/right.png")
-		no-repeat;
-	background-size: 100% 100%;
-	margin-right: 5px;
-	transition: 0.3s;
-}
-
-.a-h-l-showIcon {
-	transform: rotate(90deg);
-}
-
-.a-h-l-title {
-	font-size: 18px;
-}
-
-.a-h-r-btn {
-	font-size: 16px;
-	height: 35px;
-	width: auto;
-	box-sizing: border-box;
-	/* padding: 0 20px; */
-	/* border: solid 1px #C5C5C5; */
-	/* border-radius: 18px; */
-	cursor: pointer;
-	/* background-color: white; */
-	display: flex;
-	color: rgba(54, 129, 252, 1);
-	justify-content: center;
-	align-items: center;
-}
-
-.a-h-r-btn > img {
-	width: 16px;
-	height: 16px;
-	margin-right: 5px;
-}
-
-.a-main {
-	width: calc(100%);
-	height: auto;
-}
-
-.a-dialog {
-	position: fixed;
-	width: 1200px;
-	height: 500px;
-	min-height: 600px;
-	box-shadow: 0px 0 8px 0px #555555;
-	border-radius: 8px;
-	z-index: 999;
-	background-color: #fff;
-	left: 0;
-	right: 0;
-	top: 100px;
-	margin: 0 auto;
-	/* margin: 0 auto; */
-	/* top: 50%; */
-	/* margin: -18% 0 0 -300px; */
-	overflow: hidden;
-}
-
-.a-d-top {
-	/* background: #adadad; */
-	display: flex;
-	flex-direction: row;
-	flex-wrap: nowrap;
-	align-items: center;
-	justify-content: space-between;
-	height: 54px;
-	border-radius: 8px 8px 0 0;
-	user-select: none;
-	border-bottom: 1px #ccc solid;
-}
-.a-d-top >>> .el-input__inner {
-	width: 320px;
-	height: 32px;
-}
-.a-d-top >>> .el-input__icon {
-	line-height: 32px;
-}
-.a-d-topTit {
-	width: 171px;
-	height: 32px;
-	display: flex;
-	align-items: center;
-	font-family: PingFang SC;
-	box-sizing: border-box;
-	padding: 5px;
-	line-height: 22px;
-	justify-content: center;
-	/* text-align: left; */
-}
-.a-d-t-left {
-	width: 200px;
-	height: 100%;
-	display: flex;
-	align-items: center;
-	flex-direction: column;
-	justify-content: flex-start;
-	box-sizing: border-box;
-	padding-left: 5px;
-}
-
-.a-d-t-l-item {
-	/* width: auto;
-	height: 90%;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	padding: 0 10px;
-	border-radius: 10px;
-	background-color: #d4d9da;
-	margin-right: 3px;
-	cursor: pointer; */
-	cursor: pointer;
-	width: 136px;
-	height: 32px;
-	display: flex;
-	align-items: center;
-	border-radius: 5px;
-	font-family: PingFang SC;
-	box-sizing: border-box;
-	padding: 5px;
-	font-size: 14px;
-	font-weight: 600;
-	line-height: 22px;
-	text-align: left;
-	margin-bottom: 20px;
-}
-
-.a-d-t-l-item:hover {
-	background-color: white;
-}
-
-.a-d-t-right {
-	width: 40px;
-	height: 40px;
-	margin-right: 10px;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	color: black !important;
-}
-
-.a-d-t-right > span {
-	width: 25px;
-	height: 25px;
-	border-radius: 25px;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	/* align-items: center; */
-	font-size: 22px;
-	color: #fff;
-	/* background-color: #adadad; */
-	cursor: pointer;
-	/* background-color: #e6e6e6; */
-	color: #adadad;
-}
-
-.a-d-box {
-	width: 100%;
-	height: 100%;
-	/* height: calc(100% - 40px); */
-	background-color: #f0f2f5;
-	overflow: auto;
-
-	box-sizing: border-box;
-	padding: 15px;
-	padding-bottom: 50px;
-}
-
-.a-d-b-item {
-	width: 22%;
-	height: 200px;
-	display: flex;
-	flex-direction: column;
-	background-color: #fff;
-	border-radius: 10px;
-	padding: 15px;
-	float: left;
-	box-sizing: border-box;
-	margin-bottom: 10px;
-	/* position: relative; */
-}
-.a-d-b-item:hover .a-d-b-i-bottomBtn {
-	display: block !important;
-}
-.a-d-b-item:hover .a-d-b-i-bottomPer {
-	display: none !important;
-}
-.a-d-b-i-top {
-	width: 100%;
-	/* height: 50%; */
-	height: 20px;
-	margin-bottom: 15px;
-	display: flex;
-	align-items: center;
-	/* justify-content: space-between; */
-}
-.a-d-b-i-top > img {
-	width: 35px;
-	height: 35px;
-}
-/* .a-d-b-i-top>div{ */
-/* width: auto;
-	height: 35px;
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	margin-left: 10px; */
-/* } */
-
-.a-d-b-i-t-title {
-	width: 100%;
-	height: 35px;
-	display: block;
-	align-items: center;
-	box-sizing: border-box;
-	padding: 0 10px;
-	text-overflow: ellipsis;
-	overflow: hidden;
-	word-break: break-all;
-	white-space: nowrap;
-	line-height: 35px;
-	/* display: -webkit-box;
-	-webkit-box-orient: vertical;
-	-webkit-line-clamp: 1;
-	overflow: hidden; */
-}
-
-.a-d-b-i-bottom {
-	width: 100%;
-	flex: 1;
-	overflow: hidden;
-	/* max-height: 186px; */
-	font-size: 14px;
-	-webkit-line-clamp: 5;
-	line-height: 20px;
-	display: -webkit-box;
-	-webkit-box-orient: vertical;
-	overflow: hidden;
-	text-overflow: ellipsis;
-}
-
-.a-d-b-i-t-btn {
-	font-size: 14px;
-	/* height: 30px; */
-	/* position: relative; */
-	/* top: 5px; */
-	box-sizing: border-box;
-	padding: 8px 25px;
-	/* background-color: #f3f3f3; */
-	border: 1px solid rgba(54, 129, 252, 1);
-	border-radius: 5px;
-	color: rgba(54, 129, 252, 1);
-
-	display: flex;
-	justify-content: center;
-	align-items: center;
-	cursor: pointer;
-	/* position: absolute; */
-	/* right: 10px; */
-	/* top: 10px; */
-}
-.a-d-b-i-t-btn1 {
-	font-size: 14px;
-	box-sizing: border-box;
-	padding: 8px 25px;
-	border: 1px solid rgba(54, 129, 252, 1);
-	border-radius: 5px;
-	background-color: rgba(54, 129, 252, 1);
-	display: flex;
-	color: #fff;
-	justify-content: center;
-	align-items: center;
-	cursor: pointer;
-}
-.a_m_empty{
-	display: flex;
-	width: 100%;
-	justify-content: center;
-	font-size: 14px;
-	color: #555555;
-}
-</style>

+ 2 - 0
src/components/pages/classroomObservation/components/startPage.vue

@@ -79,6 +79,7 @@ export default {
 
 .sp-introduce {
 	width: 100%;
+	min-height: 116px;
 	height: 116px;
 	background-color: #e2eeff;
 	display: flex;
@@ -162,6 +163,7 @@ export default {
 	box-sizing: border-box;
 	padding: 20px;
 	border-radius: 10px;
+	cursor: pointer;
 }
 .sp-m-item1 {
 	font-family: PingFang SC;

Diferenças do arquivo suprimidas por serem muito extensas
+ 558 - 440
src/components/pages/classroomObservation/components/tape.vue


+ 1 - 0
src/components/pages/classroomObservation/components/transcription.vue

@@ -67,6 +67,7 @@ export default {
 .transcription {
 	width: 100%;
 	height: 100%;
+	max-height: calc(100% - 290px);
 	/* display: flex; */
 	/* flex-direction: column; */
 	/* overflow: auto; */

+ 49 - 39
src/components/pages/classroomObservation/index.vue

@@ -37,7 +37,7 @@
 				<div class="co-h2-r-btn2" @click.stop="preview()">
 					<!-- <span class="co-h2-r-b-icon2"></span> -->
 					<img
-						src="../../../assets/icon/classroomObservation/daoChu.png"
+						src="../../../assets/icon/classroomObservation/Syan.png"
 						alt=""
 					/>
 					<!-- <div>预览</div> -->
@@ -45,7 +45,7 @@
 				<div class="co-h2-r-btn2" @click.stop="share()">
 					<!-- <span class="co-h2-r-b-icon3"></span> -->
 					<img
-						src="../../../assets/icon/classroomObservation/Syan.png"
+						src="../../../assets/icon/classroomObservation/daoChu.png"
 						alt=""
 					/>
 					<!-- <div>分享</div> -->
@@ -54,10 +54,10 @@
 		</div>
 		<div class="co-main">
 			<div class="co-m-left">
-				<chatArea :tid="tid"/>
+				<chatArea :tid="tid" @updateFileId="updateFileId" :fileIdid="fileIdid"/>
 			</div>
 			<div class="co-m-right">
-				<messageArea :tid="tid" ref="messageAreaRef"/>
+				<messageArea :tid="tid" :fileId="fileId" ref="messageAreaRef" @updateFileId="updateFileId"  @updateFileIdid="updateFileIdid"/>
 			</div>
 		</div>
 	</div>
@@ -78,6 +78,8 @@ export default {
 			title: "12月19日会议录音",
 			loading: false,
 			tid:'03',
+			fileId:"",
+			fileIdid:"",
 			optionData:[
 				{label:"03课程",value:'03'},
 				{label:"04课程",value:'04'},
@@ -93,53 +95,61 @@ export default {
 				this.$refs.messageAreaRef.getData();
 			})
 		},
+		updateFileId(newValue){
+			this.fileId = newValue;
+		},
+		updateFileIdid(newValue){
+			this.fileIdid = newValue;
+		},
 		// 跳转
 		goTo(path) {
 			this.$message.info(`去到:${path}`);
 		},
 		// 生成报告
 		getReport() {
-			let assistant_title = [
-				"课堂观察",
-				"教学阶段九事件分析",
-				"OMO智慧课堂分析",
-				"布鲁姆问题分类",
-				"麦克锡问题分类",
-				"学生回答统计",
-				"课堂活动类型",
-				"素养目标分析",
-				"科学教育目标分析",
-				"5E课程改编",
-				"5EX课程改编",
-				"UTOP课程观察",
-				"RST模型",
-				"RTOP模型",
-				"课堂质量评价",
-				"scop课堂观察",
-				"rtop课堂观察",
-			]
-			let _index = 0;
-			let _this = this;
-			function addValue(){
-				_this.$refs.messageAreaRef.addAnalysisItem({title:assistant_title[_index]}).then(_=>{
-					_index+=1;
-					if(_index<assistant_title.length){
-							addValue()
-					}
-				}).catch(_=>{
-					_index+=1;
-					if(_index<assistant_title.length){
-						addValue()
-					}
-				})
-			}
-			addValue()
+			this.$refs.messageAreaRef.getReport()
+			// let assistant_title = [
+			// 	"课堂观察",
+			// 	"教学阶段九事件分析",
+			// 	"OMO智慧课堂分析",
+			// 	"布鲁姆问题分类",
+			// 	"麦克锡问题分类",
+			// 	"学生回答统计",
+			// 	"课堂活动类型",
+			// 	"素养目标分析",
+			// 	"科学教育目标分析",
+			// 	"5E课程改编",
+			// 	"5EX课程改编",
+			// 	"UTOP课程观察",
+			// 	"RST模型",
+			// 	"RTOP模型",
+			// 	"课堂质量评价",
+			// 	"scop课堂观察",
+			// 	"rtop课堂观察",
+			// ]
+			// let _index = 0;
+			// let _this = this;
+			// function addValue(){
+			// 	_this.$refs.messageAreaRef.addAnalysisItem({title:assistant_title[_index]}).then(_=>{
+			// 		_index+=1;
+			// 		if(_index<assistant_title.length){
+			// 				addValue()
+			// 		}
+			// 	}).catch(_=>{
+			// 		_index+=1;
+			// 		if(_index<assistant_title.length){
+			// 			addValue()
+			// 		}
+			// 	})
+			// }
+			// addValue()
 		},
 		//预览
 		preview() {
 			window.parent.postMessage(
 				{
 					tools: "classroom_observation_board",
+					type:this.tid,
 				},
 				"*"
 			);

+ 99 - 13
src/components/pages/course.vue

@@ -204,7 +204,7 @@
               <!-- v-if="item.isCourseType == 2 || groupA == 1" -->
               <div class="kc_t">
                 <span>{{ item.uname }}</span>
-                <span>{{ item.state == 1 ? '阶段模式' : item.state == 2 ? '任务模式' : '极简模式' }}</span>
+                <span>{{ item.state == 1 ? '阶段模式' : item.state == 2 ? '任务模式' :  item.state == 3 ? '极简模式' : 'AI模式' }}</span>
               </div>
               <div class="kc_time">
                 <span style="color: #717C8D">创建日期:</span>{{ item.time }}
@@ -214,10 +214,67 @@
               </div>
             </div>
             <div class="three_bottom">
-              <!-- v-if="role == '1'" -->
-              <div @click="get(item)">预览</div>
+							<el-tooltip effect="dark" content="预览" placement="top">
+    					  <div class="t_b_Item" @click="get(item)">
+									<img src="../../assets/icon/course/lookeye.svg">
+								</div>
+    					</el-tooltip>
+
+							<el-tooltip effect="dark" content="复制" placement="top">
+    					  <div class="t_b_Item" @click="copyCourse(item.courseId)">
+									<img src="../../assets/icon/course/copy.svg">
+								</div>
+    					</el-tooltip>
+
+							<el-tooltip effect="dark" content="修改" placement="top">
+    					  <div class="t_b_Item" v-if="((item.userid == userid) ||
+                (item.course_teacher &&
+                  item.course_teacher.indexOf(userid) !== -1) || role == '1') &&
+                item.state == 1
+                " @click="goToCourse(item.courseId)">
+									<img src="../../assets/icon/course/edit.svg">
+								</div>
+
+								<div class="t_b_Item" v-if="((item.userid == userid) ||
+                (item.course_teacher &&
+                  item.course_teacher.indexOf(userid) !== -1) || role == '1') &&
+                item.state == 2
+                "  @click="goToCourse(item.courseId)">
+									<img src="../../assets/icon/course/edit.svg">
+								</div>
+
+								<div class="t_b_Item" v-if="((item.userid == userid) ||
+                (item.course_teacher &&
+                  item.course_teacher.indexOf(userid) !== -1) || role == '1') &&
+                item.state == 3
+                " @click="goToCourse3(item.courseId)">
+									<img src="../../assets/icon/course/edit.svg">
+								</div>
+                <div class="t_b_Item" v-if="((item.userid == userid) ||
+                (item.course_teacher &&
+                  item.course_teacher.indexOf(userid) !== -1) || role == '1') &&
+                item.state == 4
+                " @click="goToCourse5(item.courseId)">
+									<img src="../../assets/icon/course/edit.svg">
+								</div>
+    					</el-tooltip>
+
+							<el-tooltip effect="dark" content="删除" placement="top">
+    					  <div class="t_b_Item" @click="deleteCourse(item.courseId)">
+									<img src="../../assets/icon/course/del.svg">
+								</div>
+    					</el-tooltip>
+
+							<el-tooltip effect="dark" content="分享" placement="top">
+    					  <div class="t_b_Item" @click="shareCourse(item.courseId)">
+									<img src="../../assets/icon/course/share.svg">
+								</div>
+    					</el-tooltip>
+
+							<!-- v-if="role == '1'" -->
+              <!-- <div @click="get(item)">预览</div> -->
               <!-- <div @click="jump(item.courseId)" v-else>评课</div> -->
-              <div v-if="((item.userid == userid) ||
+              <!-- <div v-if="((item.userid == userid) ||
                 (item.course_teacher &&
                   item.course_teacher.indexOf(userid) !== -1) || role == '1') &&
                 item.state == 1
@@ -237,7 +294,7 @@
                 item.state == 3
                 " @click="goToCourse3(item.courseId)">
                 修改
-              </div>
+              </div> -->
               <!-- <div v-if="groupA == '0'" @click="
                 goTo(
                   '/works?cid=' +
@@ -254,12 +311,12 @@
                 ">
                 评价
               </div> -->
-              <div @click="copyCourse(item.courseId)">
+              <!-- <div @click="copyCourse(item.courseId)">
                 复制
               </div>
               <div v-if="item.isCourseType == 1 || role == '1'" @click="deleteCourse(item.courseId)">
                 删除
-              </div>
+              </div> -->
               <!-- <div class="more">
                 <span style="font-size: 18px; font-weight: 700">...</span>
                 <div>
@@ -334,6 +391,7 @@
         <el-button @click="dialogVisibleCourse = false">关 闭</el-button>
       </span>
     </el-dialog>
+		<shareDialog ref="shareDialogRef"/>
   </div>
 </template>
 
@@ -341,8 +399,9 @@
 import "../../common/aws-sdk-2.235.1.min";
 import EditorBar from "../../components/tools/wangEnduit";
 import CourseProblem from "./components/courseProblem";
+import shareDialog from './dialog/shareDialog.vue'
 export default {
-  components: { EditorBar, CourseProblem },
+  components: { EditorBar, CourseProblem,shareDialog },
   data() {
     return {
       itemCount: 1,
@@ -396,6 +455,10 @@ export default {
     };
   },
   methods: {
+		// 分析按钮
+		shareCourse(courseId){
+			this.$refs.shareDialogRef.open(courseId)
+		},
     change(val) {
       console.log(val);
     },
@@ -1601,7 +1664,8 @@ export default {
 .three_bottom {
   display: flex;
   flex-direction: row;
-  justify-content: space-around;
+  /* justify-content: space-around; */
+	justify-content: flex-end;
   height: 45px;
   align-items: center;
   background: #fff;
@@ -1610,7 +1674,29 @@ export default {
   box-sizing: border-box;
 }
 
-.three_bottom>div {
+.t_b_Item{
+	width: 30px;
+	height: 30px;
+	background-color: white;
+	border-radius: 2px;
+	display: flex;
+	justify-content: center;
+	align-items: center;
+	transition: .3s;
+	margin-right: 10px;
+	cursor: pointer;
+}
+
+.t_b_Item:hover{
+	background-color: #E8E8E8;
+}
+
+.t_b_Item>img{
+	width: 80%;
+	height: 80%;
+}
+
+/* .three_bottom>div {
   cursor: pointer;
   width: 100%;
   text-align: center;
@@ -1618,12 +1704,12 @@ export default {
 
 .three_bottom>div+div {
   border-left: 1px solid #ddd;
-}
+} */
 
-.three_bottom>div:hover {
+/* .three_bottom>div:hover {
   color: #3681FC;
   font-weight: bold;
-}
+} */
 
 .three_bottom .deleteB {
   color: #E96E6E;

+ 477 - 0
src/components/pages/dialog/shareDialog.vue

@@ -0,0 +1,477 @@
+<template>
+  <div>
+    <el-dialog
+      title="分享设置"
+      :visible.sync="dialogVisible"
+      width="600px"
+      v-loading="loading"
+    >
+      <!-- <div class="shareContent">
+        <div class="sc_formItemDate">
+          <div>有效期:</div>
+          <el-radio
+            class="sc_fd_radio"
+            :disabled="form.id ? true : false"
+            v-model="date"
+            label="7"
+            >7天</el-radio
+          >
+          <el-radio
+            class="sc_fd_radio"
+            :disabled="form.id ? true : false"
+            v-model="date"
+            label="31"
+            >31天</el-radio
+          >
+          <el-radio
+            class="sc_fd_radio"
+            :disabled="form.id ? true : false"
+            v-model="date"
+            label="0"
+            >永久有效</el-radio
+          >
+        </div>
+
+        <div class="sc_formAuthorityItem">
+          <el-switch
+            class="sc_fai_switch"
+            :disabled="form.id ? true : false"
+            v-model="form.setPassword"
+            active-text="密码设置"
+          >
+          </el-switch>
+          <el-input
+            class="sc_fai_input"
+            :disabled="!form.setPassword || form.id ? true : false"
+            placeholder="请输入密码"
+            v-model="form.password"
+          ></el-input>
+          <span>仅支持数字及英文字母</span>
+        </div>
+
+        <div class="sc_formAuthorityItem">
+          <el-switch
+            class="sc_fai_switch"
+            :disabled="form.id ? true : false"
+            v-model="form.setStudentLook"
+            active-text="查看学生作业权限"
+          >
+          </el-switch>
+          <el-radio
+            class="sc_fai_radio"
+            :disabled="!form.setStudentLook || form.id ? true : false"
+            v-model="form.studentLook"
+            label="0"
+            >显示学生姓名</el-radio
+          >
+          <el-radio
+            class="sc_fai_radio"
+            :disabled="!form.setStudentLook || form.id ? true : false"
+            v-model="form.studentLook"
+            label="1"
+            >不显示学生真实姓名</el-radio
+          >
+        </div>
+
+        <div class="sc_formAuthorityItem">
+          <el-switch
+            class="sc_fai_switch"
+            :disabled="form.id ? true : false"
+            v-model="form.setComment"
+            active-text="评论权限"
+          >
+          </el-switch>
+          <el-radio
+            class="sc_fai_radio"
+            :disabled="!form.setComment || form.id ? true : false"
+            v-model="form.comment"
+            label="0"
+            >组织内人员</el-radio
+          >
+          <el-radio
+            class="sc_fai_radio"
+            :disabled="!form.setComment || form.id ? true : false"
+            v-model="form.comment"
+            label="1"
+            >所有人(包括游客用户)</el-radio
+          >
+        </div>
+
+        <div class="sc_formAuthorityItem">
+          <el-switch
+            class="sc_fai_switch"
+            :disabled="form.id ? true : false"
+            v-model="form.setDownload"
+            active-text="课程资源下载权限"
+          >
+          </el-switch>
+          <el-radio
+            class="sc_fai_radio"
+            :disabled="!form.setDownload || form.id ? true : false"
+            v-model="form.download"
+            label="0"
+            >组织内人员</el-radio
+          >
+          <el-radio
+            class="sc_fai_radio"
+            :disabled="!form.setDownload || form.id ? true : false"
+            v-model="form.download"
+            label="1"
+            >所有人(包括游客用户)</el-radio
+          >
+        </div>
+
+        <div class="sc_formAuthorityItem">
+          <el-switch
+            class="sc_fai_switch"
+            :disabled="form.id ? true : false"
+            v-model="form.setHomeWorkUpload"
+            active-text="作业上传权限"
+          >
+          </el-switch>
+          <span>仅组织内成员可使用工具上传内容</span>
+        </div>
+      </div> -->
+
+      <div class="sc_formUrl" v-show="form.url">
+        <el-input
+          class="sc_fu_input"
+          style="color: black"
+          disabled
+          v-model="form.url"
+        >
+          <template slot="append"
+            ><div class="sc_fu_copyBtn" @click.stop="copyUrl()">
+              复制链接
+            </div></template
+          >
+        </el-input>
+        <div class="qrcode" ref="qrCodeRef"></div>
+				<el-link class="qrcodeBtn" type="primary" @click="downloadQrCode()">下载二维码</el-link>
+      </div>
+      <span slot="footer" class="shareFooter">
+        <el-button @click="close()">取 消</el-button>
+        <!-- <el-button type="primary" v-if="!form.id" @click="generate()"
+					>生成</el-button
+				>
+				<el-button type="primary" v-else @click="resetGenerate()"
+					>重置生成</el-button
+				> -->
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import QRCode from "qrcodejs2";
+export default {
+  data() {
+    return {
+      dialogVisible: false,
+      loading: false,
+      date: "0",
+      courseId: "",
+      form: {
+        setPassword: false,
+        password: "",
+        setStudentLook: false,
+        studentLook: "1",
+        setComment: false,
+        comment: "1",
+        setDownload: false,
+        download: "1",
+        setHomeWorkUpload: false,
+        url: ""
+      }
+    };
+  },
+  watch: {
+    "form.url"(newValue) {
+      this.$nextTick(() => {
+        this.$refs.qrCodeRef.innerHTML = "";
+        if (!newValue) return;
+        new QRCode(this.$refs.qrCodeRef, {
+          text: `https://beta.cloud.cocorobo.cn/#/?shareCourseId=${this.courseId}`, // 需要转换为二维码的内容
+          width: 100,
+          height: 100,
+          colorDark: "#000000",
+          colorLight: "#ffffff",
+          correctLevel: QRCode.CorrectLevel.H
+        });
+      });
+    }
+  },
+  methods: {
+    open(courseId) {
+      this.courseId = courseId;
+      this.dialogVisible = true;
+      this.form.id = "default";
+      this.form.url = `https://beta.cloud.cocorobo.cn/#/?shareCourseId=${this.courseId}`;
+      // this.getData();
+    },
+    close() {
+      this.dialogVisible = false;
+      this.form = {
+        setPassword: false,
+        password: "",
+        setStudentLook: false,
+        studentLook: "1",
+        setComment: false,
+        comment: "1",
+        setDownload: false,
+        download: "1",
+        setHomeWorkUpload: false,
+        url: ""
+      };
+      this.date = "0";
+      this.courseId = "";
+    },
+    generate() {
+      if (!this.courseId) return this.$message.error("错误:无课程ID");
+      if (this.loading) return;
+      this.loading = true;
+      if (this.form.setPassword) {
+        // 判断密码是否没输入
+        if (!this.form.password) {
+          this.loading = false;
+          return this.$message.error("请输入密码");
+        }
+        // 判断密码是否符合规则
+        const reg = /^[A-Za-z0-9]+$/;
+        if (!reg.test(this.form.password)) {
+          this.loading = false;
+          return this.$message.error("密码仅支持数字及英文字母");
+        }
+      }
+      this.form.url = `https://beta.cloud.cocorobo.cn/#/?shareCourseId=${this.courseId}`;
+      let pram = [
+        {
+          cid: this.courseId,
+          jsonData: JSON.stringify(this.form),
+          date: this.date,
+          type: 1
+        }
+      ];
+      this.ajax
+        .post(this.$store.state.api + "addShareCourse", pram)
+        .then(res => {
+          if (res.data == 1) {
+            this.$message.success("生成成功");
+          } else {
+            this.$message.error("生成失败");
+          }
+          this.getData();
+        })
+        .catch(err => {
+          console.log(err);
+          this.$message.error("生成失败");
+          this.getData();
+          this.loading = false;
+        });
+
+      // this.$message.success("生成成功");
+      this.loading = false;
+    },
+    resetGenerate() {
+      this.$confirm("此操作将重置分享链接, 是否继续?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        this.loading = true;
+        let pram = [
+          {
+            cid: this.courseId,
+            type: 1
+          }
+        ];
+        this.ajax
+          .post(this.$store.state.api + "delShareCourse", pram)
+          .then(res => {
+            if (res.data == 1) {
+              this.$message.success("重置成功");
+            } else {
+              this.$message.error("重置失败");
+            }
+            this.getData();
+          })
+          .catch(err => {
+            console.log(err);
+            this.$message.error("重置失败");
+            this.getData();
+            this.loading = false;
+          });
+        // this.form = {
+        // 	setPassword: false,
+        // 	password: "",
+        // 	setStudentLook: false,
+        // 	studentLook: "1",
+        // 	setComment: false,
+        // 	comment: "1",
+        // 	setDownload: false,
+        // 	download: "1",
+        // 	setHomeWorkUpload: false,
+        // 	url: "",
+        // };
+        // this.date = "0";
+        // this.$message.success('重置成功')
+      });
+    },
+    copyUrl() {
+      if (!this.form.url) {
+        return this.$message.info("请先生成链接");
+      }
+      const input = document.createElement("input");
+      // 设置 display为none会导致无法复制
+      // input.style.display = "none";
+      // 所以只能用其他方法隐藏
+      input.style.opacity = 0;
+      // 为了不影响布局
+      input.style.position = "fixed";
+      input.style.left = "-100%";
+      input.style.top = "-100%";
+      input.value = this.form.url;
+      document.body.appendChild(input);
+      input.select();
+      const success = document.execCommand("copy");
+      document.body.removeChild(input);
+      if (!success) {
+        return this.$message.error("复制失败");
+      } else {
+        return this.$message.success("复制成功");
+      }
+    },
+    getData() {
+      this.form = {
+        setPassword: false,
+        password: "",
+        setStudentLook: false,
+        studentLook: "1",
+        setComment: false,
+        comment: "1",
+        setDownload: false,
+        download: "1",
+        setHomeWorkUpload: false,
+        url: ""
+      };
+      this.date = "0";
+      this.loading = true;
+      // 这里查询数据库是否有数据
+      this.ajax
+        .get(this.$store.state.api + "getShareCourse", {
+          cid: this.courseId,
+          type: 1
+        })
+        .then(res => {
+          let _data = res.data[0];
+          if (_data.length == 0) return (this.loading = false);
+          let jsonData = _data[0].json ? JSON.parse(_data[0].json) : {};
+          this.form = { ...jsonData, id: _data[0].id };
+          this.date = _data[0].time;
+          this.loading = false;
+        })
+        .catch(err => {
+          this.loading = false;
+          console.error(err);
+        });
+    },
+		downloadQrCode(){
+			let canvas = this.$refs.qrCodeRef.getElementsByTagName('canvas')[0];
+			let ctx = canvas.getContext('2d');
+
+			// 创建一个新的canvas,大小为原来的两倍
+			var newCanvas = document.createElement("canvas");
+			newCanvas.width = canvas.width * 2;
+			newCanvas.height = canvas.height * 2;
+
+			// 获取新canvas的context,并绘制原来的canvas到新canvas上
+			var newCtx = newCanvas.getContext("2d");
+			newCtx.drawImage(canvas, 0, 0, newCanvas.width, newCanvas.height);
+
+			// 创建一个链接来下载图片
+			var link = document.createElement("a");
+			link.download = "课程分享二维码.png";
+			link.href = newCanvas.toDataURL();
+			link.click();
+		}
+  }
+};
+</script>
+
+<style scoped>
+.shareContent {
+  width: 600px;
+  max-width: 600px;
+  height: auto;
+}
+
+.shareFooter {
+  display: flex;
+  justify-content: flex-end;
+}
+
+.sc_formItemDate {
+  width: 100%;
+  height: auto;
+  display: flex;
+  align-items: center;
+  margin: 10px 0;
+}
+
+.sc_fd_radio {
+  margin-left: 55px;
+}
+
+.sc_formAuthorityItem {
+  margin-top: 30px;
+  margin-bottom: 20px;
+}
+
+.sc_formAuthorityItem > span {
+  font-size: 14px;
+  color: #7f7f7f;
+  margin-left: 20px;
+}
+
+.sc_fai_switch {
+  width: 190px;
+}
+
+.sc_fai_input {
+  width: 120px;
+  text-align: center;
+  margin-left: 20px;
+}
+
+.sc_fai_radio {
+  width: 120px;
+  margin-left: 20px;
+}
+.sc_fu_copyBtn {
+  color: black;
+  cursor: pointer;
+}
+
+.qrcode {
+  width: 100px;
+  height: 100px;
+  margin-top: 20px;
+}
+
+.sc_fu_input /deep/.el-input__inner {
+  color: black !important;
+  cursor: text !important;
+}
+
+.sc_fu_input >>> .el-input__inner {
+  color: black !important;
+  cursor: text !important;
+}
+
+.qrcodeBtn{
+	width: 100px;
+	display: flex;
+	justify-content: center;
+	margin-top: 10px;
+}
+</style>

+ 1 - 1
src/components/pages/testPerson/test/trActivity.vue

@@ -36,7 +36,7 @@
                 <div class="i_course_header">
                     <span :class="{ active: item.bool }" @click="checkBool(index)"></span>
                     <el-tooltip :content="item.title" placement="top" effect="dark">
-                        <span style="width: 350px;">{{ item.title }}</span>
+                        <span style="width: 350px;font-size: 18px;font-weight: 600;">{{ item.title }}</span>
                     </el-tooltip>
                     <el-tooltip :content="item.name" placement="top" effect="dark">
                         <span style="width: 100px;">{{ item.name }}</span>

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff