Ver Fonte

Merge branch 'develop' of http://52.130.252.100:10000/TEAMMODEL/TEAMModelOS into develop

zhouj1203@hotmail.com há 1 ano atrás
pai
commit
8cb65b1f4d

+ 1 - 1
TEAMModelBI/ClientApp/package.json

@@ -4,7 +4,7 @@
     "private": true,
     "scripts": {
         "serve": "vue-cli-service serve",
-        "build": "vue-cli-service build",
+        "build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
         "lint": "vue-cli-service lint"
     },
     "dependencies": {

+ 3 - 3
TEAMModelBI/ClientApp/src/view/product/index.vue

@@ -275,7 +275,7 @@
             <el-button size="small" type="info" disabled :icon="Search" v-else>个人数据查询</el-button>
           </div>
           <div class="header-title-hint" v-show="deleteSchoolArr.length >0">
-            <span>目前支持同时最多10名用户查询</span>
+            <span>目前支持同时最多100名用户查询</span>
           </div>
         </div>
       </div>
@@ -1583,8 +1583,8 @@ function selectTeach (value) {
     console.log(deleteSchoolArr.value,'6666')
 }
 function seachAllteach(){
-  if(deleteSchoolArr.value.length >10){
-      ElMessage.info('当前查询人数仅支持小于或等于10名用户')
+  if(deleteSchoolArr.value.length >100){
+      ElMessage.info('当前查询人数仅支持小于或等于100名用户')
       return
   }
   console.log(deleteSchoolArr.value,'传递出去的参数')

+ 2 - 2
TEAMModelBI/ClientApp/src/view/userInquire/index.vue

@@ -101,8 +101,8 @@ function seachSole(datavalue) {
         searchvalue.value=searchvalue.value.replace(/,/g, ',');
         userArr = searchvalue.value.split(',');
     }
-    if(userArr.length >10){
-            ElMessage.info('同时查询人员不能大于10,请调整查询范围')
+    if(userArr.length >100){
+            ElMessage.info('同时查询人员不能大于100,请调整查询范围')
             return
     }
     //let testdata=['1524738018','1595321354']

+ 3 - 3
TEAMModelBI/TEAMModelBI.csproj

@@ -65,9 +65,9 @@
 		<SpaRoot>ClientApp\</SpaRoot>
 		<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
 		<UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
-		<Version>5.2405.15</Version>
-		<AssemblyVersion>5.2405.15.1</AssemblyVersion>
-		<FileVersion>5.2405.15.1</FileVersion>
+		<Version>5.2405.22</Version>
+		<AssemblyVersion>5.2405.22.1</AssemblyVersion>
+		<FileVersion>5.2405.22.1</FileVersion>
 		<Description>TEAMModelBI(BI)</Description>
 		<PackageReleaseNotes>BI版本说明版本切换标记2022000908</PackageReleaseNotes>
 		<PackageId>TEAMModelBI</PackageId>

+ 6 - 0
TEAMModelContest/contest.client/src/view/myactivity/MyReview.vue

@@ -125,6 +125,7 @@
                                                         <el-input-number v-model="reviewScore" :min="0" :max="100" :placeholder="$t('placeholderlist.scoring')" controls-position="right" />
                                                     </div>
                                                     <div style="text-align: right; margin-top: 10px;">
+                                                        <el-input v-model="comment" :rows="5" type="textarea" style="margin-bottom: 10px;" />
                                                         <el-button type="success" @click="saveScore()">{{ $t('home.submit') }}</el-button>
                                                     </div>
                                                 </div>
@@ -236,6 +237,7 @@ let contestInfo = ref({upload: {}})
 // 评审规则
 let ruleInfo = ref({})
 let reviewScore = ref(null)
+let comment = ref('')
 // 作品列表
 let workList = ref([])
 let workIndex = ref(0)
@@ -372,6 +374,7 @@ function getUploadInfo(info) {
                 }
                 workInfo.value = info
                 reviewScore.value = workInfo.value.score || null
+                comment.value = workInfo.value.comment
                 // changeFile(workInfo.value.files[0], 0)
                 fileIndex.value = 0
                 fileInfo.value = {}
@@ -381,6 +384,7 @@ function getUploadInfo(info) {
     } else {
         workInfo.value = info
         reviewScore.value = workInfo.value.score || null
+        comment.value = workInfo.value.comment
         fileIndex.value = 0
         fileInfo.value = {}
         if(workInfo.value.uploadTypes.includes('file')) fileInfo.value = workInfo.value.files[0]
@@ -433,6 +437,7 @@ function saveScore() {
         activityId: taskList.value[taskIndex.value].activityId,
         scoreData: {
             score: 0,
+            comment: comment.value,
             uploadId: workInfo.value.uploadId,
             detailScore: []
         }
@@ -555,6 +560,7 @@ function startWork() {
         ruleInfo.value.trees = getRuleScore(ruleInfo.value.trees, workList.value[workIndex.value].detailScore, true)
     } else {
         reviewScore.value = workInfo.value.score || null
+        comment.value = workInfo.value.comment
     }
     getUploadInfo(workInfo.value)
     scoring.value = false

+ 3 - 3
TEAMModelOS.FunctionV4/TEAMModelOS.FunctionV4.csproj

@@ -5,9 +5,9 @@
 		<OutputType>Exe</OutputType>
 		<_FunctionsSkipCleanOutput>true</_FunctionsSkipCleanOutput>
 		<SignAssembly>true</SignAssembly>
-		<Version>5.2405.15</Version>
-		<AssemblyVersion>5.2405.15.1</AssemblyVersion>
-		<FileVersion>5.2405.15.1</FileVersion>
+		<Version>5.2405.22</Version>
+		<AssemblyVersion>5.2405.22.1</AssemblyVersion>
+		<FileVersion>5.2405.22.1</FileVersion>
 		<PackageId>TEAMModelOS.FunctionV4</PackageId>
 		<Authors>teammodel</Authors>
 		<Company>醍摩豆(成都)信息技术有限公司</Company>

+ 6 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/Activity.cs

@@ -832,6 +832,7 @@ namespace TEAMModelOS.SDK.Models
         public double score { get; set; }
         public string nickname { get; set; }
         public string picture { get; set; }
+        public string comment { get; set; }
         public List<RuleConfig> detailScore { get; set; } = new List<RuleConfig>();
     }
     /// <summary>
@@ -963,6 +964,10 @@ namespace TEAMModelOS.SDK.Models
     public class ReviewScoreData
     {
         public double score { get; set; } = -1;
+        /// <summary>
+        /// 评语
+        /// </summary>
+        public string comment {  get; set; }
         public List<RuleConfigTree> detailScore { get; set; } = new List<RuleConfigTree>();
         public string uploadId { get; set; }
     }
@@ -1018,6 +1023,7 @@ namespace TEAMModelOS.SDK.Models
         /// </summary>
         public int status { get; set; } = -1;
         public double score { get; set; } = -1;
+        public string comment { get; set; }
         /// <summary>
         /// 评分依据规则的细项得分,score 专家对细项的评分
         /// </summary>

+ 1 - 1
TEAMModelOS.SDK/Models/Cosmos/School/Knowledge.cs

@@ -139,7 +139,7 @@ namespace TEAMModelOS.SDK.Models
     public class Block { 
         public string name { get; set; }
         /// <summary>
-        /// 默认学校添加的 0,  1,区级统一设置的(学校不能删除,不能编辑)。
+        /// 默认学校添加的 0,  1,区级统一设置的(学校不能删除,不能编辑),2新版树形结构的知识块
         /// </summary>
         public int source { get; set; } = 0;
         public List<string> points { get; set; } = new List<string>();

+ 7 - 0
TEAMModelOS.SDK/Models/Service/KnowledgeService.cs

@@ -15,11 +15,18 @@ namespace TEAMModelOS.SDK.Models.Service
 
             HashSet<string> points = new HashSet<string>();
             List<Block> blocks = new List<Block>();
+            var pidNull= knowledge.nodes.FindAll(x => string.IsNullOrWhiteSpace(x.pid));
+            if (pidNull.IsNotEmpty()) {
+                foreach (var isnull in pidNull) {
+                    isnull.pid= knowledge.id;
+                }
+            }
             List<PointTree> tree = KnowledgeService.ListToTree(knowledge.nodes);
             foreach (var node in tree)
             {
                 points.Add(node.name);
                 blocks.Add(new Block { name=node.name, source=2, points=  node.children!=null ? node.children.Select(x => x.name).ToList() : new List<string>() });
+                node.pid=knowledge.id;
                 node.allcids= KnowledgeService.GetChildIds(node, points, blocks);
             }
             blocks.AddRange(knowledge.blocks);

+ 3 - 3
TEAMModelOS.SDK/TEAMModelOS.SDK.csproj

@@ -2,9 +2,9 @@
 
 	<PropertyGroup>
 		<TargetFramework>net6.0</TargetFramework>
-		<Version>5.2405.15</Version>
-		<AssemblyVersion>5.2405.15.1</AssemblyVersion>
-		<FileVersion>5.2405.15.1</FileVersion>
+		<Version>5.2405.22</Version>
+		<AssemblyVersion>5.2405.22.1</AssemblyVersion>
+		<FileVersion>5.2405.22.1</FileVersion>
 		<PackageReleaseNotes>发版</PackageReleaseNotes>
 	</PropertyGroup>
 

+ 3 - 0
TEAMModelOS/ClientApp/src/components/student-web/HomeView/HomeView.vue

@@ -391,6 +391,9 @@ export default {
                             this.courseNotice.push(item)
                         }
                         this.allNotice = this.classNotice.concat(this.courseNotice)
+                        this.allNotice = this.allNotice.sort((a, b) => {
+                            return b.startTime - a.startTime
+                        })
                     })
                 }
             })

Diff do ficheiro suprimidas por serem muito extensas
+ 1065 - 991
TEAMModelOS/ClientApp/src/view/iot/schooliot.vue


+ 2 - 2
TEAMModelOS/ClientApp/src/view/login/page/Student.vue

@@ -637,8 +637,8 @@
 				// 取得學校清單
 				let _this = this;
 				// 大陆站暂时采用访问Blob静态资料 国际站继续保持API访问
-				let schoolBlobJson = window.location.host.includes("www.teammodel.cn") ? "https://teammodelos.blob.core.chinacloudapi.cn/0-public/schools.json" : "https://teammodeltest.blob.core.chinacloudapi.cn/0-public/schools.json";
-				let res = window.location.host.includes("teammodel.net") ? await this.$api.getSchoolList() : JSON.parse(await this.$tools.getFile(schoolBlobJson));
+				let schoolBlobJson = (this.$store.state.config.srvAdrType === "product" || this.$store.state.config.srvAdrType === "rc") ? "https://teammodelos.blob.core.chinacloudapi.cn/0-public/schools.json" : "https://teammodeltest.blob.core.chinacloudapi.cn/0-public/schools.json";
+				let res = this.$store.state.config.srvAdr === 'Global' ? await this.$api.getSchoolList() : JSON.parse(await this.$tools.getFile(schoolBlobJson));
 				if (Array.isArray(res.schools) && res.schools.length > 0) {
 					res.schools.forEach(function (item) {
 						let isProvinceSame = _this.schoolList.find(function (val) {

+ 41 - 11
TEAMModelOS/ClientApp/src/view/signupActivity/infoComponent/skContent.vue

@@ -49,6 +49,7 @@
                     <div style="margin-bottom: 10px; display: flex; justify-content: space-between;">
                         <Input v-special-char v-model="tmdID" search @on-search="searchTmd()" placeholder="搜索醍摩豆ID" style="width: 300px; margin-right: 10px;" />
                         <Button type="success" @click="getTeacherList()" v-show="actInfo.joinMode === 'invite' && !isArea">{{ $t('activity.inviteTea') }}</Button>
+                        <Button @click="exportTable()">{{ $t('lessonRecord.exportData') }}</Button>
                     </div>
                     <Table :columns="applicationColumns" :data="applicationListShow" stripe row-key="id">
                         <template #head="{}">
@@ -268,17 +269,6 @@
                     </FormItem>
                 </template>
             </Form>
-            <div v-if="contestInfo.modules.includes('review') && viewPermission" class="show-box">
-                <p>{{ $t('activity.assignExpert') }}</p>
-                <div v-if="teaSignInfo.reviewContestExperts.length">
-                    <div v-for="item in teaSignInfo.reviewContestExperts" :key="item.id">
-                        {{ item.name }}:
-                        <span v-show="item.score != -1">{{ item.score }}分</span>
-                        <span v-show="item.score === -1">{{ $t('learnActivity.simple.unscore') }}</span>
-                    </div>
-                </div>
-                <div v-else>{{ $t('activity.notAlloacte') }}</div>
-            </div>
             <div v-if="teaSignInfo.upload" class="show-box">
                 <p>{{ $t('activity.uploadWork') }}</p>
                 <div v-if="teaSignInfo.upload.list.length">
@@ -288,6 +278,22 @@
                 </div>
                 <div v-else>{{ $t('activity.notUpload') }}</div>
             </div>
+            <div v-if="contestInfo.modules.includes('review') && viewPermission" class="show-box">
+                <p>{{ $t('activity.assignExpert') }}</p>
+                <div v-if="teaSignInfo.reviewContestExperts.length" style="width: 100%;">
+                    <div v-for="item in teaSignInfo.reviewContestExperts" :key="item.id" style="margin-bottom: 5px; border-bottom: 1px dashed #ccc;">
+                        <div>{{ item.name }}</div>
+                        <div style="margin-left: 10px;">
+                            <div>分数:{{ item.score === -1 ? $t('learnActivity.simple.unscore') : `${item.score}分` }}</div>
+                            <div style="display: flex; white-space: pre;">
+                                <span>评语:</span>
+                                <span>{{ item.comment || '无' }}</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div v-else>{{ $t('activity.notAlloacte') }}</div>
+            </div>
         </Drawer>
         <Drawer :title="$t('activity.modal.text8')" :width="25" v-model="workDrawer">
             <template v-if="processList[proIndex] && processList[proIndex].uploads">
@@ -1032,6 +1038,30 @@ export default {
                 this.pageChange(1)
             })
         },
+        /* 导出表格 */
+        exportTable() {
+            const params = {
+                title: [this.$t('assessment.header1'), this.$t('cusMgt.tmIDType'), this.$t('answerSheet.dp.school'), this.$t('activity.timeList.enroll'), this.$t('jyzx.common.loadTime'), this.$t('activity.reviewed'), this.$t('learnActivity.mark.assigned'), '评审分数'],
+                key: ['name', 'id', 'schoolName', 'joinTime', 'uploadTime', 'reviewNum', 'scoreNum', 'uploadContestScore'],
+                data: this.applicationList.map(i => {
+                    return {
+                        name: i.name,
+                        id: i.id,
+                        schoolName: i.schoolName,
+                        // teamNameContest: i.teamNameContest,
+                        // joinStatus: i.score === -1 ? '-' : i.score,
+                        joinTime: i.joinTime,
+                        uploadTime: i.uploadTime,
+                        reviewNum: i.reviewContestExperts.length,
+                        scoreNum: i.reviewNum,
+                        uploadContestScore: i.uploadContestScore === -1 ? this.$t('learnActivity.simple.unscore') : i.uploadContestScore,
+                    }
+                }),
+                autoWidth: true,
+                filename: `【${this.actInfo.name}】报名表`
+            }
+            this.$tools.exportTable(params)
+        },
         saveRule(data) {
             let {info, isEdit} = data
             if(isEdit) {

+ 4 - 2
TEAMModelOS/Controllers/Both/KnowledgeController.cs

@@ -341,6 +341,8 @@ namespace TEAMModelOS.Controllers.Both
                     if (old!=null)
                     {
                         knowledge.id = old.id;
+                        knowledge.points=old.points;
+                        knowledge.blocks=old.blocks;
                         foreach (var p in old.points)
                         {
                             points.Add(p);
@@ -374,9 +376,9 @@ namespace TEAMModelOS.Controllers.Both
                         periodId=knowledge.periodId,
                         subjectId   =knowledge.subjectId,
                         scope=knowledge.scope,
-                        //blocks=blocks,
+                        blocks=knowledge.blocks,
                         pk="Knowledge",
-                        // points=points.ToList(),
+                        points=knowledge.points.ToList(),
                         nodes=nodes,
                         owner=knowledge.owner,
                     };

+ 1 - 0
TEAMModelOS/Controllers/Common/ActivityController.cs

@@ -3100,6 +3100,7 @@ namespace TEAMModelOS.Controllers
                                         var task = expertTask.contestTasks.Find(x => x.uploadId.Equals(scoreData.uploadId));
                                         task.score = scoreData.score;
                                         task.status=1;
+                                        task.comment=scoreData.comment;
                                         task.detailScore = ActivityService.TreeToList(scoreData.detailScore, new List<RuleConfig>()) ;
                                         await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Teacher).UpsertItemAsync(expertTask, new PartitionKey($"ActivityExpertTask-{_activityId}"));
                                         //检查作品是否完成评审自动结算

+ 4 - 4
TEAMModelOS/TEAMModelOS.csproj

@@ -79,11 +79,11 @@
 		<SpaRoot>ClientApp\</SpaRoot>
 		<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
 		<UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
-		<Version>5.2405.15</Version>
-		<AssemblyVersion>5.2405.15.1</AssemblyVersion>
-		<FileVersion>5.2405.15.1</FileVersion>
+		<Version>5.2405.22</Version>
+		<AssemblyVersion>5.2405.22.1</AssemblyVersion>
+		<FileVersion>5.2405.22.1</FileVersion>
 		<Description>TEAMModelOS(IES5)</Description>
-		<PackageReleaseNotes>IES版本说明版本切换标记5.2405.15.1</PackageReleaseNotes>
+		<PackageReleaseNotes>IES版本说明版本切换标记5.2405.22.1</PackageReleaseNotes>
 		<PackageId>TEAMModelOS</PackageId>
 		<Authors>teammodel</Authors>
 		<Company>醍摩豆(成都)信息技术有限公司</Company>

+ 1 - 1
TEAMModelOS/appsettings.Development.json

@@ -18,7 +18,7 @@
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "HttpTrigger": "https://teammodelosfunction-test.chinacloudsites.cn/api/",
     //"HttpTrigger": "http://localhost:7071/api/"
-    "Version": "5.2405.15.1"
+    "Version": "5.2405.22.1"
   },
   "Azure": {
 

+ 1 - 1
TEAMModelOS/appsettings.json

@@ -18,7 +18,7 @@
     "Exp": 86400,
     "IdTokenSalt": "8263692E2213497BB55E74792B7900B4",
     "HttpTrigger": "https://teammodelosfunction.chinacloudsites.cn/api/",
-    "Version": "5.2405.15.1"
+    "Version": "5.2405.22.1"
   },
   "Azure": {
     "Storage": {