Sfoglia il codice sorgente

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

Li 2 anni fa
parent
commit
e0fa882905
24 ha cambiato i file con 130 aggiunte e 72 eliminazioni
  1. 9 7
      TEAMModelBI/ClientApp/src/view/participation/copy.vue
  2. 11 7
      TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs
  3. 1 0
      TEAMModelOS.SDK/Models/Cosmos/School/ExamInfo.cs
  4. 12 8
      TEAMModelOS.SDK/Models/Service/ArtService.cs
  5. 1 1
      TEAMModelOS.SDK/Models/Service/LessonService.cs
  6. 1 0
      TEAMModelOS/ClientApp/public/lang/en-US.js
  7. 1 0
      TEAMModelOS/ClientApp/public/lang/zh-CN.js
  8. 1 0
      TEAMModelOS/ClientApp/public/lang/zh-TW.js
  9. 33 15
      TEAMModelOS/ClientApp/src/css/site.css
  10. 1 1
      TEAMModelOS/ClientApp/src/view/art/SchoolArt.vue
  11. 1 1
      TEAMModelOS/ClientApp/src/view/classrecord/ClassRecord.vue
  12. 1 0
      TEAMModelOS/ClientApp/src/view/classrecord/eventchart/Exam.vue
  13. 2 1
      TEAMModelOS/ClientApp/src/view/classrecord/eventchart/ExamTable.vue
  14. 3 3
      TEAMModelOS/ClientApp/src/view/dashboard/Art.vue
  15. 1 1
      TEAMModelOS/ClientApp/src/view/dashboard/Research.vue
  16. 1 1
      TEAMModelOS/ClientApp/src/view/dashboard/Student.vue
  17. 1 1
      TEAMModelOS/ClientApp/src/view/dashboard/StudentAll.vue
  18. 9 2
      TEAMModelOS/ClientApp/src/view/dashboard/fiveEdu/FiveEdu.less
  19. 9 3
      TEAMModelOS/ClientApp/src/view/dashboard/fiveEdu/FiveEdu.vue
  20. 11 3
      TEAMModelOS/ClientApp/src/view/learnactivity/CreatePrivEva.vue
  21. 12 4
      TEAMModelOS/ClientApp/src/view/learnactivity/CreateSchoolEva.vue
  22. 1 1
      TEAMModelOS/ClientApp/src/view/research-center/ResearchMgt.vue
  23. 4 0
      TEAMModelOS/Controllers/Both/LessonRecordController.cs
  24. 3 12
      TEAMModelOS/Controllers/School/ArtReviewController.cs

+ 9 - 7
TEAMModelBI/ClientApp/src/view/participation/copy.vue

