Explorar el Código

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

XW hace 3 años
padre
commit
4b46f82914

+ 2 - 2
TEAMModelOS.SDK/Extension/Utils.cs

@@ -103,8 +103,8 @@ namespace TEAMModelOS.SDK.Extension
         /// <returns></returns>
         public static (bool, string, int) ImageValidateByStream(Stream stream)
         {
-            int length = 1024;
-            byte[] bytes = new byte[1024];
+            int length = 10240;
+            byte[] bytes = new byte[length];
             BinaryReader br = new BinaryReader(stream);
             StringBuilder stringBuilder = new StringBuilder();
             for (int i = 0; i < length; i++)

+ 25 - 17
TEAMModelOS/ClientApp/src/view/evaluation/components/BasePointPie.vue

@@ -81,28 +81,36 @@
 		},
 		mounted() {
 			let arr = []
-			let tempArr = []
+			let pointList = []
 			this.echartsData.item.forEach(i => {
 				if (i.type === 'compose' && i.children.length) {
-					tempArr.push(...i.children)
+					i.children.forEach(j => {
+						pointList.push(...j.knowledge)
+					})
 				} else {
-					tempArr.push(i)
+					pointList.push(...i.knowledge)
 				}
 			})
-			let typeList = this._.groupBy(tempArr, 'knowledge')
-			for (let key in typeList) {
-				let newKey = key === 'undefined' || !key ? this.$t('evaluation.noPoints') : key
-				let isExistIndex = arr.map(i => i.name).indexOf(newKey)
-				if (arr.length && isExistIndex > -1) {
-					arr[isExistIndex].value = arr[isExistIndex].value + typeList[key].length
-				} else {
-					arr.push({
-						value: typeList[key].length,
-						name: newKey
-					})
-				}
-
-			}
+			let pointArr = [...new Set(pointList)]
+			pointArr.forEach((i,index) => {
+				arr.push({
+					value: 0,
+					name: i
+				})
+				this.echartsData.item.forEach(k => {
+					if (k.type === 'compose' && k.children.length) {
+						k.children.forEach(j => {
+							if(j.knowledge && Array.isArray(j.knowledge) && j.knowledge.includes(i)){
+								arr[index].value++
+							}
+						})
+					} else {
+						if(k.knowledge && Array.isArray(k.knowledge) && k.knowledge.includes(i)){
+							arr[index].value++
+						}
+					}
+				})
+			})
 			this.drawLine(arr)
 		},
 		computed: {

+ 14 - 11
TEAMModelOS/ClientApp/src/view/schoolmgmt/SystemSetting/SystemSetting.vue

@@ -243,7 +243,7 @@
                                 </div>
                                 <div class="attr-box-item">
                                     <p>
-                                        <Tooltip :content="$t('schoolBaseInfo.touchTips')" placement="right" theme="light"  max-width="200">
+                                        <Tooltip :content="$t('schoolBaseInfo.touchTips')" placement="right" theme="light" max-width="200">
                                             <Icon type="ios-information-circle-outline" color="#1cc0f3" size="16" style="margin-right: 5px;cursor: pointer;" />
                                         </Tooltip>
                                         <span>{{$t('schoolBaseInfo.touchLabel')}}</span>
@@ -1425,16 +1425,6 @@ export default {
         color: #a6a6a6;
     }
 
-    .ivu-checkbox-wrapper {
-        margin-left: 40px;
-        margin-top: 5px;
-        color: #a6a6a6;
-    }
-
-    .ivu-checkbox {
-        margin-right: 5px;
-    }
-
     .ivu-radio-wrapper {
         margin-right: 20px;
         color: white;
@@ -1464,7 +1454,19 @@ export default {
             border-color: #0094ff;
         }
     }
+}
+.custom-check-box {
+    user-select: none;
+    
+    .ivu-checkbox-wrapper {
+        margin-left: 40px;
+        margin-top: 5px;
+        color: #a6a6a6;
+    }
 
+    .ivu-checkbox {
+        margin-right: 5px;
+    }
     .ivu-checkbox-inner {
         width: 18px;
         height: 18px;
@@ -1491,6 +1493,7 @@ export default {
             border-right: #ffffff solid 3px;
             border-bottom: #ffffff solid 3px;
             transform: rotate(35deg);
+            transition: all 0.1s;
             position: absolute;
             top: -4px;
             left: 4px;

+ 7 - 10
TEAMModelOS/ClientApp/src/view/student-account/stuMgt/StuMgt.less

@@ -8,26 +8,23 @@
 @second-fontSize:16px;
 
 .sc-menu {
-    height: 45px;
     width: ~"calc(100%-50px)";
     border-bottom: 1px solid @borderColor;
-    padding: 0px 35px 0px 15px;
-    box-sizing: content-box;
-    -webkit-box-sizing: content-box;
-    -moz-box-sizing: content-box;
+    padding: 0px 20px 2px 15px;
+    position: relative;
 
     &-left {
-        float: left;
         line-height: 45px;
         height: 45px;
-        width: 57%;
+        // margin-top:-6px;
     }
 
     &-right {
-        float: right;
+        top: -45px;
+        position: absolute;
+        right: 30px;
         line-height: 45px;
         height: 45px;
-        width: 42%;
         animation: fadeIn 1.5s ;
         @keyframes fadeIn{
             0%{
@@ -47,7 +44,7 @@
                 height: 45px;
                 line-height: 45px;
                 display: block;
-                margin-left: 30px;
+                margin-left: 20px;
                 float: right;
                 cursor: pointer;
             }

+ 10 - 6
TEAMModelOS/ClientApp/src/view/student-account/stuMgt/StuMgt.vue

@@ -7,20 +7,24 @@
         <div class="sc-menu">
             <div class="sc-menu-left dark-iview-select">
                 <!-- 學制Select -->
-                <Select v-model="searchPeriod" style="width: 120px" :placeholder="$t('stuAccount.periodHolder')" @on-change="filterData">
+                <Select v-model="searchPeriod" style="width: 100px" :placeholder="$t('stuAccount.periodHolder')" @on-change="filterData">
                     <Option v-for="(item, index) in periods" :value="item.id" :key="index">{{ item.name }}</Option>
                 </Select>
                 <!-- 學級Select -->
-                <Select v-model="searchGrade" style="width: 150px; margin-left: 5px" :placeholder="$t('stuAccount.gradeHolder')" :not-found-text="$t('stuAccount.sltPdFirst')" clearable @on-change="filterData">
+                <Select v-model="searchGrade" style="width: 140px; margin-left: 5px" :placeholder="$t('stuAccount.gradeHolder')" :not-found-text="$t('stuAccount.sltPdFirst')" clearable @on-change="filterData">
                     <Option v-for="(item, index) in years" :value="item.value" :key="index">{{ item.label }}</Option>
                 </Select>
                 <!-- 班级Select -->
-                <Select v-model="searchClass" ref="classroom" style="width: 150px; margin-left: 5px" :placeholder="$t('stuAccount.classroomHolder')" clearable @on-change="filterData" :not-found-text="searchGrade ? $t('stuAccount.noClass') : $t('stuAccount.sltGdFirst')">
+                <Select v-model="searchClass" ref="classroom" style="width: 140px; margin-left: 5px" :placeholder="$t('stuAccount.classroomHolder')" clearable @on-change="filterData" :not-found-text="searchGrade ? $t('stuAccount.noClass') : $t('stuAccount.sltGdFirst')">
                     <Option v-for="(item, index) in filterClasses" :value="item.id" :key="index">{{ item.name }}</Option>
-                    <Option v-show="!searchGrade" value="noclass">{{$t('stuAccount.noRelClass')}}</Option>
+                    <!-- <Option v-show="!searchGrade" value="noclass">{{$t('stuAccount.noRelClass')}}</Option> -->
                 </Select>
                 <!-- 字串模糊搜尋 -->
-                <Input v-model="searchText" clearable :placeholder="$t('stuAccount.searchHolder')" style="width: 180px; margin-left: 20px" search @on-search="filterData" @on-clear="filterData" />
+                <Input v-model="searchText" clearable :placeholder="$t('stuAccount.searchHolder')" style="width: 152px; margin-left: 10px" search @on-search="filterData" @on-clear="filterData" />
+                <!-- 筛选未关联班级学生 -->
+                <div style="display:inline-block;" class="custom-check-box">
+                    <Checkbox v-model="searchClass" label="noclass" @on-change="filterData" style="color:white;margin-left:10px">筛选未关联班级学生</Checkbox>
+                </div>
             </div>
             <div class="sc-menu-right sc-text-no-select" v-if="authorizationStatus == false">
                 <ul v-if="$access.can('admin.*|student-upd')">
@@ -501,7 +505,7 @@ export default {
                     }
                 },
                 err => {
-                    
+
                 }
             ).finally(() => {
                 this.tableLoading = false

+ 9 - 1
TEAMModelOS/Controllers/Analysis/AnalysisController.cs

@@ -1642,7 +1642,15 @@ namespace TEAMModelOS.Controllers.Analysis
                             int year = DateTimeOffset.UtcNow.Year;
                             int month = DateTimeOffset.UtcNow.Month;
                             int day = DateTimeOffset.UtcNow.Day;
-                            int time = month > semester.month ? 0 : 1;
+                            int time = 0;
+                            if (month == semester.month)
+                            {
+                                time = day >= semester.day ? 0 : 1;
+                            }
+                            else
+                            {
+                                time = month > semester.month ? 0 : 1;
+                            }
                             int eyear = year - time;
                             gradeId = (eyear - cyear).ToString();
                         }

+ 1 - 0
TEAMModelOS/Controllers/Core/CoreController.cs

@@ -135,6 +135,7 @@ namespace TEAMModelOS.Controllers.Core
                             img = $"{Guid.NewGuid():N}.{type}"; //命名新圖片名稱
                             string Container = item.blob.Substring(0, item.blob.IndexOf("/")); //取得容器名稱
                             string blobpath = $"{item.blob[(item.blob.Trim('/').IndexOf("/") + 1)..]}/{img}"; //處理路徑,避免多餘的字符
+                            obase64ms.Position = 0;
                             await _azureStorage.GetBlobContainerClient(Container).GetBlobClient(blobpath).UploadAsync(obase64ms, new BlobHttpHeaders { ContentType = otype });
                         }
                         using var nbase64ms = new MemoryStream();

+ 1 - 1
TEAMModelOS/TEAMModelOS.csproj

@@ -14,7 +14,7 @@
     <PackageReference Include="Caching.CSRedis" Version="3.6.50" />
     <PackageReference Include="CSRedisCore" Version="3.6.5" />
     <PackageReference Include="DotNetZip" Version="1.15.0" />
-    <PackageReference Include="HTEXLib" Version="5.2107.133" />
+    <PackageReference Include="HTEXLib" Version="5.2108.31" />
     <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="5.0.1" />
     <PackageReference Include="VueCliMiddleware" Version="5.0.0" />
   </ItemGroup>