Forráskód Böngészése

Merge branch 'develop6.0-tmd' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop6.0-tmd

zhouj1203@hotmail.com 3 éve
szülő
commit
42774cfbbe

+ 45 - 7
TEAMModelOS.FunctionV4/HttpTrigger/ScsYxptApis.cs

@@ -510,8 +510,20 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
 
             List<ScTeacher> scTeachers= await  _azureStorage.FindListByDict<ScTeacher>(new Dictionary<string, object> { { "PartitionKey", "ScTeacher" },{ "schoolCode",$"{school}" } });
             List<ScTeacherDiagnosis> scTeacherDiagnoses = await _azureStorage.FindListByDict<ScTeacherDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScTeacherDiagnosis" }, { "schoolCode", $"{school}" } });
+           
+
+            
+            List<KeyValuePair<TeacherTrain, string>> trainsNO = new List<KeyValuePair<TeacherTrain, string>>();
+            List<PushFail> fails = new List<PushFail>();
             //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation
             List<TeacherTrain> trains53112OK = new List<TeacherTrain>();
+            ScsResult UpdateTeacherListSituation = null;
+            Dictionary<string, object> parameterContent53112 = new Dictionary<string, object>();
+            List<Dictionary<string, object>> list53112 = new List<Dictionary<string, object>>();
+            parameterContent53112.Add("TrainComID", config.trainComID);
+            parameterContent53112.Add("List", list53112);
+
+
 
             //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis
             List<TeacherTrain> trains53113OK = new List<TeacherTrain>();
@@ -521,12 +533,6 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
 
             //5.3.1.22学员校本教研PDF(每人可以返回多条)批量回写-UploadSBTARPDFListV2
             List<TeacherTrain> trains53122OK = new List<TeacherTrain>();
-            List<KeyValuePair<TeacherTrain, string>> trainsNO = new List<KeyValuePair<TeacherTrain, string>>();
-            List<PushFail> fails = new List<PushFail>();
-
-            ScsResult UpdateTeacherListSituation = null;
-            Dictionary<string, object> parameterContent53112 = new Dictionary<string, object>();
-            List<Dictionary<string, object>> list53112 = new List<Dictionary<string, object>>();
 
             trains.ForEach(x => {
                 List<KeyValuePair<string, string>> msgs = new List<KeyValuePair<string, string>>();
@@ -542,7 +548,39 @@ namespace TEAMModelOS.FunctionV4.HttpTrigger
                     if (t53112OK == 1)
                     {
                         Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
-
+                        parameterMapData.Add("PXID", $"{t.PXID}");
+                        parameterMapData.Add("TID", $"{t.TID}");
+                        parameterMapData.Add("TeacherName", $"{t.TeacherName}");
+                        parameterMapData.Add("CourseHour", $"{x.totalTime}");
+                        parameterMapData.Add("ResearchText", $"{x.summary}");
+                        /// <summary>
+                        ///省上标准  最终结果 0未认定,1合格,2优秀,3不合格,4其他
+                        ///系统标准 -2 其他 -1 未认定,0不合格,1合格,2优秀
+                        /// </summary>
+                        string ComPassed = "0";
+                        switch (x.finalScore)
+                        {
+                            case -2 :
+                                ComPassed = "4";
+                                break;
+                            case -1:
+                                ComPassed = "0";
+                                break;
+                            case 0:
+                                ComPassed = "3";
+                                break;
+                            case 1:
+                                ComPassed = "1";
+                                break;
+                            case 2:
+                                ComPassed = "2";
+                                break;
+                            default:
+                                ComPassed = "4";
+                                break;
+                        }
+                        parameterMapData.Add("ComPassed", ComPassed);//0、未认定  1、合格  2、优秀  3、不合格  4、其他
+                        list53112.Add(parameterMapData);
 
                     }
                     //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis

+ 9 - 3
TEAMModelOS.SDK/Models/Service/GroupListService.cs

@@ -784,10 +784,16 @@ namespace TEAMModelOS.SDK
                                     y.name = tmd?.name;
                                     y.picture = tmd?.picture;
                                 }
-                                else { 
-                                
+                                else {
+                                    groups.ForEach(x =>
+                                    {
+                                        int item = x.members.RemoveAll(z => z.id.Equals(y.id) && z.type == 1);
+                                        if (item > 0)
+                                        {
+                                            changes.Add(x);
+                                        }
+                                    });
                                 }
-                               
                             });
                         }
                     }

