فهرست منبع

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

Li 3 سال پیش
والد
کامیت
eec646503d
33فایلهای تغییر یافته به همراه346 افزوده شده و 141 حذف شده
  1. 2 1
      TEAMModelFunction/MonitorServicesBus.cs
  2. 6 21
      TEAMModelOS.SDK/Models/Service/StatisticsService.cs
  3. 49 3
      TEAMModelOS/ClientApp/src/assets/iconfont/demo_index.html
  4. 11 3
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.css
  5. 1 1
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.js
  6. 14 0
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.json
  7. BIN
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.ttf
  8. BIN
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.woff
  9. BIN
      TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.woff2
  10. 0 1
      TEAMModelOS/ClientApp/src/common/BaseLayout.vue
  11. 1 1
      TEAMModelOS/ClientApp/src/common/UploadModal.vue
  12. 2 2
      TEAMModelOS/ClientApp/src/components/public/personalPhoto/Index.less
  13. 2 0
      TEAMModelOS/ClientApp/src/locale/lang/en-US/cusMgt.js
  14. 2 0
      TEAMModelOS/ClientApp/src/locale/lang/zh-CN/cusMgt.js
  15. 2 0
      TEAMModelOS/ClientApp/src/locale/lang/zh-TW/cusMgt.js
  16. 31 1
      TEAMModelOS/ClientApp/src/utils/blobTool.js
  17. 1 1
      TEAMModelOS/ClientApp/src/utils/public.js
  18. 2 2
      TEAMModelOS/ClientApp/src/view/ability/Review.vue
  19. 13 6
      TEAMModelOS/ClientApp/src/view/assessment/Assessment.vue
  20. 2 2
      TEAMModelOS/ClientApp/src/view/classmgt/ClassMgt.vue
  21. 1 1
      TEAMModelOS/ClientApp/src/view/homepage/NewHomePage.vue
  22. 2 2
      TEAMModelOS/ClientApp/src/view/jyzx/Vote.vue
  23. 8 6
      TEAMModelOS/ClientApp/src/view/jyzx/classMemoir.vue
  24. 10 0
      TEAMModelOS/ClientApp/src/view/statistics/Dashboard.less
  25. 13 2
      TEAMModelOS/ClientApp/src/view/statistics/Dashboard.vue
  26. 11 9
      TEAMModelOS/ClientApp/src/view/statistics/TableData.vue
  27. 17 2
      TEAMModelOS/ClientApp/src/view/train/TrainDetail.vue
  28. 5 5
      TEAMModelOS/ClientApp/src/view/trainList/Join.vue
  29. 1 1
      TEAMModelOS/ClientApp/src/view/video/VideoReview.vue
  30. 130 61
      TEAMModelOS/Controllers/Common/HomeworkController.cs
  31. 2 2
      TEAMModelOS/Controllers/Common/StudyController.cs
  32. 2 2
      TEAMModelOS/Properties/launchSettings.json
  33. 3 3
      TEAMModelOS/TEAMModelOS.csproj

+ 2 - 1
TEAMModelFunction/MonitorServicesBus.cs