@@ -173,16 +173,18 @@ function clickschool (val, state) {
 }
 //确认拷贝
 function confirmClick () {
-  console.log(targetData.value, props, '查看准备拷贝的目标')
+  console.log(targetData.value, '查看准备拷贝的目标')
   for (let items of targetData.value) {
-    if (items.modelValue) { ElMessage.error('请选择试卷拷贝学校信息'); return }
+    if (!items.modelValue) { ElMessage.error('请选择试卷拷贝学校信息'); return }
   }
   let subjectText = ''
   let result = targetData.value[2].listdata.find((item) => { return item.id === targetData.value[2].modelValue })
-  // targetData.value[3].modelValue.forEach((value) => { value = String(value) })
-  // for (let item of targetData.value[3].modelValue) {
-  //   item = item.toString()
-  // }
+  targetData.value[3].modelValue.forEach((value) => { value = String(value) })
+  let tostringModel = []
+  for (let item of targetData.value[3].modelValue) {
+    // item = item.toString()
+    tostringModel.push(item.toString())
+  }
   subjectText = result.name
   let data = {
     'papers':
@@ -190,7 +192,7 @@ function confirmClick () {
         { "oldId": props.paperdata.id, "oldSc": props.paperdata.schoolcode }
       ],
     newSc: [
-      { "newSc": targetData.value[0].modelValue[1], "newPrdId": targetData.value[1].modelValue, "newSubId": targetData.value[2].modelValue, "newSubName": subjectText, "newGrId": [targetData.value[3].modelValue.toString()] }
+      { "newSc": targetData.value[0].modelValue[1], "newPrdId": targetData.value[1].modelValue, "newSubId": targetData.value[2].modelValue, "newSubName": subjectText, "newGrId": tostringModel }
     ]
   }
   console.log(data, '提交的数据')

+ 11 - 7
TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs

@@ -760,14 +760,16 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
 
      
        
-        private async Task GenArtStudentPdf(JsonElement json, string msg) {
+        private async Task GenArtStudentPdf(JsonElement json , string msg) {
             try
-            {
-                json.TryGetProperty("studentPdfs", out JsonElement _studentPdfs);
-                json.TryGetProperty("artResults", out JsonElement _artResults);
-                json.TryGetProperty("schoolCode", out JsonElement _schoolCode);
-                List<ArtStudentPdf> studentPdfs = _studentPdfs.Deserialize<List<ArtStudentPdf>>();
-                List<StudentArtResult> artResults = _artResults.Deserialize<List<StudentArtResult>>();
+            {  
+                json.TryGetProperty("studentIds", out JsonElement _studentIds);
+                json.TryGetProperty("artId", out JsonElement _artId);
+                json.TryGetProperty("schoolCode", out JsonElement _schoolId);
+                json.TryGetProperty("headLang", out JsonElement headLang);
+                List<string> studentIds= _studentIds.ToObject<List<string>>();
+                 string _schoolCode=$"{_schoolId}";
+                (List<ArtStudentPdf> studentPdfs, List<StudentArtResult> artResults) = await ArtService.GenStuArtPDF(studentIds,$"{_artId}",   $"{_schoolId}", $"{headLang}", _azureCosmos, _coreAPIHttpService, _dingDing);
                 List<Task<string>> uploads = new List<Task<string>>();
                 studentPdfs.ForEach(x => {
                     x.blob = $"art/{x.artId}/report/{x.studentId}.json";
@@ -794,6 +796,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                 {
                     var screenshot = new ScreenshotDto
                     {
+                        msgId=Guid.NewGuid().ToString(),
                         width = 1080,
                         height = 1920,
                         urls = urls,
@@ -811,6 +814,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                         var lists = urls.Skip((i) * psize).Take(psize).ToList();
                         var screenshot = new ScreenshotDto
                         {
+                            msgId = Guid.NewGuid().ToString(),
                             width = 1080,
                             height = 1920,
                             urls = lists,

+ 1 - 0
TEAMModelOS.SDK/Models/Cosmos/School/ExamInfo.cs

@@ -121,6 +121,7 @@ namespace TEAMModelOS.SDK.Models
         public int? publish { get; set; } = 0;
         //评分状态,0未评分,1已评分
         public int sStatus { get; set; } = 0;
+        public int isCompletion { get; set; }
         //容器名称 container name
         //public string cn { get; set; }
 

+ 12 - 8
TEAMModelOS.SDK/Models/Service/ArtService.cs

@@ -78,9 +78,15 @@ namespace TEAMModelOS.SDK.Models.Service
             }
             return nodes;
         }
-
-        public async static Task<List<ArtStudentPdf>> GenArtPDF(List<string> studentIds, string _artId,string _schoolId,string head_lang ,AzureCosmosFactory _azureCosmos, 
-            IWebHostEnvironment _environment, CoreAPIHttpService _coreAPIHttpService, DingDing _dingDing, AzureServiceBusFactory _serviceBus, IConfiguration _configuration) {
+        public async static Task GenArtPDF (List<string> studentIds, string _artId, string _schoolId, string head_lang, AzureCosmosFactory _azureCosmos,
+           IWebHostEnvironment _environment, CoreAPIHttpService _coreAPIHttpService, DingDing _dingDing, AzureServiceBusFactory _serviceBus, IConfiguration _configuration)
+        {
+            var messageBlobPDF = new ServiceBusMessage(new { studentIds = studentIds, artId= _artId, schoolCode = $"{_schoolId}", headLang= head_lang, bizType = "ArtStudentPdf" }.ToJsonString());
+            var GenPdfQueue = _configuration.GetValue<string>("Azure:ServiceBus:GenPdfQueue");
+            await _serviceBus.GetServiceBusClient().SendMessageAsync(GenPdfQueue, messageBlobPDF);
+        }
+        public async static Task<(List<ArtStudentPdf> studentPdfs, List<StudentArtResult> artResults)> GenStuArtPDF(List<string> studentIds, string _artId,string _schoolId,string head_lang ,AzureCosmosFactory _azureCosmos, 
+              CoreAPIHttpService _coreAPIHttpService, DingDing _dingDing) {
             var client = _azureCosmos.GetCosmosClient();
 
             string query = $" select value c from c where c.school  = '{_schoolId}' ";
@@ -95,7 +101,7 @@ namespace TEAMModelOS.SDK.Models.Service
                 artResults.Add(item);
             }
             School school = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.School).ReadItemAsync<School>($"{_schoolId}", new PartitionKey("Base"));
-            string path = Path.Combine(_environment.ContentRootPath, $"Lang/{head_lang}.json");
+            string path = Path.Combine("", $"Lang/{head_lang}.json");
             string comment1 = "";
             string comment2 = "";
             string comment3 = "";
@@ -452,10 +458,8 @@ namespace TEAMModelOS.SDK.Models.Service
                 studentPdfs.Add(studentPdf);
             });
             // _ = _httpTrigger.RequestHttpTrigger(new { studentPdfs = studentPdfs, artResults, schoolCode = $"{_schoolId}" }, _option.Location, "gen-art-pdf");
-            var messageBlobPDF = new ServiceBusMessage(new { studentPdfs = studentPdfs, artResults, schoolCode = $"{_schoolId}", bizType = "ArtStudentPdf" }.ToJsonString());
-            var GenPdfQueue = _configuration.GetValue<string>("Azure:ServiceBus:GenPdfQueue");
-            await _serviceBus.GetServiceBusClient().SendMessageAsync(GenPdfQueue, messageBlobPDF);
-            return studentPdfs;
+           
+            return (studentPdfs, artResults);
         }
         private static  JsonDocument readFileJson(string path)
         {

+ 1 - 1
TEAMModelOS.SDK/Models/Service/LessonService.cs

@@ -35,7 +35,7 @@ namespace TEAMModelOS.SDK.Models.Service
                     dict.Add("tmdid", tmdid);
                 }
                 else if(tmdid.ValueKind.Equals(JsonValueKind.Array)) {
-                    dict.Add("tmdid[*]", tmdid);
+                    dict.Add("tmdid", tmdid);
                 }
             }
             if (request.TryGetProperty("courseId", out JsonElement courseId) && !string.IsNullOrWhiteSpace($"{courseId}"))

+ 1 - 0
TEAMModelOS/ClientApp/public/lang/en-US.js

@@ -2581,6 +2581,7 @@ const LANG_EN_US = {
             perviewLabel: 'Exam Files Preview',
             importLabel: 'Import Instruction',
             answerPreview: 'Answering Preview',
+            completeScore: 'Auto-grading cloze questions',
             errTips1: 'Cannot be empty!',
             errTips2: 'Please select type!',
             errTips3: 'Please select type!',

+ 1 - 0
TEAMModelOS/ClientApp/public/lang/zh-CN.js

@@ -2581,6 +2581,7 @@ const LANG_ZH_CN = {
             perviewLabel: '试卷预览',
             importLabel: '导入说明',
             answerPreview: '作答预览',
+            completeScore: '填空题自动评分',
             errTips1: '评测名称不能为空',
             errTips2: '测试类型不能为空',
             errTips3: '评量模式不能为空',

+ 1 - 0
TEAMModelOS/ClientApp/public/lang/zh-TW.js

@@ -2583,6 +2583,7 @@ const LANG_ZH_TW = {
             perviewLabel: '試卷預覽',
             importLabel: '匯入說明',
             answerPreview: '作答預覽',
+            completeScore: '填充題自動評分',
             errTips1: '評量名稱不能為空!',
             errTips2: '測試類型不能為空!',
             errTips3: '評量模式不能為空!',

+ 33 - 15
TEAMModelOS/ClientApp/src/css/site.css

@@ -350,9 +350,10 @@ audio::-internal-media-controls-overflow-button {
 	color: #70b1e7;
 }
 
-dot{
+dot {
 	position: relative;
 }
+
 dot::before {
 	position: absolute;
 	content: '';
@@ -363,29 +364,46 @@ dot::before {
 	background: url('https://teammodeltest.blob.core.chinacloudapi.cn/download/dot.png') repeat-x 0 center;
 }
 
-@font-face{
-    font-family: yjsz;
-    src:url('../assets/iconfont/NUMBER.ttf');
+@font-face {
+	font-family: yjsz;
+	src: url('../assets/iconfont/NUMBER.ttf');
 }
 
-@font-face{
-    font-family: staticFont;
-    src:url('../assets/iconfont/DS-DIGIT.TTF');
+@font-face {
+	font-family: staticFont;
+	src: url('../assets/iconfont/DS-DIGIT.TTF');
 }
 
-.ac-list-scroll{
+.ac-list-scroll {
 	width: 100% !important;
 	height: 100%;
 }
 
-.ac-list-scroll .ivu-scroll-container{
+.ac-list-scroll .ivu-scroll-container {
 	height: 100% !important;
-	width:100%;
-	}
-.ac-list-scroll .ivu-scroll-loader:first-child{
-	display:none;
-}	
+	width: 100%;
+}
+
+.ac-list-scroll .ivu-scroll-loader:first-child {
+	display: none;
+}
 
-.tooltip-custom .ivu-tooltip-inner{
+.tooltip-custom .ivu-tooltip-inner {
 	max-width: unset !important;
+}
+
+.dash-title-text {
+	font-size: 28px;
+	font-weight: bold;
+	position: absolute;
+	letter-spacing: 3px;
+	display: inline-block;
+	background-image: linear-gradient(#00b5ef, #7393a6);
+	background-clip: text;
+	font-family: auto;
+	color: transparent;
+	bottom: 15px;
+	left: 50%;
+	transform: translate(-50%);
+	width: 80%;
 }

+ 1 - 1
TEAMModelOS/ClientApp/src/view/art/SchoolArt.vue

@@ -31,7 +31,7 @@
           <div class="d-flex jc-center">
             <dv-decoration-8 class="dv-dec-8" :color="['#568aea', '#000000']" />
             <div class="title">
-              <span class="title-text">艺术测评看板</span>
+              <span class="dash-title-text">艺术测评看板</span>
               <dv-decoration-6 class="dv-dec-6" :reverse="true" :color="['#50e3c2', '#67a1e5']" />
             </div>
             <dv-decoration-8 class="dv-dec-8" :reverse="true" :color="['#568aea', '#000000']" />

+ 1 - 1
TEAMModelOS/ClientApp/src/view/classrecord/ClassRecord.vue

@@ -60,7 +60,7 @@
                     <span class="static-label">生均互动数</span>
                   </div>
                   <div class="static-item">
-                    <span class="static-value">{{ recordInfo.collateTaskCount }}</span>
+                    <span class="static-value">{{ recordInfo.hitaClientCmpCount }}</span>
                     <span class="static-label">任务总数</span>
                   </div>
                   <div class="static-item">

+ 1 - 0
TEAMModelOS/ClientApp/src/view/classrecord/eventchart/Exam.vue

@@ -52,6 +52,7 @@ export default {
     },
     methods: {
         toEvDetail() {
+            console.log(this.recordInfo.tmdid)
             this.$router.push({
                 path: '/home/evDetail',
                 query: {

+ 2 - 1
TEAMModelOS/ClientApp/src/view/classrecord/eventchart/ExamTable.vue

@@ -123,7 +123,8 @@ export default {
                 path: '/home/evDetail',
                 query: {
                     examId: this.examInfo.id,
-                    code: `Exam-${this.$store.state.userInfo.TEAMModelId}`
+                    //code: `Exam-${this.$store.state.userInfo.TEAMModelId}`
+                    code: `Exam-${this.recordInfo.tmdid}`
                 }
             })
         },

+ 3 - 3
TEAMModelOS/ClientApp/src/view/dashboard/Art.vue

@@ -31,7 +31,7 @@
           <div class="d-flex jc-center">
             <dv-decoration-8 class="dv-dec-8" :color="['#568aea', '#000000']" />
             <div class="title">
-              <span class="title-text">艺术测评看板</span>
+              <span class="dash-title-text">艺术测评看板</span>
               <dv-decoration-6 class="dv-dec-6" :reverse="true" :color="['#50e3c2', '#67a1e5']" />
             </div>
             <dv-decoration-8 class="dv-dec-8" :reverse="true" :color="['#568aea', '#000000']" />
@@ -112,9 +112,9 @@ export default {
     RightTop,
   },
   mounted() {
-    this.$nextTick(() => {
+    setTimeout(() => {
       this.$tools.fullScreen(document.getElementById('artIndex'))
-    })
+    }, 600)
     this.timeFn()
   },
   beforeDestroy() {

+ 1 - 1
TEAMModelOS/ClientApp/src/view/dashboard/Research.vue

@@ -20,7 +20,7 @@
           <div class="d-flex jc-center">
             <dv-decoration-8 class="dv-dec-8" :color="['#568aea', '#000000']" />
             <div class="title">
-              <span class="title-text">{{ $t('researchCenter.dashboard.title2') }}</span>
+              <span class="dash-title-text">{{ $t('researchCenter.dashboard.title2') }}</span>
               <dv-decoration-6 class="dv-dec-6" :reverse="true" :color="['#50e3c2', '#67a1e5']" />
             </div>
             <dv-decoration-8 class="dv-dec-8" :reverse="true" :color="['#568aea', '#000000']" />

+ 1 - 1
TEAMModelOS/ClientApp/src/view/dashboard/Student.vue

@@ -19,7 +19,7 @@
           <div class="d-flex jc-center">
             <dv-decoration-8 class="dv-dec-8" :color="['#568aea', '#000000']" />
             <div class="title">
-              <span class="title-text">学生大数据画像看板</span>
+              <span class="dash-title-text">学生大数据画像看板</span>
               <dv-decoration-6 class="dv-dec-6" :reverse="true" :color="['#50e3c2', '#67a1e5']" />
             </div>
             <dv-decoration-8 class="dv-dec-8" :reverse="true" :color="['#568aea', '#000000']" />

+ 1 - 1
TEAMModelOS/ClientApp/src/view/dashboard/StudentAll.vue

@@ -19,7 +19,7 @@
             <dv-decoration-8 class="dv-dec-8" :color="['#568aea', '#000000']" />
             <!-- <img src="https://ydzt.cdwalker.com/health/static/img/header.d55c582c.png" alt="" style="position:absolute;left:0;top:-20px;"> -->
             <div class="title">
-              <span class="title-text">学生大数据画像看板</span>
+              <span class="dash-title-text">学生大数据画像看板</span>
               <dv-decoration-6 class="dv-dec-6" :reverse="true" :color="['#50e3c2', '#67a1e5']" />
             </div>
             <dv-decoration-8 class="dv-dec-8" :reverse="true" :color="['#568aea', '#000000']" />

+ 9 - 2
TEAMModelOS/ClientApp/src/view/dashboard/fiveEdu/FiveEdu.less

@@ -362,12 +362,19 @@
             background-repeat: no-repeat;
 
             .title-text {
-                font-size: 24px;
+                font-size: 28px;
                 font-weight: bold;
                 position: absolute;
-                bottom: 20px;
+                letter-spacing: 3px;
+                display: inline-block;
+                background-image: linear-gradient(#00b5ef, #7393a6);
+                background-clip: text;
+                font-family: auto;
+                color: transparent;
+                bottom: 15px;
                 left: 50%;
                 transform: translate(-50%);
+                width: 80%;
             }
 
             .dv-dec-6 {

+ 9 - 3
TEAMModelOS/ClientApp/src/view/dashboard/fiveEdu/FiveEdu.vue

@@ -20,7 +20,7 @@
           <div class="d-flex jc-center">
             <dv-decoration-8 class="dv-dec-8" :color="['#568aea', '#000000']" />
             <div class="title">
-              <span class="title-text">学生五育大数据看板</span>
+              <span class="dash-title-text">学生五育大数据看板</span>
               <dv-decoration-6 class="dv-dec-6" :reverse="true" :color="['#50e3c2', '#67a1e5']" />
             </div>
             <dv-decoration-8 class="dv-dec-8" :reverse="true" :color="['#568aea', '#000000']" />
@@ -178,6 +178,10 @@
 
         <StudyDash v-else-if="activeMenuId === 'study'"></StudyDash>
         <MoralDash v-else-if="activeMenuId === 'moral'"></MoralDash>
+        <!-- <ArtDash v-else-if="activeMenuId === 'art'"></ArtDash> -->
+        <div class="sport-box" style="width:100%;height:90vh;padding-top:25px;" v-show="activeMenuId === 'sport'">
+          <iframe src="https://ydztshow.cdwalker.com/app-health-100/smart-course" width="100%" height="100%" frameborder="0"></iframe>
+        </div>
       </div>
 
     </div>
@@ -201,6 +205,7 @@ import StudentDetails from '../Student'
 import BaseProgressBar from '@/components/dashboard/student/BaseProgressBar'
 import StudyDash from '../study/StudyDash'
 import MoralDash from '../moral/MoralDash'
+import ArtDash from '../Art.vue'
 export default {
   data() {
     return {
@@ -351,6 +356,7 @@ export default {
   },
   components: {
     StudyDash,
+    ArtDash,
     MoralDash,
     countTo,
     StudentDetails,
@@ -408,7 +414,7 @@ export default {
           break;
         case 'sport':
           if (this.isTestView) {
-            window.open('https://ydztshow.cdwalker.com/app-health-100/smart-course')
+            // window.open('https://ydztshow.cdwalker.com/app-health-100/smart-course')
             this.activeMenuId = menu.id
           } else {
             this.noAuthModal = true
@@ -416,7 +422,7 @@ export default {
           }
           break;
         case 'art':
-          this.$tools.exitFullscreen()
+          // this.$tools.exitFullscreen()
           this.$router.push('/artDashboard')
           this.activeMenuId = menu.id
           break;

+ 11 - 3
TEAMModelOS/ClientApp/src/view/learnactivity/CreatePrivEva.vue

@@ -66,6 +66,9 @@
                             <FormItem :label="$t('learnActivity.createEv.endTime')" prop="endTime">
                                 <DatePicker :options="dateOpt1" type="datetime" format="yyyy/MM/dd HH:mm" v-model="endTime" split-panels :placeholder="$t('learnActivity.createEv.eTimeHolder')" style="width:100%" @on-change="getDate($event,1)"></DatePicker>
                             </FormItem>
+                            <FormItem>
+                                <Checkbox v-model="evaluationInfo.isCompletion">{{ $t('learnActivity.createEv.completeScore') }}</Checkbox>
+                            </FormItem>
                         </Form>
                     </vuescroll>
                 </div>
@@ -169,7 +172,8 @@ export default {
                 startTime: undefined,
                 endTime: undefined,
                 paperInfo: [],
-                papers: []
+                papers: [],
+                isCompletion: 0
             },
             mode: '',
             selectBefore: [],
@@ -467,7 +471,8 @@ export default {
                 endTime: this.evaluationInfo.endTime,
                 scope: this.evaluationInfo.scope,
                 createDate: Math.round(new Date()),
-                owner: 'teacher' //后面新增字段
+                owner: 'teacher', //后面新增字段
+                isCompletion: this.evaluationInfo.isCompletion ? 1 : 0
             }
 
             this.$api.learnActivity.SaveExamInfo(requestData).then(
@@ -601,7 +606,10 @@ export default {
             let rule = this.evaluationInfo.paperInfo
             if (data) {
                 let paperDto = []
-                let typeArr = ['single', 'multiple', 'judge', 'complete']
+                let typeArr = ['single', 'multiple', 'judge']
+                if(this.evaluationInfo.isCompletion) {
+                    typeArr.push('complete')
+                }
                 for (let i = 0; i < data.length; i++) {
                     if (data[i].blob.indexOf('/exam/') == 0) {
                         paperDto.push(data[i])

+ 12 - 4
TEAMModelOS/ClientApp/src/view/learnactivity/CreateSchoolEva.vue

@@ -83,6 +83,9 @@
                                 </label>
                                 <InputNumber :max="100" :min="1" v-model="evaluationInfo.touch" style="width:100%" :formatter="value => `${value}${$t('schoolBaseInfo.scoreUnit')}`" :parser="value => value.replace($t('schoolBaseInfo.scoreUnit'), '')"></InputNumber>
                             </FormItem>
+                            <FormItem>
+                                <Checkbox v-model="evaluationInfo.isCompletion">{{ $t('learnActivity.createEv.completeScore') }}</Checkbox>
+                            </FormItem>
                         </Form>
                     </vuescroll>
                 </div>
@@ -238,7 +241,8 @@ export default {
                 paperInfo: [],
                 papers: [],
                 income: 0,
-                touch: 0
+                touch: 0,
+                isCompletion: 0
             },
             mode: '',
             befPeriod: {
@@ -672,9 +676,10 @@ export default {
                 createDate: Math.round(new Date()),
                 owner: 'school', //后面新增字段
                 income: this.evaluationInfo.income,
-                touch: this.evaluationInfo.touch
+                touch: this.evaluationInfo.touch,
+                isCompletion: this.evaluationInfo.isCompletion ? 1 : 0
             }
-
+            
             this.$api.learnActivity.SaveExamInfo(requestData).then(
                 res => {
                     if (res.error) {
@@ -789,7 +794,10 @@ export default {
             let rule = this.evaluationInfo.paperInfo
             if (data) {
                 let paperDto = []
-                let typeArr = ['single', 'multiple', 'judge', 'complete']
+                let typeArr = ['single', 'multiple', 'judge']
+                if(this.evaluationInfo.isCompletion) {
+                    typeArr.push('complete')
+                }
                 for (let i = 0; i < data.length; i++) {
                     console.log(data[i])
                     if (data[i].blob.indexOf('/exam/') == 0) {

+ 1 - 1
TEAMModelOS/ClientApp/src/view/research-center/ResearchMgt.vue

@@ -559,7 +559,7 @@ export default {
                   whiteSpace: 'normal',
                   wordBreak: 'break-all'
                 }
-              }, `智慧课堂中发布的任务次数`)
+              }, `智慧课堂中发布的任务及HITA作品回帖次数`)
               ])
             ])
           }

+ 4 - 0
TEAMModelOS/Controllers/Both/LessonRecordController.cs

@@ -391,6 +391,10 @@ namespace TEAMModelOS.Controllers
                 sql_status_managePage = "";
             }
             cosmosDbQuery.QueryText = cosmosDbQuery.QueryText.Replace("where", $" where {sql_status_managePage} array_length(c.groupIds)>0 {sqlPrivate} {sqlShow}  and  ");
+            if (request.TryGetProperty("singleGreen", out JsonElement doubleGreen) && doubleGreen.GetBoolean())
+            {
+                cosmosDbQuery.QueryText = cosmosDbQuery.QueryText.Replace("where", $" where  ((c.tLevel=2 and c.pLevel<2 )or(c.tLevel<2 and c.pLevel=2 )) and   ");
+            }
             List<LessonRecord> records = new List<LessonRecord>();
             await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, tbname).GetItemQueryIterator<LessonRecord>(queryDefinition: cosmosDbQuery.CosmosQueryDefinition, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey(code) }))
             {

+ 3 - 12
TEAMModelOS/Controllers/School/ArtReviewController.cs

@@ -102,22 +102,13 @@ namespace TEAMModelOS.Controllers
             {
                 return BadRequest();
             }
-
             List<string> studentIds = new List<string>();
             if (request.TryGetProperty("studentIds", out JsonElement _studentIds) && _studentIds.ValueKind.Equals(JsonValueKind.Array))
             {
                 studentIds = _studentIds.ToObject<List<string>>();
             }
-
-
-            var messageBlobPDF = new ServiceBusMessage(new { studentIds = studentIds, artId= $"{_artId}", head_lang, schoolCode = $"{_schoolId}", bizType = "ArtStudentPdf" }.ToJsonString());
-            var GenPdfQueue = _configuration.GetValue<string>("Azure:ServiceBus:GenPdfQueue");
-            await _serviceBus.GetServiceBusClient().SendMessageAsync(GenPdfQueue, messageBlobPDF);
-            var client = _azureCosmos.GetCosmosClient();
-
-          
-            //List<ArtStudentPdf> studentPdfs = await ArtService.GenArtPDF(artResults, $"{_artId}", $"{_schoolId}", head_lang, _azureCosmos, _environment, _coreAPIHttpService, _dingDing, _serviceBus, _configuration);
-            return Ok(new { /*count = studentPdfs.Count(), studentIds = studentPdfs.Select(z => z.studentId)*/ });
+            await ArtService.GenArtPDF(studentIds, $"{_artId}", $"{_schoolId}", head_lang, _azureCosmos, _environment, _coreAPIHttpService, _dingDing, _serviceBus, _configuration);
+            return Ok(new {code=0,msg="加入PDF报告生成队列中。" });
         }
         /// <summary>
         /// 
@@ -397,7 +388,7 @@ namespace TEAMModelOS.Controllers
                                     await client.GetContainer(Constant.TEAMModelOS, Constant.Student).ReplaceItemAsync(rs, rs.id, new PartitionKey(rs.code));
                                 }
                                 if (artResults.Any()) {
-                                    List<ArtStudentPdf> studentPdfs = await ArtService.GenArtPDF(artResults.Select(z=>z.studentId).ToList(), $"{_artId}", $"{school}", head_lang, _azureCosmos, _environment, _coreAPIHttpService, _dingDing, _serviceBus, _configuration);
+                                    await ArtService.GenArtPDF(artResults.Select(z=>z.studentId).ToList(), $"{_artId}", $"{school}", head_lang, _azureCosmos, _environment, _coreAPIHttpService, _dingDing, _serviceBus, _configuration);
                                 }
                                 return Ok(new { results = studentArtResults, status = 1 });
                             }