Browse Source

Merge branch 'develop5.0-tmd' of http://106.12.23.251:10000/TEAMMODEL/TEAMModelOS into develop5.0-tmd

liqk 3 năm trước cách đây
mục cha
commit
0f81fe6be9

+ 1 - 0
TEAMModelOS/ClientApp/src/components/vote/BaseVoteForm.less

@@ -8,6 +8,7 @@
 
 .component-vote-form {
     padding: 20px 20px 50px 20px;
+	font-family: 'NotoSerif', '΢ÈíÕýºÚÌå', 'Microsoft JhengHei UI', 'Microsoft JhengHei', Sans-serif;
 	
 	.vote-class{
 		display: flex;

+ 12 - 5
TEAMModelOS/ClientApp/src/components/vote/BaseVoteForm.vue

@@ -260,11 +260,12 @@
 								this.voteForm.repeat = []
 							}
 							console.log(this.voteForm)
+							let classSelectScope = this.$refs.classSelectRef.evaluationInfo.scope
 							let params = Object.assign({}, this.defaultParams)
 							let target = []
 							let fileName = this.$tools.guid()
 							let isReset = this.voteForm.isReset.length > 0
-							let isPersonal = this.$route.name === 'personalVote' && this.$refs.classSelectRef.evaluationInfo.scope  === 'private'
+							let isPersonal = this.$route.name === 'personalVote' &&  classSelectScope === 'private'
 							params.code = this.getCurCode
 							params.scope = isPersonal ? 'private' : 'school'
 							params.name = this.voteForm.name
@@ -286,8 +287,13 @@
 							if (this.isEdit && this.editInfo.id && this.editInfo.code) {
 								params.id = this.editInfo.id
 							}
-							params.classes = this.voteForm.classes
-							console.log(params)
+							if(classSelectScope === 'school'){
+								params.classes = this.voteForm.classes
+							}else{
+								params.stuLists = this.voteForm.classes
+							}
+							console.log('提交的投票对象',params)
+							// return
 							/* 保存BLOB以及COSMOS */
 							this.saveorUpdateVote(params).then(res => {
 								this.$Message.success((this.isEdit && this.editInfo.id) ? this.$t('vote.form.editSuc') : this.$t(
@@ -523,9 +529,10 @@
 				// if(!this.classRooms.length){
 				// 	this.classRooms = await this.getClassrooms(this.userInfo.TEAMModelId)
 				// }
-				if(item.classes.length){
-					this.classNameArr = await this.getClassNameByIds(item.classes)
+				if(item.id){
+					this.classNameArr = item.classes.length ? await this.getClassNameByIds(item.classes) : await this.getClassNameByIds(item.stuLists)
 				}
+				console.log(this.classNameArr)
 				this.voteForm = null
 				this.voteOptionsContent = []
 				this.voteOptions = []

+ 0 - 2
TEAMModelOS/ClientApp/src/view/answersheet/index.vue

@@ -375,7 +375,6 @@
 			goBack() {
 				let params = {}
 				let curEditPaper = localStorage.getItem('c_edit_paper')
-				console.log(curEditPaper.paperGrade)
 				// 如果是从新建试卷或者编辑试卷 跳转过来的 则返回过去的时候带上编辑的信息
 				if (this.$route.params.paper && (this.fromRouter === 'newSchoolPaper' || this.fromRouter ===
 						'newPrivatePaper') && curEditPaper) {
@@ -383,7 +382,6 @@
 						paper: JSON.parse(curEditPaper)
 					}
 				}
-				console.log(params.paper.paperGrade)
 				// 如果是从试卷库预览试卷跳转过来的 就返回试卷库
 				if (this.$route.params.paper && (this.fromRouter === 'schoolBank' || this.fromRouter === 'personalBank')) {
 					params = {

+ 3 - 2
TEAMModelOS/ClientApp/src/view/evaluation/components/BaseChild.vue

@@ -13,11 +13,12 @@
 					<div class="child-item-option-text" v-html="option.value"></div>
 				</div>
 			</div>
-			<div class="item-btn-toggle" v-if="isShowScore">
+			<div class="item-btn-toggle">
 				<template>
-					<InputNumber  :min="0" v-model="item.score"
+					<InputNumber  :min="0" v-model="item.score"  v-if="isShowScore"
 						style="display: inline-block ;width: 50px;margin-right: 10px;height: 30px;" @click.stop>
 					</InputNumber>
+					<span v-if="!isShowScore" style="margin-right: 10px;color: #2db7f5;font-weight: bold;">{{ item.score }}</span>
 					<span style="margin-right: 20px;">{{$t('evaluation.paperList.score')}}</span>
 				</template>
 			</div>

+ 2 - 0
TEAMModelOS/ClientApp/src/view/evaluation/index/CreatePaper.vue

@@ -1137,6 +1137,8 @@
 											this.isLoading = false
 										}
 									)
+								}else{
+									console.error(blobFile)
 								}
 							
 								}catch(e) {

+ 1 - 0
TEAMModelOS/ClientApp/src/view/vote/ManageVote.less

@@ -14,6 +14,7 @@
     height: 100%;
     display: flex;
     flex-direction: column;
+	font-family: 'NotoSerif', '微软正黑体', 'Microsoft JhengHei UI', 'Microsoft JhengHei', Sans-serif;
 	
 	.hw-header{
 		height: 50px;

+ 1 - 0
TEAMModelOS/ClientApp/src/view/vote/ManageVote.vue

@@ -177,6 +177,7 @@
 						code: this.tabIndex === 0 ? this.$store.state.userInfo.schoolCode : this.$store.state.userInfo
 							.TEAMModelId,
 						classes: [],
+						stuLists:[],
 						options: [{
 							code: 'A',
 							value: ''

+ 46 - 54
TEAMModelOS/Controllers/School/StudentController.cs

@@ -2109,79 +2109,71 @@ namespace TEAMModelOS.Controllers
         }
         //TODO 此API需處理對應前端返回的相關數據
         [ProducesDefaultResponseType]
-        [AuthToken(Roles = "student")]
+        [AuthToken(Roles = "student,teacher")]
         [HttpPost("get-school-info")]
-
-        public async Task<IActionResult> GetSchoolInfo(JsonElement requert)
+        public async Task<IActionResult> GetSchoolInfo(JsonElement request)
         {
             try
             {
                 var (id, _, _, school) = HttpContext.GetAuthTokenInfo();
                 var client = _azureCosmos.GetCosmosClient();
-                List<string> roles = new List<string>();
-                List<string> permissions = new List<string>();
-                int size = 0;
-                var response = await client.GetContainer("TEAMModelOS", "Student").ReadItemStreamAsync(id, new PartitionKey($"Base-{school}"));
-                if (response.Status == 200)
+                /// tmdid, schoolid
+                var userType = "schoolid";
+                if (request.TryGetProperty("userType", out JsonElement usertype))
                 {
-                    using var json = await JsonDocument.ParseAsync(response.ContentStream);
-                    if (json.RootElement.TryGetProperty("size", out JsonElement _size) && _size.ValueKind == JsonValueKind.Number)
+                    if (!usertype.ValueKind.Equals(JsonValueKind.Undefined) && !usertype.ValueKind.Equals(JsonValueKind.Null) && usertype.ValueKind.Equals(JsonValueKind.String))
                     {
-                        size = _size.GetInt32();
+                        userType = usertype.GetString();
                     }
-                    if (json.RootElement.TryGetProperty("roles", out JsonElement _roles) && _roles.ValueKind != JsonValueKind.Null)
-                    {
-                        foreach (var obj in _roles.EnumerateArray())
-                        {
-                            roles.Add(obj.GetString());
+                }
+                if (string.IsNullOrEmpty(school)) {
+                    if (userType.Equals("tmdid")) {
+                        Teacher teacher = await client.GetContainer("TEAMModelOS", "School").ReadItemAsync<Teacher>(id, new PartitionKey("Base"));
+                        if (teacher.schools.IsNotEmpty()) {
+                           var tech= teacher.schools.Find(x => x.status.Equals("join"));
+                            if (tech == null)
+                            {
+                                school = teacher.schools[0].schoolId;
+                            }
+                            else { 
+                                school = tech.schoolId; 
+                            }
                         }
                     }
-                    if (json.RootElement.TryGetProperty("permissions", out JsonElement _permissions) && _permissions.ValueKind != JsonValueKind.Null)
+                }
+                if (!string.IsNullOrEmpty(school))
+                {
+                    object school_base = null;
+                    var response = await client.GetContainer("TEAMModelOS", "School").ReadItemStreamAsync(school, new PartitionKey("Base"));
+                    if (response.Status == 200)
                     {
-                        foreach (var obj in _permissions.EnumerateArray())
+                        using var json = await JsonDocument.ParseAsync(response.ContentStream);
+                        school_base = json.RootElement.ToObject<object>();
+                    }
+
+                    //取得班级
+                    List<object> school_classes = new List<object>();
+                    await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryStreamIterator(queryText: $"SELECT c.id,c.x,c.y,c.name,c.year,c.teacher,c.periodId,c.gradeId,c.room,c.sn,c.no,c.style,c.status,c.openType,c.scope, ARRAY_LENGTH(c.students) AS studCount FROM c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Class-{school}") }))
+                    {
+                        var jsonc = await JsonDocument.ParseAsync(item.ContentStream);
+                        foreach (var classeinfo in jsonc.RootElement.GetProperty("Documents").EnumerateArray())
                         {
-                            permissions.Add(obj.GetString());
+                            school_classes.Add(classeinfo.ToObject<object>());
                         }
                     }
-                }
-                else //無此學校資料
-                {
-                    return Ok(new { status = 404 });
-                }
-                if (roles.Count == 0)
-                {
-
-                    roles.Add("student");
-                }
-
-                //TODO JJ,调整为取得学校基础设置数据,取代下方學校學制、年級
-                object school_base = null;
-                response = await client.GetContainer("TEAMModelOS", "School").ReadItemStreamAsync(school, new PartitionKey("Base"));
-                if (response.Status == 200)
-                {
-                    using var json = await JsonDocument.ParseAsync(response.ContentStream);
-                    school_base = json.RootElement.ToObject<object>();
-                }
-
-                //取得班级
-                List<object> school_classes = new List<object>();
-                await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryStreamIterator(queryText: $"SELECT c.id,c.x,c.y,c.name,c.year,c.teacher,c.periodId,c.gradeId,c.room,c.sn,c.no,c.style,c.status,c.openType,c.scope, ARRAY_LENGTH(c.students) AS studCount FROM c", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Class-{school}") }))
-                {
-                    var jsonc = await JsonDocument.ParseAsync(item.ContentStream);
-                    foreach (var classeinfo in jsonc.RootElement.GetProperty("Documents").EnumerateArray())
+                    //取得教室
+                    List<Room> school_rooms = new List<Room>();
+                    await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<Room>(queryText: $"select value(c) from c ",
+                    requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Room-{school}") }))
                     {
-                        school_classes.Add(classeinfo.ToObject<object>());
+                        school_rooms.Add(item);
                     }
+
+                    return Ok(new { school_base, school_classes, school_rooms, status = 200 });
                 }
-                //取得教室
-                List<Room> school_rooms = new List<Room>();
-                await foreach (var item in client.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<Room>(queryText: $"select value(c) from c ",
-                requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"Room-{school}") }))
-                {
-                    school_rooms.Add(item);
+                else {
+                    return Ok(new { status = 404 }); ;
                 }
-
-                return Ok(new { school_base, school_classes, school_rooms, status = 200 });
             }
             catch (CosmosException ex)
             {