@@ -370,7 +370,8 @@ namespace TEAMModelFunction
         [FunctionName("TeacherTrainChange")]
         public async Task TeacherTrainChange([ServiceBusTrigger("%Azure:ServiceBus:ActiveTask%", "teacher-train-change", Connection = "Azure:ServiceBus:ConnectionString")] string msg) {
             TeacherTrainChange change = msg.ToObject<TeacherTrainChange>();
-            if(change.update == null || change.update.Count <= 0)
+            //await _dingDing.SendBotMsg($"TeacherTrainChange:\n{msg}", GroupNames.醍摩豆服務運維群組);
+            if (change.update == null || change.update.Count <= 0)
             {
                 return;
             }

+ 6 - 21
TEAMModelOS.SDK/Models/Service/StatisticsService.cs

@@ -376,21 +376,21 @@ namespace TEAMModelOS.SDK
             {
                 studyRecords.Add(item);
             }
+            string rcdsql  = $" where c.id in ({string.Join(",", studies.FindAll(x=>!string.IsNullOrEmpty(x.workId)).Select(o => $"'{o.workId}'"))})";
             List<HomeworkRecord> homeworkRecords = new List<HomeworkRecord>();
             await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher")
-            .GetItemQueryIterator<HomeworkRecord>(queryText: $"select value(c) from c {insql} ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"HomeworkRecord-{_tmdid}") }))
+            .GetItemQueryIterator<HomeworkRecord>(queryText: $"select value(c) from c {rcdsql} ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"HomeworkRecord-{_tmdid}") }))
             {
                 homeworkRecords.Add(item);
             }
             List<OfflineRecord> offlines = new List<OfflineRecord>();
             activities.ForEach(item => {
                 Study study = studies.Find(y=>y.id.Equals(item.id));
-                StudyRecord studyRecord= studyRecords.Find(y => y.id.Equals(item.id));
-                HomeworkRecord homeworkRecord= homeworkRecords.Find(y => y.id.Equals(item.id));
-                Attachment attachment = homeworkRecord!=null ? homeworkRecord.content.Find(x => x.prime):null;
-                if (!string.IsNullOrEmpty(item.owner) && study != null && !item.owner.Equals("area") )
+                if (!string.IsNullOrEmpty(item.owner) && study != null && !string.IsNullOrEmpty(study.workId) && !item.owner.Equals("area") )
                 {
-                    
+                    StudyRecord studyRecord = studyRecords.Find(y => y.id.Equals(item.id));
+                    HomeworkRecord homeworkRecord = homeworkRecords.Find(y => y.id.Equals(study.workId));
+                    Attachment attachment = homeworkRecord != null ? homeworkRecord.content.Find(x => x.prime) : null;
                     OfflineRecord record = new OfflineRecord
                     {
                         id = item.id,
@@ -415,21 +415,6 @@ namespace TEAMModelOS.SDK
                         else {
                             record.score = -1;
                         }
-                        //取消转换
-                        //if (studyRecord.status == 1)
-                        //{
-                        //    record.score = 1;
-                        //    record.done = 1;
-                        //}
-                        //if (studyRecord.status == 0)
-                        //{
-                        //    record.score = -1;
-                        //}
-                        //if (studyRecord.status == 2)
-                        //{
-                        //    record.score = 0;
-                        //    record.done = 1;
-                        //}
                     }
                     if (null != attachment)
                     {

+ 49 - 3
TEAMModelOS/ClientApp/src/assets/iconfont/demo_index.html

@@ -54,6 +54,18 @@
       <div class="content unicode" style="display: block;">
           <ul class="icon_lists dib-box">
           
+            <li class="dib">
+              <span class="icon iconfont">&#xe6fb;</span>
+                <div class="name">培训专区</div>
+                <div class="code-name">&amp;#xe6fb;</div>
+              </li>
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe658;</span>
+                <div class="name">提交</div>
+                <div class="code-name">&amp;#xe658;</div>
+              </li>
+          
             <li class="dib">
               <span class="icon iconfont">&#xe657;</span>
                 <div class="name">icon-头像</div>
@@ -966,9 +978,9 @@
 <pre><code class="language-css"
 >@font-face {
   font-family: 'iconfont';
-  src: url('iconfont.woff2?t=1638010010922') format('woff2'),
-       url('iconfont.woff?t=1638010010922') format('woff'),
-       url('iconfont.ttf?t=1638010010922') format('truetype');
+  src: url('iconfont.woff2?t=1638152855697') format('woff2'),
+       url('iconfont.woff?t=1638152855697') format('woff'),
+       url('iconfont.ttf?t=1638152855697') format('truetype');
 }
 </code></pre>
           <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@@ -994,6 +1006,24 @@
       <div class="content font-class">
         <ul class="icon_lists dib-box">
           
+          <li class="dib">
+            <span class="icon iconfont icon-offline"></span>
+            <div class="name">
+              培训专区
+            </div>
+            <div class="code-name">.icon-offline
+            </div>
+          </li>
+          
+          <li class="dib">
+            <span class="icon iconfont icon-submit"></span>
+            <div class="name">
+              提交
+            </div>
+            <div class="code-name">.icon-submit
+            </div>
+          </li>
+          
           <li class="dib">
             <span class="icon iconfont icon-is-leader"></span>
             <div class="name">
@@ -2362,6 +2392,22 @@
       <div class="content symbol">
           <ul class="icon_lists dib-box">
           
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-offline"></use>
+                </svg>
+                <div class="name">培训专区</div>
+                <div class="code-name">#icon-offline</div>
+            </li>
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-submit"></use>
+                </svg>
+                <div class="name">提交</div>
+                <div class="code-name">#icon-submit</div>
+            </li>
+          
             <li class="dib">
                 <svg class="icon svg-icon" aria-hidden="true">
                   <use xlink:href="#icon-is-leader"></use>

+ 11 - 3
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.css

@@ -1,8 +1,8 @@
 @font-face {
   font-family: "iconfont"; /* Project id 2000444 */
-  src: url('iconfont.woff2?t=1638010010922') format('woff2'),
-       url('iconfont.woff?t=1638010010922') format('woff'),
-       url('iconfont.ttf?t=1638010010922') format('truetype');
+  src: url('iconfont.woff2?t=1638152855697') format('woff2'),
+       url('iconfont.woff?t=1638152855697') format('woff'),
+       url('iconfont.ttf?t=1638152855697') format('truetype');
 }
 
 .iconfont {
@@ -13,6 +13,14 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-offline:before {
+  content: "\e6fb";
+}
+
+.icon-submit:before {
+  content: "\e658";
+}
+
 .icon-is-leader:before {
   content: "\e657";
 }

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 1
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.js


+ 14 - 0
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.json

@@ -5,6 +5,20 @@
   "css_prefix_text": "icon-",
   "description": "",
   "glyphs": [
+    {
+      "icon_id": "1013267",
+      "name": "培训专区",
+      "font_class": "offline",
+      "unicode": "e6fb",
+      "unicode_decimal": 59131
+    },
+    {
+      "icon_id": "9512645",
+      "name": "提交",
+      "font_class": "submit",
+      "unicode": "e658",
+      "unicode_decimal": 58968
+    },
     {
       "icon_id": "868307",
       "name": "icon-头像",

BIN
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.ttf


BIN
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.woff


BIN
TEAMModelOS/ClientApp/src/assets/iconfont/iconfont.woff2


+ 0 - 1
TEAMModelOS/ClientApp/src/common/BaseLayout.vue

@@ -912,7 +912,6 @@ html,
 body {
 	 // font-family:"Microsoft YaHei",'微軟正黑體','Microsoft JhengHei UI','Microsoft JhengHei';
 	// font-family:'微軟正黑體','Microsoft JhengHei UI','Microsoft JhengHei';
-	min-width: 1400px;
 }
 
 .biz-menu .ivu-menu-vertical .ivu-menu-item-group-title {

+ 1 - 1
TEAMModelOS/ClientApp/src/common/UploadModal.vue

@@ -296,7 +296,7 @@ export default {
         },
         // modal确认事件
         modalOk() {
-            if (!this.tags.period.length) {
+            if (this.$store.state.userInfo.hasSchool && !this.tags.period.length) {
                 this.$Message.warning('请至少选择一个学段')
                 this.modalLoading = false
                 setTimeout(() => {

+ 2 - 2
TEAMModelOS/ClientApp/src/components/public/personalPhoto/Index.less

@@ -4,8 +4,8 @@
     justify-content: center;
     .avatar{
         display: flex;
-        width: 33px;
-		height: 33px;
+        width: 40px;
+		height: 40px;
         border-radius: 50%;
         align-items: center;
         justify-content: center;

+ 2 - 0
TEAMModelOS/ClientApp/src/locale/lang/en-US/cusMgt.js

@@ -118,6 +118,8 @@ export default {
     justRmList:'Remove from course list only (not actually deleted, list can continue to be used)',
     permDelList:'Permanent deletion (other courses using this list will also be deleted)',
     //ManageClass.vue
+    stuMgt:'學生管理',
+    classNotice:'班級公告',
     classLabel:'Class:',
     stuCount:'Student Number: ',
     autoGroup:'Auto Grouping',

+ 2 - 0
TEAMModelOS/ClientApp/src/locale/lang/zh-CN/cusMgt.js

@@ -118,6 +118,8 @@ export default {
     justRmList:'仅从课程名单移除(没有真正删除,名单可继续使用)',
     permDelList:'永久删除 (如果其他课程在使用名单也会关联删除)',
     //ManageClass.vue
+    stuMgt:'学生管理',
+    classNotice:'班级公告',
     classLabel:'班级:',
     stuCount:'学生人数:',
     autoGroup:'自动分组',

+ 2 - 0
TEAMModelOS/ClientApp/src/locale/lang/zh-TW/cusMgt.js

@@ -118,6 +118,8 @@ export default {
     justRmList:'僅從課程名單移除(沒有真正刪除,名單可繼續使用)',
     permDelList:'永久刪除 (如果其他課程在使用名單也會關聯刪除)',
     //ManageClass.vue
+    stuMgt:'學生管理',
+    classNotice:'班級公告',
     classLabel: '班級:',
     stuCount: '學生人數:',
     autoGroup: '自動分組',

+ 31 - 1
TEAMModelOS/ClientApp/src/utils/blobTool.js

@@ -85,11 +85,41 @@ export default class BlobTool {
     }
     /**
      * 获取指定分块的md5值
+     * @param {any} url 相对路径 eg: video/test.mp4
      */
-     getBlockMD5(url) {
+    getBlockMD5(url) {
         let blobClient = this.containerClient.getBlockBlobClient(url)
         return blobClient.download(0, 4 * 1024 * 1024 - 100, { rangeGetContentMD5: true })
     }
+    /**
+     * 通过地址下载文件
+     * @param {any} url 相对路径 eg: video/test.mp4
+     */
+    downloadToFile(url) {
+        let blobClient = this.containerClient.getBlockBlobClient(url)
+        blobClient.download().then(
+            res => {
+                console.log('返回信息', res)
+                res.blobBody.then(
+                    blobRes => {
+                        console.log('blob结果', blobRes)
+                        let a = document.createElement("a")
+                        let url = window.URL.createObjectURL(blobRes)
+                        a.href = url
+                        a.download = 'test'
+                        a.click()
+                        window.URL.revokeObjectURL(url)
+                    },
+                    blobErr => {
+                        console.error('blob结果', blobErr)
+                    }
+                )
+            },
+            err => {
+                console.error('下载失败')
+            }
+        )
+    }
 
     /**
      * 上传文件方法,带回调上传进度

+ 1 - 1
TEAMModelOS/ClientApp/src/utils/public.js

@@ -623,7 +623,7 @@ export default {
 	/* 获取文件的MD5 */
 	getFileMD5(file){
 		return new Promise((r,j) => {
-			const CHUNK_SIZE = 10485760;  // 大文件获取数前10M大小
+			const CHUNK_SIZE = 4194304;  // 大文件获取数前4M大小
 			const fileReader = new FileReader();
 			const chunkFile = file.slice(0, CHUNK_SIZE);
 			fileReader.readAsBinaryString(chunkFile);

+ 2 - 2
TEAMModelOS/ClientApp/src/view/ability/Review.vue

@@ -35,7 +35,7 @@
                 <div class="file-action">
                   <span @click="onPreview(file)">{{ $t('ability.review.preview') }}</span>
                   <span @click="onDownload(file)">{{ $t('ability.review.download') }}</span>
-                  <span @click="onDelete(file,fileIndex,index)" v-if="mode === 'self'">{{ $t('ability.review.delete') }}</span>
+                  <span @click="onDelete(file,fileIndex,index)" v-if="isSelfMode">{{ $t('ability.review.delete') }}</span>
                 </div>
               </div>
             </div>
@@ -124,7 +124,7 @@
       <div class="modal-header" slot="header">
         <span>{{ $t('syllabus.upload') }}</span>
       </div>
-      <AbilityUpload v-if="uploadModal" :auth="curSas" :acceptTypes="extLimit" :scope="'school'" mode="modal" :prefix="curPrefix" @uploadFinish="uploadFinish"></AbilityUpload>
+      <AbilityUpload v-if="uploadModal" singleUpload :auth="curSas" :acceptTypes="extLimit" :scope="'school'" mode="modal" :prefix="curPrefix" @uploadFinish="uploadFinish"></AbilityUpload>
     </Modal>
   </div>
 </template>

+ 13 - 6
TEAMModelOS/ClientApp/src/view/assessment/Assessment.vue

@@ -15,7 +15,7 @@
 					<Select v-model="curStatus" style="width:200px;margin-left: 15px;" @on-change="doFilter">
 						<Option v-for="(item,index) in statusList" :value="index" :key="index">
 							{{ item }} 
-							<span v-if="index > 0">( {{ assessmentList.filter(i => i.finalScore === index - 2).length }}人 )</span>
+							<span v-if="index > 0">( {{ getStatusCount(index - 2) }}人 )</span>
 						</Option>
 					</Select>
 					<!-- 搜索框 -->
@@ -667,7 +667,7 @@
 					this.assessmentList.filter(i => i.finalScore === 0).length,
 					this.assessmentList.filter(i => i.finalScore === -1).length
 				]
-				this.rateArr = this.countArr.map(i => ((i / this.assessmentList.length).toFixed(1)) * 100 + '%')
+				this.rateArr = this.countArr.map(i => this.assessmentList.length ? (((i / this.assessmentList.length).toFixed(1)) * 100 + '%') : 0)
 			},
 			/* 设置互评开关前操作 */
 			beforeHpAppraiseChange() {
@@ -748,7 +748,8 @@
 				});
 				this.assessmentList.forEach(i => {
 					i.trains.forEach(j => {
-						if(j.haswork && j.url){
+						// 如果研修活动要求提交PDF但是教师没有提交 则不会纳入批量通过的名单
+						if(j.haswork && !j.url){
 							noPdfArr.push({
 								tmdId:i.userInfo.tmdId,
 								tmdName:i.userInfo.name,
@@ -759,8 +760,8 @@
 					})
 				})
 				// 如果有需要批量改状态的数据 则访问API进行修改
-				// if(Object.values(params).some(i => i.length)){
-				if(true){
+				if(Object.values(params).some(i => i.length)){
+				// if(true){
 					let batchScore = 1
 					this.tableLoading = true
 					this.$api.ability.AuditStudy({
@@ -797,7 +798,7 @@
 				this.tableLoading = true
 				this.$api.ability.batchAbility({
 					tmdids:tmdIds,
-					score:0,
+					score:1,
 					roleType:"school"
 				}).then(res => {
 					if(!res.error){
@@ -887,6 +888,12 @@
 						require('@/assets/image/normal.png'), require('@/assets/image/good.png')
 					][finalScore + 1]
 				}
+			},
+			getStatusCount(){
+				return status => {
+					let groupNameVal = this.curGroup === 0 ? 'all' : (this.groupList[this.curGroup] === '未分组' ? null : this.groupList[this.curGroup])
+					return this.originList.filter(i => i.finalScore === status && (groupNameVal === 'all' ? true : (i.userInfo.groupName === groupNameVal))).length
+				}
 			}
 		}
 	}

+ 2 - 2
TEAMModelOS/ClientApp/src/view/classmgt/ClassMgt.vue

@@ -2,8 +2,8 @@
     <div class="class-mgt-container">
         <div class="class-mgt-header">
             <div class="tab-box">
-                <span @click="tabClick('student')" :class="['pane',routerName == 'student' ? 'active':'']">学生管理</span>
-                <span @click="tabClick('classnotice')" :class="['pane',routerName == 'classnotice' || routerName == 'createClassNotice' ? 'active':'']">班级公告</span>
+                <span @click="tabClick('student')" :class="['pane',routerName == 'student' ? 'active':'']">{{$t('cusMgt.stuMgt')}}</span>
+                <span @click="tabClick('classnotice')" :class="['pane',routerName == 'classnotice' || routerName == 'createClassNotice' ? 'active':'']">{{$t('cusMgt.classNotice')}}</span>
             </div>
         </div>
         <router-view></router-view>

+ 1 - 1
TEAMModelOS/ClientApp/src/view/homepage/NewHomePage.vue

@@ -451,9 +451,9 @@ export default {
     },
     created() {
         this.getAcCount()
-        this.getStudyTime()
         if (this.$store.state.userInfo.hasSchool) {
             this.findNotice()
+            this.getStudyTime()
         }
     },
     mounted() {

+ 2 - 2
TEAMModelOS/ClientApp/src/view/jyzx/Vote.vue

@@ -9,7 +9,7 @@
         >
             <div class="list-head">{{ $t("jyzx.activity.voteHeader1") }}</div>
             <vuescroll>
-                <EmptyData v-if="!listShow.length" :top="100"></EmptyData>
+                <EmptyData v-if="!listShow.length"></EmptyData>
                 <div style="margin-bottom: 50px" v-else>
                     <div
                         :id="`event${item.id}`"
@@ -55,7 +55,7 @@
         </div>
         <div style="width: 75%; background-color: #fff;overflow: auto;padding-bottom: 40px;">
             <div class="list-head">{{ $t("jyzx.activity.voteHeader2") }}</div>
-            <EmptyData v-if="!Object.keys(voteInfo).length" :top="-100"></EmptyData>
+            <EmptyData v-if="!Object.keys(voteInfo).length"></EmptyData>
             <div class="vote-option" v-else>
                 <div class="billboard-and-LightBox">
                     <p>

+ 8 - 6
TEAMModelOS/ClientApp/src/view/jyzx/classMemoir.vue

@@ -4,11 +4,12 @@
             <TabPane :label="$t('jyzx.classRecord.myRecod')" name="name1">
                 <Card :bordered="false">
                     <div>
-                        <AbilityUpload  ref="refFile"  :auth="curSas" :acceptTypes="['mp4']" :scope="'school'" mode='video' :prefix="uploadId" @uploadFinish="uploadFinish" singleUpload></AbilityUpload>
+                        <AbilityUpload ref="refFile" :auth="curSas" :acceptTypes="['mp4']" :scope="'school'" mode='video' :prefix="uploadId" @uploadFinish="uploadFinish" singleUpload></AbilityUpload>
                         <div class="hint" v-show="calssListinfo.length !==0">{{tipText}}</div>
                         <Button type="primary" size="large" :long="true" @click="confirm" v-if="!calssListinfo.length" :loading="btnstate">{{ $t('jyzx.classRecord.loadOK') }}</Button>
-                        <Button type="info" size="large" :long="true" @click="confirm" v-else-if="calssListinfo.score !=='1' ||calssListinfo.score !=='2'" :loading="btnstate">重新上传</Button>
-                        <Button type="info" size="large" :long="true" @click="confirm" disabled v-else>{{ $t('jyzx.classRecord.loadOK') }}</Button>
+                        <Button type="info" size="large" :long="true" disabled v-else-if="calssListinfo[0].score ==1 ||calssListinfo[0].score ==2">{{ $t('jyzx.classRecord.loadOK') }}</Button>
+                        <Button type="info" size="large" :long="true" @click="confirm" v-else="calssListinfo[0].score !==1 ||calssListinfo[0].score !==2" :loading="btnstate">重新上传</Button>
+
                     </div>
                     <div v-if="calssListinfo.length" style="height: calc(100vh - 255px); overflow: auto; margin-top: 20px">
                         <Table :columns="classCol" :data="calssListinfo" height="680">
@@ -235,9 +236,9 @@ export default {
         },
         //确认上传
         confirm() {
-            console.log(this, '指向')
+            console.log(this.calssListinfo, this.calssListinfo[0], '当时的文件')
             console.log(this.$refs.refFile, '文件')
-            this.$refs.refFile.fileArr.length ? (this.$refs.refFile.onConfirmUpload(),this.btnstate = true) :this.$Message.error('暂无文件,请选择上传文件')
+            this.$refs.refFile.fileArr.length ? (this.$refs.refFile.onConfirmUpload(), this.btnstate = true) : this.$Message.error('请选择上传文件')
         },
         //获取自己上传列表
         getvideo(action, deleId) {
@@ -253,7 +254,7 @@ export default {
             if (action === 'uploadafter') {
                 var datainfo = { "url": this.uploadData.url, "name": this.uploadData.name, "size": this.uploadData.size, "score": '', "hash": this.uploadData.md5}
                 if (this.calssListinfo.length) {
-                    this.calssListinfo[0].score === '0' || this.calssListinfo[0].score === '-1' || this.calssListinfo[0].score !== '-2' ? datainfo.score = -2 : delete datainfo.score
+                    this.calssListinfo[0].score === 0 || this.calssListinfo[0].score === -1 || this.calssListinfo[0].score !== -2 ? datainfo.score = -2 : delete datainfo.score
                 } else {
                     delete datainfo.score
                 }
@@ -317,6 +318,7 @@ export default {
                             timeData[p].size = this.formatSize(timeData[p].size)
                         }
                         this.calssListinfo = timeData
+                        this.calssListinfo[0].score === 1 || this.calssListinfo[0].score === 2 ? this.tipText = '您上传的课堂实录已通过,请勿重复上传' : ''
                     },
                     error => {
 

+ 10 - 0
TEAMModelOS/ClientApp/src/view/statistics/Dashboard.less

@@ -208,8 +208,18 @@
 .teacher-name {
     font-size: 16px;
     margin-left: 10px;
+    flex: 1;
 }
 .people-unit{
     font-size: 12px;
     color: #757575;
+}
+.hour-count-wrap{
+    float: right;
+
+}
+.teacher-hour-num{
+    width: 30px;
+    display: inline-block;
+    margin-left: 5px;
 }

+ 13 - 2
TEAMModelOS/ClientApp/src/view/statistics/Dashboard.vue

@@ -120,8 +120,18 @@
         <Modal v-model="viewStatus" :title="groupData[viewIndex] ? groupData[viewIndex].groupName : ''" footer-hide>
             <div v-if="groupData[viewIndex]">
                 <div v-for="(item,index) in groupData[viewIndex].members" :key="index" class="teacher-item">
-                    <PersonalPhoto :name="item.name" :picture="item.picture" style="display: inline-block;" />
+                    <PersonalPhoto :name="item.name" :picture="item.picture"/>
                     <span class="teacher-name">{{item.name}}</span>
+                    <span class="hour-count-wrap">
+                        <Icon custom="iconfont icon-online" title="线上研修学时"/>
+                        <span class="teacher-hour-num">{{item.onlineTime}}</span>
+                        <Icon custom="iconfont icon-submit" title="认证材料学时"/>
+                        <span class="teacher-hour-num">{{item.currency.submitTime}}</span>
+                        <Icon custom="iconfont icon-offline" title="校本研修学时"/>
+                        <span class="teacher-hour-num">{{item.offlineTime}}</span>
+                        <Icon custom="iconfont icon-cus-video" title="课堂实录学时"/>
+                        <span class="teacher-hour-num">{{item.classTime}}</span>
+                    </span>
                 </div>
             </div>
         </Modal>
@@ -203,6 +213,7 @@ export default {
     },
     methods: {
         viewMember(index) {
+            console.log(this.groupData[index])
             this.viewIndex = index
             this.viewStatus = true
         },
@@ -242,7 +253,7 @@ export default {
                         let joinCount = res.teacherTrains.length
                         let onlineCount = res.teacherTrains.filter(item => item.onlineTime >= 20).length
                         let offlineCount = res.teacherTrains.filter(item => item.offlineTime >= 10).length
-                        let submitCount = res.teacherTrains.filter(item => item.currency.currency >= 15).length
+                        let submitCount = res.teacherTrains.filter(item => item.currency.submitTime >= 15).length
                         let classCount = res.teacherTrains.filter(item => item.classTime >= 5).length
                         console.log(classCount)
                         this.rate1 = joinCount ? parseInt(onlineCount * 100 / joinCount) : 0

+ 11 - 9
TEAMModelOS/ClientApp/src/view/statistics/TableData.vue

@@ -8,7 +8,7 @@
             </Button>
         </div>
         <vuescroll>
-            <Table :columns="columns1" :data="hourDataShow" :loading="loading" stripe >
+            <Table :columns="columns1" :data="hourDataShow" :loading="loading" stripe>
                 <template slot-scope="{ row }" slot="header">
                     <PersonalPhoto :name="row.name" :picture="row.picture" style="display: inline-block;" />
                 </template>
@@ -191,20 +191,22 @@ export default {
             })
         },
         exportData() {
+            console.log(this.hourData)
             let downloadData = this.hourData.map(item => {
                 return {
-                    tmdname: item.tmdname,
+                    name: item.name,
+                    groupName:item.groupName,
                     onlineTime: item.onlineTime,
-                    offlinelTime: item.offlinelTime,
-                    schoolScoreTime: item.schoolScoreTime,
-                    classVideoTime: item.classVideoTime,
-                    alltime: item.alltime > 50 ? 50 : item.alltime,
-                    status: item.alltime < 50 ? '未完成' : '已完成'
+                    offlineTime: item.offlineTime,
+                    submitTime: item.currency.submitTime,
+                    classTime: item.classTime,
+                    alltime: item.totalTime > 50 ? 50 : item.totalTime,
+                    status: item.totalTime < 50 ? '未完成' : '已完成'
                 }
             })
             const params = {
-                title: this.columns1.map(i => i.title),
-                key: ['tmdname', 'onlineTime', 'offlinelTime', 'schoolScoreTime', 'classVideoTime', 'alltime', 'status'],
+                title: ['姓名', '组别', '线上研修学时', '校本研修学时', '认证材料学时', '课堂记录学时', '总学时', '完成状态'],
+                key: ['name', 'groupName', 'onlineTime', 'offlineTime', 'submitTime', 'classTime', 'alltime', 'status'],
                 data: downloadData,
                 autoWidth: true,
                 filename: '学时统计'

+ 17 - 2
TEAMModelOS/ClientApp/src/view/train/TrainDetail.vue

@@ -790,7 +790,7 @@ export default {
         },
         closePreview() {
             var myVideo = document.getElementById('previewVideo') // 获取视频video
-            if(myVideo) myVideo.pause()
+            if (myVideo) myVideo.pause()
             this.previewStatus = false
         },
         getSizeByBytes(bytes) {
@@ -1310,7 +1310,22 @@ export default {
                                     teacher.status = 0
                                 }
                             })
-                            this.tableData = res.members
+                            /**
+                             * 筛选发布对象组别的老师
+                             * 研修活动发布对象(tchList)默认就是研修名单
+                             * 具体老师需要更具发布研修选择对象即名单组别(groupLists)进行名单内部筛选
+                             */
+                            if (this.trainInfo.groupLists && this.trainInfo.groupLists.length) {
+                                let listId = this.trainInfo.tchLists[0]
+                                let groupFilter = this.trainInfo.groupLists.find(item => item[listId])
+                                if (groupFilter) {
+                                    this.tableData = res.members.filter(i => groupFilter[listId].includes(i.groupName))
+                                } else {
+                                    this.tableData = res.members
+                                }
+                            } else {
+                                this.tableData = res.members
+                            }
                             if (this.trainInfo.settings.includes('survey')) {
                                 this.getSurveyInfo()
                             }

+ 5 - 5
TEAMModelOS/ClientApp/src/view/trainList/Join.vue

@@ -10,11 +10,11 @@
                 {{viewType === 'list' ? '分组视图':'列表视图'}}
             </span>
 
-            <span class="join-action-btn" @click="rmvBatch" style="margin-right:20px">
+            <span class="join-action-btn" @click="rmvBatch" style="margin-right:20px" v-if="viewType === 'list'">
                 <Icon type="md-remove-circle" />
                 移除教师
             </span>
-            <span class="join-action-btn" @click="showAddTeacher">
+            <span class="join-action-btn" @click="showAddTeacher" v-if="viewType === 'list'">
                 <Icon type="md-add" />
                 添加教师
             </span>
@@ -539,9 +539,9 @@ export default {
                         teachers: groupRes[index]
                     })
                 }
-                data.sort((a, b) => {
-                    return a.groupName ? 1 : -1
-                })
+                // data.sort((a, b) => {
+                //     return a.groupName ? -1 : 1
+                // })
                 this.groupData = data
             },
             deep: true,

+ 1 - 1
TEAMModelOS/ClientApp/src/view/video/VideoReview.vue

@@ -137,7 +137,7 @@
 					notSupportedMessage: '此视频暂无法播放,请稍后再试' //允许覆盖Video.js无法播放媒体源时显示的默认信息。
 				},
 				isBtnLoading: false,
-				appraiseResult: 'good',
+				appraiseResult: 0,
 				checkAllGroup: [],
 				spanb: [],
 				groupList: [],

+ 130 - 61
TEAMModelOS/Controllers/Common/HomeworkController.cs

@@ -463,7 +463,7 @@ namespace TEAMModelOS.Controllers.Learn
                         try
                         {   // userType 为student 时,userid 为校内账号,且userSchool 需要有学校编码。
                             //userType 为tmdid 时,userid 为醍摩豆账号,且userSchool 可以为空。
-                           // if (!request.TryGetProperty("typeUsers", out JsonElement _typeUsers)) return BadRequest();
+                            // if (!request.TryGetProperty("typeUsers", out JsonElement _typeUsers)) return BadRequest();
                             if (!request.TryGetProperty("listIds", out JsonElement _listIds)) return BadRequest();
                             List<string> listIds = _listIds.ToJsonString().ToObject<List<string>>();
                             List<TypeUser> typeUsers = new List<TypeUser>();
@@ -472,14 +472,14 @@ namespace TEAMModelOS.Controllers.Learn
                             var addTmdidsCls = tmdinfos.FindAll(x => x.type == 1);
                             if ($"{_targetType}".Equals("research", StringComparison.OrdinalIgnoreCase) || $"{_targetType}".Equals("yxtrain", StringComparison.OrdinalIgnoreCase))
                             {
-                                
-                             
+
+
                                 if (tmdinfos.IsNotEmpty())
                                 {
-                                   
+
                                     tmdinfos.ForEach(x => {
-                                        var clases= classInfo.Where(y => y.members.Select(z => z.id).Contains(x.id)).ToList() ;
-                                        typeUsers.Add(new TypeUser() { userid = x.id, userType = "tmdid", username = x.name, classes = clases.Select(x=>new TypeUserClass{id= x.id,name=x.name}).ToList() });
+                                        var clases = classInfo.Where(y => y.members.Select(z => z.id).Contains(x.id)).ToList();
+                                        typeUsers.Add(new TypeUser() { userid = x.id, userType = "tmdid", username = x.name, classes = clases.Select(x => new TypeUserClass { id = x.id, name = x.name }).ToList() });
                                     });
                                 }
                             }
@@ -499,9 +499,9 @@ namespace TEAMModelOS.Controllers.Learn
                                     });
                                 }
                             }
-                                
+
                             List<dynamic> rscs = new List<dynamic>();
-                            
+
                             string debateCode = "";
                             string debateTbname = "";
                             if (homework.scope.Equals("school"))
@@ -516,15 +516,15 @@ namespace TEAMModelOS.Controllers.Learn
                             }
                             List<Debate> debates = new List<Debate>();
                             string sql = $"select value(c) from c where c.comid='{_id}'";
-                            await foreach (var item in  client.GetContainer(Constant.TEAMModelOS, debateTbname).GetItemQueryIterator<Debate>(queryText: sql, requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey(debateCode) }))
+                            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, debateTbname).GetItemQueryIterator<Debate>(queryText: sql, requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey(debateCode) }))
                             {
                                 debates.Add(item);
                             }
                             List<HomeworkUser> users = new List<HomeworkUser>();
                             foreach (var typeuser in typeUsers) {
-                                var us= users.Find(x => x.userid.Equals(typeuser.userid));
+                                var us = users.Find(x => x.userid.Equals(typeuser.userid));
                                 if (us != null) { continue; }
-                                HomeworkUser user = new HomeworkUser() { userid=typeuser.userid,userSchool=typeuser.userSchool,userType=typeuser.userType,username=typeuser.username,classes=typeuser.classes};
+                                HomeworkUser user = new HomeworkUser() { userid = typeuser.userid, userSchool = typeuser.userSchool, userType = typeuser.userType, username = typeuser.username, classes = typeuser.classes };
                                 string partition = $"HomeworkRecord-{typeuser.userid}";
                                 if (typeuser.userType.Equals("student"))
                                 {
@@ -595,7 +595,7 @@ namespace TEAMModelOS.Controllers.Learn
                             return Ok(new { record });
                         }
                         catch (CosmosException ex) {
-                            return Ok(new {error=404 });
+                            return Ok(new { error = 404 });
                         }
                     //提交答案
                     case bool when $"{_opt}".Equals("SubmitAnswer", StringComparison.OrdinalIgnoreCase):
@@ -607,72 +607,141 @@ namespace TEAMModelOS.Controllers.Learn
                             partitionKey = $"HomeworkRecord-{school}-{userid}";
                         }
                         List<Attachment> content = _content.ToObject<List<Attachment>>();
+                      
                         int taskStatus = -1;
                         byte msgid = 0;
                         if (content != null)
                         {
-                            try
+                            bool falge = true;
+                            if (homework.leaderSubmit == 1 && content.Exists(x => x.prime == true))
                             {
-                                HomeworkRecord record = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<HomeworkRecord>($"{_id}", new PartitionKey(partitionKey));
-                                record.content = content;
-                                record.answer = $"{_answer}";
-                                record.submitCount += 1;
-                                await client.GetContainer(Constant.TEAMModelOS, tbname).ReplaceItemAsync<HomeworkRecord>(record, $"{_id}", new PartitionKey(partitionKey));
-                                taskStatus = 1;
-                                msgid = 1;
+                                List<RGroupList> yxtrain = await GroupListService.GetGroupListMemberByType(client, "yxtrain", new List<string> { "school" }, $"{school}", _dingDing);
+                                var members = yxtrain.SelectMany(x => x.members).ToList();
+                                var leader = members.Find(x => x.tag!=null && x.id.Equals(userid)  && x.tag.Equals("leader"));
+                                if (leader != null && !string.IsNullOrEmpty(leader.groupName))
+                                {
+                                    falge = false;
+                                    var our = members.ToList().FindAll(x =>x.groupName!=null && x.groupName.Equals(leader.groupName));
+                                    foreach (var one in our) {
+                                        string pk = $"HomeworkRecord-{one.id}";
+                                        try
+                                        {
+                                            HomeworkRecord record = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<HomeworkRecord>($"{_id}", new PartitionKey(pk));
+                                            record.content = content;
+                                            record.answer = $"{_answer}";
+                                            record.submitCount += 1;
+                                            await client.GetContainer(Constant.TEAMModelOS, tbname).ReplaceItemAsync<HomeworkRecord>(record, $"{_id}", new PartitionKey(pk));
+                                            taskStatus = 1;
+                                            msgid = 1;
+                                        }
+                                        catch (CosmosException ex)
+                                        {
+                                            if (ex.Status == 404)
+                                            {
+                                                HomeworkRecord record = new HomeworkRecord
+                                                {
+                                                    teacher = $"{teacher}",
+                                                    school = school,
+                                                    id = $"{_id}",
+                                                    code = pk,
+                                                    content = content,
+                                                    answer = $"{_answer}",
+                                                    pk = "HomeworkRecord",
+                                                    ttl = -1,
+                                                    time = now,
+                                                    submitCount = 1,
+                                                    comid = Guid.NewGuid().ToString()
+                                                };
+                                                record = await client.GetContainer(Constant.TEAMModelOS, tbname).CreateItemAsync<HomeworkRecord>(record, new PartitionKey(pk));
+                                                taskStatus = 1;
+                                                msgid = 1;
+                                            }
+                                        }
+                                        //TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO 写入方便教师查看的作答记录
+                                        try
+                                        {
+                                            StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<StuActivity>($"{_id}", new PartitionKey($"Activity-{one.id}"));
+                                            activity.taskStatus = taskStatus;
+                                            await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<StuActivity>(activity, $"{_id}", new PartitionKey($"Activity-{one.id}"));
+                                        }
+                                        catch (CosmosException ex)
+                                        {
+                                           
+                                        }
+                                        await StatisticsService.SendServiceBus($"{standard}", $"{one.id}", $"{school}", StatisticsService.TeacherClass, 1, _configuration, _serviceBus);
+                                        
+                                    }
+                                }
                             }
-                            catch (CosmosException ex)
-                            {
-                                if (ex.Status == 404)
+
+                            if (falge) {
+                                try
                                 {
-                                    HomeworkRecord record = new HomeworkRecord
-                                    {
-                                        teacher = $"{teacher}",
-                                        school = school,
-                                        id = $"{_id}",
-                                        code = partitionKey,
-                                        content = content,
-                                        answer = $"{_answer}",
-                                        pk = "HomeworkRecord",
-                                        ttl = -1,
-                                        time = now,
-                                        submitCount = 1,
-                                        comid = Guid.NewGuid().ToString()
-                                    };
-                                    record = await client.GetContainer(Constant.TEAMModelOS, tbname).CreateItemAsync<HomeworkRecord>(record, new PartitionKey(partitionKey));
+                                    HomeworkRecord record = await client.GetContainer(Constant.TEAMModelOS, tbname).ReadItemAsync<HomeworkRecord>($"{_id}", new PartitionKey(partitionKey));
+                                    record.content = content;
+                                    record.answer = $"{_answer}";
+                                    record.submitCount += 1;
+                                    await client.GetContainer(Constant.TEAMModelOS, tbname).ReplaceItemAsync<HomeworkRecord>(record, $"{_id}", new PartitionKey(partitionKey));
                                     taskStatus = 1;
                                     msgid = 1;
                                 }
-                                if (content.Exists(x => x.prime == true)) {
-                                    await StatisticsService.SendServiceBus($"{standard}", $"{userid}", $"{school}", StatisticsService.TeacherClass, 1, _configuration, _serviceBus);
-                                }
+                                catch (CosmosException ex)
+                                {
+                                    if (ex.Status == 404)
+                                    {
+                                        HomeworkRecord record = new HomeworkRecord
+                                        {
+                                            teacher = $"{teacher}",
+                                            school = school,
+                                            id = $"{_id}",
+                                            code = partitionKey,
+                                            content = content,
+                                            answer = $"{_answer}",
+                                            pk = "HomeworkRecord",
+                                            ttl = -1,
+                                            time = now,
+                                            submitCount = 1,
+                                            comid = Guid.NewGuid().ToString()
+                                        };
+                                        record = await client.GetContainer(Constant.TEAMModelOS, tbname).CreateItemAsync<HomeworkRecord>(record, new PartitionKey(partitionKey));
+                                        taskStatus = 1;
+                                        msgid = 1;
+                                    }
                                     
-                            }
-                            //TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO 写入方便教师查看的作答记录
-                            try
-                            {
-                                if ($"{_scope}".Equals(Constant.ScopeStudent)) {
-                                    StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>($"{_id}", new PartitionKey($"Activity-{school}-{userid}"));
-                                    activity.taskStatus = taskStatus;
-                                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<StuActivity>(activity, $"{_id}", new PartitionKey($"Activity-{school}-{userid}"));
+
+                                }
+                              
+                                //TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO 写入方便教师查看的作答记录
+                                try
+                                {
+                                    if ($"{_scope}".Equals(Constant.ScopeStudent))
+                                    {
+                                        StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>($"{_id}", new PartitionKey($"Activity-{school}-{userid}"));
+                                        activity.taskStatus = taskStatus;
+                                        await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<StuActivity>(activity, $"{_id}", new PartitionKey($"Activity-{school}-{userid}"));
+                                    }
+                                    if ($"{_scope}".Equals(Constant.ScopeTmdUser))
+                                    {
+                                        StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>($"{_id}", new PartitionKey($"Activity-{userid}"));
+                                        activity.taskStatus = taskStatus;
+                                        await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<StuActivity>(activity, $"{_id}", new PartitionKey($"Activity-{userid}"));
+                                    }
+                                    if ($"{_scope}".Equals(Constant.ScopeTeacher))
+                                    {
+                                        StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<StuActivity>($"{_id}", new PartitionKey($"Activity-{userid}"));
+                                        activity.taskStatus = taskStatus;
+                                        await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<StuActivity>(activity, $"{_id}", new PartitionKey($"Activity-{userid}"));
+                                    }
                                 }
-                                if ($"{_scope}".Equals(Constant.ScopeTmdUser))
+                                catch (CosmosException ex)
                                 {
-                                    StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<StuActivity>($"{_id}", new PartitionKey($"Activity-{userid}"));
-                                    activity.taskStatus = taskStatus;
-                                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<StuActivity>(activity, $"{_id}", new PartitionKey($"Activity-{userid}"));
+                                    taskStatus = -1;
                                 }
-                                if ($"{_scope}".Equals(Constant.ScopeTeacher))
+                                if (content.Exists(x => x.prime == true))
                                 {
-                                    StuActivity activity = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<StuActivity>($"{_id}", new PartitionKey($"Activity-{userid}"));
-                                    activity.taskStatus = taskStatus;
-                                    await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<StuActivity>(activity, $"{_id}", new PartitionKey($"Activity-{userid}"));
+                                    await StatisticsService.SendServiceBus($"{standard}", $"{userid}", $"{school}", StatisticsService.TeacherClass, 1, _configuration, _serviceBus);
                                 }
                             }
-                            catch (CosmosException ex)
-                            {
-                                taskStatus = -1;
-                            }
                             return Ok(new { msgid, taskStatus });
                         }
                         else {

+ 2 - 2
TEAMModelOS/Controllers/Common/StudyController.cs

@@ -460,7 +460,7 @@ namespace TEAMModelOS.Controllers.Common
                                     continue;
                                 }
                                 else {
-                                    study.status = type.GetInt32();
+                                    study.status = statu;
                                     study.aTime = now;
                                 }
                                 tasky.Add(client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync(study, study.id, new PartitionKey($"{study.code}")));
@@ -472,7 +472,7 @@ namespace TEAMModelOS.Controllers.Common
                                     id = pair.Key,
                                     tId = teacId,
                                     code = "StudyRecord-" + teacId,
-                                    status = type.GetInt32(),
+                                    status = statu,
                                     aTime = now
                                 };
                                 tasky.Add(client.GetContainer("TEAMModelOS", "Teacher").CreateItemAsync(setting, new PartitionKey($"{setting.code}")));

+ 2 - 2
TEAMModelOS/Properties/launchSettings.json

@@ -11,7 +11,7 @@
   "profiles": {
     "IIS Express": {
       "commandName": "IISExpress",
-      "launchBrowser": true,
+      "launchBrowser": false,
       "launchUrl": "selectModule",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
@@ -19,7 +19,7 @@
     },
     "TEAMModelOS": {
       "commandName": "Project",
-      "launchBrowser": true,
+      "launchBrowser": false,
       //"launchUrl": "login",
       "applicationUrl": "https://localhost:5001;http://localhost:5000",
       "environmentVariables": {

+ 3 - 3
TEAMModelOS/TEAMModelOS.csproj

@@ -37,9 +37,9 @@
     <SpaRoot>ClientApp\</SpaRoot>
     <DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
     <UserSecretsId>078b5d89-7d90-4f6a-88fc-7d96025990a8</UserSecretsId>
-    <Version>5.2111.24</Version>
-    <AssemblyVersion>5.2111.24.1</AssemblyVersion>
-    <FileVersion>5.2111.24.1</FileVersion>
+    <Version>5.2111.28</Version>
+    <AssemblyVersion>5.2111.28.1</AssemblyVersion>
+    <FileVersion>5.2111.28.1</FileVersion>
     <Description>TEAMModelOS(IES5)</Description>
     <PackageReleaseNotes>版本说明</PackageReleaseNotes>
   </PropertyGroup>