+ 33 - 4
TEAMModelOS/ClientApp/src/utils/public.js

@@ -897,6 +897,10 @@ export default {
 	},
 	/* 上传视频到BLob */
 	async doUploadVideo(vm, file, editor) {
+		// 判断试卷编辑试题环境下 则直接取scope
+		let editorEnv = sessionStorage.getItem('editorEnv')
+		let inPaperEnv = editorEnv && editorEnv !== 'normal'
+		let paperName = inPaperEnv ? sessionStorage.getItem('paper_name') : null
 		vm.$Spin.show({
 			render: (h) => {
 				return h('div', {
@@ -921,9 +925,8 @@ export default {
 		});
 		const blobTool = require('./blobTool.js')
 		const isSchool = vm.$parent.exerciseScope ? vm.$parent.exerciseScope === 1 : vm.exerciseScope === 1
-		const sasData = isSchool ? await this.getSchoolSas() : await this.getPrivateSas()
-
-		const scope = isSchool ? 'school' : 'private'
+		const scope = inPaperEnv ? editorEnv : (isSchool ? 'school' : 'private')
+		const sasData = scope === 'school' ? await this.getSchoolSas() : await this.getPrivateSas()
 		const blobToolClass = blobTool.default
 		//初始化Blob
 		let containerClient = new blobToolClass(sasData.url, sasData.name, sasData.sas, scope)
@@ -931,7 +934,7 @@ export default {
 			let id = vm.curId || vm.$parent.curId
 			// 上传文件
 			let blobFile = await containerClient.upload(file, {
-				path: 'item/' + id
+				path: inPaperEnv && paperName ? ('paper/' + paperName)  : ('item/' + id)
 			})
 			// 获取blob链接以及视频封面截图
 			const fileSas = await this.getFileSas(blobFile.url)
@@ -942,6 +945,19 @@ export default {
 				fileBlobUrl +
 				' class="richText-video" width="300" preload controls="controls"></video><span>&nbsp;</span></span>'
 			editor.change.emit()
+			
+			// 如果是在试卷环境下上传多媒体 则需要先保留以下 试题的数据 如果同步到题库 再进行上传
+			if(inPaperEnv && paperName){
+				let needSaveToItem = sessionStorage.getItem('syncItemBlob') ? JSON.parse(sessionStorage.getItem('syncItemBlob')) : []
+				needSaveToItem.push({
+					paperName:paperName,
+					target:'item/' + id + '/' + file.name,
+					path:blobFile.blob,
+					scope: scope
+				})
+				sessionStorage.setItem('syncItemBlob',JSON.stringify(needSaveToItem))
+			}
+			
 			vm.$EventBus.$emit('noSave', {
 				path: blobFile.blob,
 				size: blobFile.size,
@@ -1007,6 +1023,19 @@ export default {
 					<audio src="${fileBlobUrl}"  id="audio" controls="controls" controlsList="nodownload"></audio>
 				</span><span>&nbsp;</span></span>`
 			editor.change.emit()
+			
+			// 如果是在试卷环境下上传多媒体 则需要先保留以下 试题的数据 如果同步到题库 再进行上传
+			if(inPaperEnv && paperName){
+				let needSaveToItem = sessionStorage.getItem('syncItemBlob') ? JSON.parse(sessionStorage.getItem('syncItemBlob')) : []
+				needSaveToItem.push({
+					paperName:paperName,
+					target:'item/' + id + '/' + file.name,
+					path:blobFile.blob,
+					scope: scope
+				})
+				sessionStorage.setItem('syncItemBlob',JSON.stringify(needSaveToItem))
+			}
+			
 			vm.$EventBus.$emit('noSave', {
 				path: blobFile.blob,
 				size: blobFile.size,

+ 43 - 10
TEAMModelOS/ClientApp/src/view/evaluation/index/CreatePaper.vue

@@ -1217,7 +1217,7 @@
 								this.isLoading = false
 							}
 						}))
-						// 上传未保存的多媒体文件
+						// 任务: 上传未保存的多媒体文件
 						let noSaveArr = JSON.parse(localStorage.getItem('noSave'))
 						if (noSaveArr && noSaveArr.length) {
 							noSaveArr.forEach(i => {
@@ -1248,17 +1248,37 @@
 								}))
 							})
 						}
-						// 校本组卷情况下 同步知识点数据
-						if (this.isSchool && this.isSavePoints && this.evaluationInfo.createType ===
-							'import') {
-							if (this.importKnowledges.length) {
-								this.importKnowledges.push(...refreshList.map(i => i.knowledge).flat(1))
-								promiseArr.push(this.saveImportPoints([...new Set(this.importKnowledges)],
-									paperItem))
-							}
+						// 任务:如果要同步试题到试题库 则需要检查是否有多媒体文件 需要上传到对应试题目录下
+						let needSaveToItem = sessionStorage.getItem('syncItemBlob') ? JSON.parse(
+							sessionStorage.getItem('syncItemBlob')) : []
+						if (isToItemBank && needSaveToItem.length) {
+							needSaveToItem.forEach(i => {
+								promiseArr.push(new Promise(async (r, j) => {
+									let containerName = i.scope === 'private' ?
+										this.$store.state.userInfo.TEAMModelId :
+										this.$store.state.userInfo.schoolCode
+									let client = i.scope === 'private' ?
+										privateBlob : schoolBlob
+									let sas = i.scope === 'private' ? privateSas :
+										schoolSas
+									let mediaFullPath = this.$evTools
+										.getBlobHost() + '/' + containerName + i
+										.path
+									let fileName = i.path.split('/')[i.path.split(
+										'/').length - 1]
+									client.copyBlob(i.target, mediaFullPath, sas
+											.sas)
+										.then(res => {
+											r(200)
+										}).catch(e => {
+											console.log(e);
+											j(e)
+										})
+								}))
+							})
 						}
 
-						// 如果编辑试卷的时候修改了试卷名称 则需要把原试卷目录下的文件进行清空
+						// 任务:如果编辑试卷的时候修改了试卷名称 则需要把原试卷目录下的文件进行清空
 						if (this.isEditPaper && (this.oldPaper.name !== paperItem.name)) {
 							promiseArr.push(new Promise(async (r, j) => {
 								let blobList = await this.getPaperFiles('paper/' + this
@@ -1271,6 +1291,17 @@
 								})
 							}))
 						}
+						
+						// 任务:校本组卷情况下 同步知识点数据
+						if (this.isSchool && this.isSavePoints && this.evaluationInfo.createType ===
+							'import') {
+							if (this.importKnowledges.length) {
+								this.importKnowledges.push(...refreshList.map(i => i.knowledge).flat(1))
+								promiseArr.push(this.saveImportPoints([...new Set(this.importKnowledges)],
+									paperItem))
+							}
+						}
+						
 						// 进行试卷文件上传Blob 先上传所有题目 再上传index.json文件
 						Promise.all(promiseArr).then(async result => {
 							try {
@@ -1322,6 +1353,8 @@
 													}
 												})
 												sessionStorage.setItem('isSave', 0)
+												sessionStorage.setItem('syncItemBlob',
+													'[]')
 												localStorage.setItem('noSave', '[]')
 											} else {
 												this.$Message.error(this.$t(

+ 8 - 2
TEAMModelOS/ClientApp/src/view/user/UserCenter.vue

@@ -130,7 +130,7 @@
                 </Form>
             </div>
             <div class="submit-btn-wrap">
-                <Button type="primary" style="width:150px;margin-right:10px" @click="submit">{{$t('user.confirm')}}</Button>
+                <Button type="primary" style="width:150px;margin-right:10px" @click="submit" :loading="loading">{{$t('user.confirm')}}</Button>
                 <Button style="width:150px" @click="editAttr = 'none'">{{$t('user.cancel')}}</Button>
             </div>
         </div>
@@ -149,6 +149,7 @@ export default {
             }
         }
         return {
+            loading: false,
             updHeader: {},
             timer: undefined,
             countdown: 60, //倒计时
@@ -307,6 +308,7 @@ export default {
         },
         //保存信息
         submit() {
+            this.loading = true
             let srvAdr = this.$store.state.config.srvAdr
             let host = srvAdr == 'Global' ? this.$store.state.config.Global.coreAPIUrl : this.$store.state.config.China.coreAPIUrl
             let clientId = srvAdr == 'Global' ? this.$store.state.config.Global.clientID : this.$store.state.config.China.clientID
@@ -367,6 +369,8 @@ export default {
             }
             if (params.grant_type) {
                 this.updateUserInfo(host, params)
+            } else {
+                this.loading = false
             }
         },
         updateUserInfo(host, params) {
@@ -425,7 +429,9 @@ export default {
                 err => {
                     console.log(err)
                 }
-            )
+            ).finally(() => {
+                this.loading = false
+            })
         },
         editInfo(attr) {
             this.editAttr = attr