فهرست منبع

Merge branch 'develop' into hhb/develop-course

CrazyIter_Bin 2 سال پیش
والد
کامیت
652d84fbd9

+ 15 - 2
TEAMModelOS.FunctionV4/CosmosDB/TriggerArt.cs

@@ -272,7 +272,13 @@ namespace TEAMModelOS.FunctionV4.CosmosDB
                                         List<string> stus = new();
                                         List<string> stus = new();
                                         foreach (var lost in stuInfo)
                                         foreach (var lost in stuInfo)
                                         {
                                         {
-                                            stus = stus.Intersect(lost.stu).ToList();
+                                            if (stus.Count == 0)
+                                            {
+                                                stus = stus.Union(lost.stu).ToList();
+                                            }
+                                            else {
+                                                stus = stus.Intersect(lost.stu).ToList();
+                                            }                                          
                                             LostStudent lostStudent = new()
                                             LostStudent lostStudent = new()
                                             {
                                             {
                                                 code = lost.code,
                                                 code = lost.code,
@@ -301,7 +307,14 @@ namespace TEAMModelOS.FunctionV4.CosmosDB
                                     List<string> stus = new();
                                     List<string> stus = new();
                                     foreach (var (code, sub, stu) in stuInfo)
                                     foreach (var (code, sub, stu) in stuInfo)
                                     {
                                     {
-                                        stus = stus.Intersect(stu).ToList();
+                                        if (stus.Count == 0)
+                                        {
+                                            stus = stus.Union(stu).ToList();
+                                        }
+                                        else
+                                        {
+                                            stus = stus.Intersect(stu).ToList();
+                                        }
                                         LostStudent lostStudent = new()
                                         LostStudent lostStudent = new()
                                         {
                                         {
                                             code = code,
                                             code = code,

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

@@ -245,7 +245,7 @@ export default class BlobTool {
                                 }
                                 }
                             )
                             )
                         } catch (e) {
                         } catch (e) {
-                            console.error('前端获取MD5失败', err)
+                            console.error('前端获取MD5失败', e)
                         }
                         }
                     }
                     }
                     let url = decodeURIComponent(res._response.request.url)
                     let url = decodeURIComponent(res._response.request.url)

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

@@ -530,11 +530,32 @@ export default {
 			return {
 			return {
 				st: startTime,
 				st: startTime,
 				et: endTime,
 				et: endTime,
-				name: settingSemesters[curSemeterIndex].name
+				name: this.getCurSemeterYear(settingSemesters) + '年' + settingSemesters[curSemeterIndex].name,
+				name_with_year: this.getCurSemeterYear(settingSemesters) + '年' + settingSemesters[curSemeterIndex].name
 			}
 			}
 		}
 		}
 
 
 	},
 	},
+	getCurSemeterYear(semesters) {
+		const today = new Date();
+		const currentYear = today.getFullYear();
+		const currentMonth = today.getMonth() + 1;
+		const currentDay = today.getDate();
+		let currentSemester = semesters.find(i => i.start === 1);
+		let year = ''
+		if (currentMonth >= currentSemester.month) {
+			if (currentDay > currentSemester.day) {
+				year = currentYear
+			} else if (currentMonth > currentSemester.month && currentDay < currentSemester.day) {
+				year = currentYear
+			} else {
+				year = currentYear - 1
+			}
+		} else {
+			year = currentYear - 1
+		}
+		return year
+	},
 	/* 获取当前学段学期时间范围 */
 	/* 获取当前学段学期时间范围 */
 	getSettingTermRange(semesters) {
 	getSettingTermRange(semesters) {
 		let range = []
 		let range = []

+ 280 - 267
TEAMModelOS/ClientApp/src/view/artexam/DataView.vue

@@ -1,308 +1,321 @@
 <template>
 <template>
-    <div class="data-view-wrap">
-        <div class="data-count-wrap">
-            <!-- 学科统计 -->
-            <div class="data-count-item">
-                <p class="data-value">
-                    <countTo :startVal='0' :endVal='artInfo.subjects ? artInfo.subjects.length : 0' :duration='1000'></countTo>
-                </p>
-                <p class="data-text">
-                    {{$t('learnActivity.simple.sjLabel')}}
-                </p>
-            </div>
-            <!-- 班级 -->
-            <div class="data-count-item">
-                <p class="data-value">
-                    <countTo :startVal='0' :endVal='artInfo.classes ? artInfo.classes.length : 0' :duration='1000'></countTo>
-                </p>
-                <p class="data-text">
-                    {{$t('learnActivity.simple.classLabel')}}
-                </p>
-            </div>
-            <!-- 总人数 -->
-            <div class="data-count-item">
-                <p class="data-value">
-                    <countTo :startVal='0' :endVal='tableData.length' :duration='1000'></countTo>
-                </p>
-                <p class="data-text">
-                    {{$t('learnActivity.simple.totalPeople')}}
-                </p>
-            </div>
-            <!-- 已评分 -->
-            <div class="data-count-item">
-                <p class="data-value">
-                    -
-                </p>
-                <p class="data-text">
-                    已评分
-                </p>
-            </div>
-            <!-- 平均分 -->
-            <div class="data-count-item">
-                <p class="data-value">
-                    -
-                </p>
-                <p class="data-text">
-                    平均分
-                </p>
+  <div class="data-view-wrap">
+    <div class="data-count-wrap">
+      <!-- 学科统计 -->
+      <div class="data-count-item">
+        <p class="data-value">
+          <countTo :startVal='0' :endVal='artInfo.subjects ? artInfo.subjects.length : 0' :duration='1000'></countTo>
+        </p>
+        <p class="data-text">
+          {{$t('learnActivity.simple.sjLabel')}}
+        </p>
+      </div>
+      <!-- 班级 -->
+      <div class="data-count-item">
+        <p class="data-value">
+          <countTo :startVal='0' :endVal='artInfo.classes ? artInfo.classes.length : 0' :duration='1000'></countTo>
+        </p>
+        <p class="data-text">
+          {{$t('learnActivity.simple.classLabel')}}
+        </p>
+      </div>
+      <!-- 总人数 -->
+      <div class="data-count-item">
+        <p class="data-value">
+          <countTo :startVal='0' :endVal='stuCount' :duration='1000'></countTo>
+        </p>
+        <p class="data-text">
+          {{$t('learnActivity.simple.totalPeople')}}
+        </p>
+      </div>
+      <!-- 缺考人数 -->
+      <div class="data-count-item">
+        <p class="data-value" style="color:orange !important">
+          <countTo :startVal='0' :endVal='lostCount' :duration='1000'></countTo>
+        </p>
+        <p class="data-text">
+          {{$t('learnActivity.simple.missExam')}}
+        </p>
+      </div>
+      <!-- 已评分 -->
+      <div class="data-count-item">
+        <p class="data-value">
+          -
+        </p>
+        <p class="data-text">
+          已评分
+        </p>
+      </div>
+      <!-- 平均分 -->
+      <div class="data-count-item">
+        <p class="data-value">
+          -
+        </p>
+        <p class="data-text">
+          平均分
+        </p>
+      </div>
+    </div>
+    <div class="table-header-wrap">
+      <!-- <span>{{$t('ae.ae6')}}:</span> -->
+      <Select v-model="classId" style="width: 200px">
+        <Option v-for="item in classList" :value="item.id" :key="item.id">{{ item.name }}</Option>
+      </Select>
+      <Input search v-model="keyword" placeholder="搜索学生..." style="margin-left:10px;width: 200px" @on-search="searchStudent" />
+    </div>
+    <div class="table-scroll-wrap">
+      <vuescroll>
+        <Table :columns="columns" :data="tableDataShow" border>
+          <template slot-scope="{ row , column }" v-for="s in slotList" :slot="s">
+            <div :key="s" style="padding:5px 5px">
+              <ul>
+                <li class="quota-score-item" v-for="task in row[s]" :key="task.taskId">
+                  {{task.quotaName}}
+                  <span class="quota-score-value" v-if="task.score >= 0">{{task.score}}分</span>
+                  <span class="quota-score-value" v-else>-</span>
+                </li>
+              </ul>
+              <p v-if="!row[s] || !row[s].length" class="no-score-tag">
+                未评分
+              </p>
             </div>
             </div>
-        </div>
-        <div class="table-header-wrap">
-            <!-- <span>{{$t('ae.ae6')}}:</span> -->
-            <Select v-model="classId" style="width: 200px">
-                <Option v-for="item in classList" :value="item.id" :key="item.id">{{ item.name }}</Option>
-            </Select>
-            <Input search v-model="keyword" placeholder="搜索学生..." style="margin-left:10px;width: 200px" @on-search="searchStudent" />
-        </div>
-        <div class="table-scroll-wrap">
-            <vuescroll>
-                <Table :columns="columns" :data="tableDataShow" border>
-                    <template slot-scope="{ row , column }" v-for="s in slotList" :slot="s">
-                        <div :key="s" style="padding:5px 5px">
-                            <ul>
-                                <li class="quota-score-item" v-for="task in row[s]" :key="task.taskId">
-                                    {{task.quotaName}}
-                                    <span class="quota-score-value" v-if="task.score >= 0">{{task.score}}分</span>
-                                    <span class="quota-score-value" v-else>-</span>
-                                </li>
-                            </ul>
-                            <p v-if="!row[s].length" class="no-score-tag">
-                                未评分
-                            </p>
-                        </div>
-                    </template>
-                </Table>
-            </vuescroll>
-        </div>
-        <!-- 分页 -->
-        <div class="page-wrap">
-            <Page show-total size="small" :current="currentPage" :total="tableData.length" :page-size="pageSize" @on-change="pageChange" />
-        </div>
+          </template>
+        </Table>
+      </vuescroll>
+    </div>
+    <!-- 分页 -->
+    <div class="page-wrap">
+      <Page show-total size="small" :current="currentPage" :total="tableData.length" :page-size="pageSize" @on-change="pageChange" />
     </div>
     </div>
+  </div>
 </template>
 </template>
 
 
 <script>
 <script>
 import countTo from 'vue-count-to'
 import countTo from 'vue-count-to'
 export default {
 export default {
-    components:{
-        countTo
+  components: {
+    countTo
+  },
+  props: {
+    artInfo: {
+      type: Object,
+      default: () => {
+        return {}
+      }
     },
     },
-    props: {
-        artInfo: {
-            type: Object,
-            default: () => {
-                return {}
-            }
-        },
-        quotaFirstLevel: {
-            type: Array,
-            default: () => {
-                return []
-            }
-        },
-        classList: {
-            type: Array,
-            default: () => {
-                return []
-            }
-        }
+    quotaFirstLevel: {
+      type: Array,
+      default: () => {
+        return []
+      }
     },
     },
-    computed: {
-        curClass() {
-            if (this.classList && this.classList.length && this.classId) {
-                return this.classList.find(item => item.id == this.classId)
-            }
-            return {}
+    classList: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    }
+  },
+  computed: {
+    curClass() {
+      if (this.classList && this.classList.length && this.classId) {
+        return this.classList.find(item => item.id == this.classId)
+      }
+      return {}
+    },
+    columns() {
+      let data = [
+        {
+          title: '姓名',
+          key: 'name',
+          align: 'center',
+          minWidth: 120,
+          fixed: 'left',
         },
         },
-        columns() {
-            let data = [
-                {
-                    title: '姓名',
-                    key: 'name',
-                    align: 'center',
-                    minWidth: 120,
-                    fixed: 'left',
-                },
-                {
-                    title: '总分',
-                    key: 'totalScore',
-                    align: 'center',
-                    minWidth: 80,
-                    fixed: 'right',
-                }
-            ]
-            if (this.artInfo?.subjects?.length) {
-                let stList = []
-                this.artInfo.subjects.forEach(subject => {
-                    let index = data.length - 1
-                    data.splice(index, 0, {
-                        title: subject.name,
-                        align: 'center',
-                        children: []
-                    })
-                    this.quotaFirstLevel.forEach(quo => {
-                        data[index].children.push({
-                            title: quo.name,
-                            align: 'center',
-                            minWidth: 180,
-                            slot: `${subject.id}-${quo.id}`
-                        })
-                        stList.push(`${subject.id}-${quo.id}`)
-                    })
-                })
-                this.slotList = stList
-            }
-            return data
+        {
+          title: '总分',
+          key: 'totalScore',
+          align: 'center',
+          minWidth: 80,
+          fixed: 'right',
         }
         }
+      ]
+      if (this.artInfo?.subjects?.length) {
+        let stList = []
+        this.artInfo.subjects.forEach(subject => {
+          let index = data.length - 1
+          data.splice(index, 0, {
+            title: subject.name,
+            align: 'center',
+            children: []
+          })
+          this.quotaFirstLevel.forEach(quo => {
+            data[index].children.push({
+              title: quo.name,
+              align: 'center',
+              minWidth: 180,
+              slot: `${subject.id}-${quo.id}`
+            })
+            stList.push(`${subject.id}-${quo.id}`)
+          })
+        })
+        this.slotList = stList
+      }
+      return data
+    }
+  },
+  data() {
+    return {
+      stuCount: 0,
+      lostCount: 0,
+      keyword: '',
+      pageSize: 10,
+      currentPage: 1,
+      classId: '',
+      slotList: [],
+      oringinData: [],
+      tableData: [],
+      tableDataShow: []
+    }
+  },
+  methods: {
+    searchStudent() {
+      this.tableData = this.oringinData.filter(item => item.name.includes(this.keyword))
+      this.pageChange(1)
+    },
+    // 分页页面变化
+    pageChange(page) {
+      let start = this.pageSize * (page - 1)
+      let end = this.pageSize * page
+      this.currentPage = page
+      this.tableDataShow = this.tableData.slice(start, end)
     },
     },
-    data() {
-        return {
-            keyword: '',
-            pageSize: 10,
-            currentPage: 1,
-            classId: '',
-            slotList: [],
-            oringinData: [],
-            tableData: [],
-            tableDataShow: []
+    findArtResult() {
+      if (!this.classId) return
+      this.$api.areaArt.findArtResults({
+        "opt": "find",
+        "artId": this.artInfo.id,
+        "subjects": [],
+        "classIds": [this.classId]
+      }).then(res => {
+        if (!res.error) {
+          this.setTableData(res.results)
+        } else {
+          this.$Message.error('Fail1')
         }
         }
+      }).catch(e => {
+        this.$Message.error('Fail2')
+      })
     },
     },
-    methods: {
-        searchStudent() {
-            this.tableData = this.oringinData.filter(item => item.name.includes(this.keyword))
-            this.pageChange(1)
-        },
-        // 分页页面变化
-        pageChange(page) {
-            let start = this.pageSize * (page - 1)
-            let end = this.pageSize * page
-            this.currentPage = page
-            this.tableDataShow = this.tableData.slice(start, end)
-        },
-        findArtResult() {
-            if (!this.classId) return
-            this.$api.areaArt.findArtResults({
-                "opt": "find",
-                "artId": this.artInfo.id,
-                "subjects": [],
-                "classIds": [this.classId]
-            }).then(res => {
-                if (!res.error) {
-                    this.setTableData(res.results)
-                } else {
-                    this.$Message.error('Fail1')
-                }
-            }).catch(e => {
-                this.$Message.error('Fail2')
-            })
-        },
-        setTableData(results) {
-            let students = this.curClass.members
-            this.oringinData = []
-            students.forEach(student => {
-                let row = {
-                    id: student.id,
-                    name: student.name
-                }
-                let studentRes = results.find(r => r.studentId === student.id)
-                if (studentRes) {
-                    this.slotList.forEach(st => {
-                        let arr = st.split('-')
-                        row[st] = studentRes.results.filter(res => {
-                            return res.subjectId === arr[0] && res.quotaId.includes(arr[1])
-                        })
-                    })
-                    row.totalScore = studentRes.totalScore
-                } else {
-                    this.slotList.forEach(st => {
-                        row[st] = []
-                    })
-                    row.totalScore = 0
-                }
-                this.oringinData.push(row)
+    setTableData(results) {
+      let students = this.curClass.members
+      this.oringinData = []
+      students.forEach(student => {
+        let row = {
+          id: student.id,
+          name: student.name
+        }
+        let studentRes = results.find(r => r.studentId === student.id)
+        if (studentRes) {
+          this.slotList.forEach(st => {
+            let arr = st.split('-')
+            row[st] = studentRes.results.filter(res => {
+              return res.subjectId === arr[0] && res.quotaId.includes(arr[1])
             })
             })
-            this.searchStudent()
+          })
+          row.totalScore = studentRes.totalScore
+        } else {
+          this.slotList.forEach(st => {
+            row[st] = []
+          })
+          row.totalScore = 0
         }
         }
+        this.oringinData.push(row)
+      })
+      this.searchStudent()
+    }
+  },
+  watch: {
+    classId: {
+      immediate: true,
+      deep: true,
+      handler(n, o) {
+        if (n) {
+          this.findArtResult()
+        }
+      }
     },
     },
-    watch: {
-        classId: {
-            immediate: true,
-            deep: true,
-            handler(n, o) {
-                if (n) {
-                    this.findArtResult()
-                }
-            }
-        },
-        classList: {
-            immediate: true,
-            deep: true,
-            handler(n, o) {
-                if (n && n.length) {
-                    this.classId = n[0].id
-                } else {
-                    this.classId = ''
-                }
-            }
+    classList: {
+      immediate: true,
+      deep: true,
+      handler(n, o) {
+        if (n && n.length) {
+          this.classId = n[0].id
+          this.stuCount = this.artInfo.stuCount || 0
+          this.lostCount = this.artInfo.miss && this.artInfo.miss.length ? this.artInfo.miss[0] : 0
+        } else {
+          this.classId = ''
         }
         }
+      }
     }
     }
+  }
 }
 }
 </script>
 </script>
 <style lang="less" scoped>
 <style lang="less" scoped>
-.data-count-item{
-    width: 150px;
-    text-align: center;
-    .data-value{
-        font-size: 30px;
-        font-weight: 600;
-        color: #17233d;
-    }
+.data-count-item {
+  width: 150px;
+  text-align: center;
+  .data-value {
+    font-size: 30px;
+    font-weight: 600;
+    color: #17233d;
+  }
 }
 }
 .data-count-wrap {
 .data-count-wrap {
-    width: 100%;
-    height: 100px;
-    margin-bottom: 10px;
-    background: white;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
+  width: 100%;
+  height: 100px;
+  margin-bottom: 10px;
+  background: white;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
 }
 }
 .table-scroll-wrap {
 .table-scroll-wrap {
-    width: 100%;
-    background: #ffffff;
-    padding: 0px 10px 10px 10px;
-    height: ~"calc(100% - 200px)";
+  width: 100%;
+  background: #ffffff;
+  padding: 0px 10px 10px 10px;
+  height: ~"calc(100% - 200px)";
 }
 }
 .page-wrap {
 .page-wrap {
-    width: 100%;
-    padding: 10px;
-    background: white;
+  width: 100%;
+  padding: 10px;
+  background: white;
 }
 }
 .quota-score-item {
 .quota-score-item {
-    margin-left: 5px;
-    text-align: left;
-    list-style: square;
-    &::marker {
-        color: #085fec;
-    }
+  margin-left: 5px;
+  text-align: left;
+  list-style: square;
+  &::marker {
+    color: #085fec;
+  }
 }
 }
 .quota-score-value {
 .quota-score-value {
-    color: #2d8cf0;
-    float: right;
-    font-weight: 600;
+  color: #2d8cf0;
+  float: right;
+  font-weight: 600;
 }
 }
 .no-score-tag {
 .no-score-tag {
-    color: #ed4014;
+  color: #ed4014;
 }
 }
 .data-view-wrap {
 .data-view-wrap {
-    width: 100%;
-    height: ~"calc(100% - 50px)";
-    padding: 10px 10px;
-    background: #f6f6f6;
+  width: 100%;
+  height: ~"calc(100% - 50px)";
+  padding: 10px 10px;
+  background: #f6f6f6;
 }
 }
 .table-header-wrap {
 .table-header-wrap {
-    margin-top: 10px;
-    background: #ffffff;
-    padding: 10px;
+  margin-top: 10px;
+  background: #ffffff;
+  padding: 10px;
 }
 }
 </style>
 </style>

+ 1 - 0
TEAMModelOS/ClientApp/src/view/artexam/Mgt.vue

@@ -510,6 +510,7 @@ export default {
       this.$api.areaArt.findArtSummary(params).then(
       this.$api.areaArt.findArtSummary(params).then(
         (res) => {
         (res) => {
           this.artInfo = res.art
           this.artInfo = res.art
+          this.artInfo.stuCount = res.count
           if (res.art.owner === 'area' && res.ae?.jsonElement) {
           if (res.art.owner === 'area' && res.ae?.jsonElement) {
             this.examInfoList = res.ae.jsonElement
             this.examInfoList = res.ae.jsonElement
           }
           }

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

@@ -240,7 +240,7 @@ export default {
                     whiteSpace: 'break-spaces',
                     whiteSpace: 'break-spaces',
                     wordBreak: 'keep-all'
                     wordBreak: 'keep-all'
                   }
                   }
-                }, vm.rateTips[1])
+                }, vm.rateTips.find(i => i.id === 'quota_2').tip)
                 ]),
                 ]),
               ]),
               ]),
             ])
             ])
@@ -282,7 +282,7 @@ export default {
                     whiteSpace: 'break-spaces',
                     whiteSpace: 'break-spaces',
                     wordBreak: 'keep-all'
                     wordBreak: 'keep-all'
                   }
                   }
-                }, vm.rateTips[0])
+                }, vm.rateTips.find(i => i.id === 'quota_1').tip)
                 ]),
                 ]),
               ]),
               ]),
             ])
             ])
@@ -324,7 +324,7 @@ export default {
                     whiteSpace: 'break-spaces',
                     whiteSpace: 'break-spaces',
                     wordBreak: 'keep-all'
                     wordBreak: 'keep-all'
                   }
                   }
-                }, vm.rateTips[2])
+                }, vm.rateTips.find(i => i.id === 'quota_3').tip)
                 ]),
                 ]),
               ]),
               ]),
             ])
             ])
@@ -366,7 +366,7 @@ export default {
                     whiteSpace: 'break-spaces',
                     whiteSpace: 'break-spaces',
                     wordBreak: 'keep-all'
                     wordBreak: 'keep-all'
                   }
                   }
-                }, vm.rateTips[3])
+                }, vm.rateTips.find(i => i.id === 'total').tip)
                 ]),
                 ]),
               ]),
               ]),
             ])
             ])
@@ -426,6 +426,7 @@ export default {
     getRateTips(quotas) {
     getRateTips(quotas) {
       let tips = []
       let tips = []
       let totalScoreTip = '总分分数由以下组成\n'
       let totalScoreTip = '总分分数由以下组成\n'
+      console.error(quotas)
       quotas.forEach(quota => {
       quotas.forEach(quota => {
         let str = '【' + quota.name + '】' + '分数占比如下\n'
         let str = '【' + quota.name + '】' + '分数占比如下\n'
         quota.children.forEach(second => {
         quota.children.forEach(second => {
@@ -438,9 +439,15 @@ export default {
           }
           }
         })
         })
         totalScoreTip += '【' + quota.name + '】' + '得分 * ' + quota.percent + '%\n'
         totalScoreTip += '【' + quota.name + '】' + '得分 * ' + quota.percent + '%\n'
-        tips.push(str)
+        tips.push({
+          id: quota.id,
+          tip: str
+        })
+      })
+      tips.push({
+        id: 'total',
+        tip: totalScoreTip
       })
       })
-      tips.push(totalScoreTip)
       return tips
       return tips
     },
     },
     /* 将区级设置的quotas全部拉平 */
     /* 将区级设置的quotas全部拉平 */

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

@@ -167,7 +167,7 @@ export default {
         schoolName: store_user.schoolProfile.school_base.name,
         schoolName: store_user.schoolProfile.school_base.name,
         schoolLogo: store_user.schoolProfile.school_base.picture,
         schoolLogo: store_user.schoolProfile.school_base.picture,
         periodName: store_user.curPeriod.name,
         periodName: store_user.curPeriod.name,
-        curSemester: this.getCurSemeterYear(store_user.curPeriod.semesters) + '年' + semesterRange.name
+        curSemester: semesterRange.name_with_year
       }
       }
     }
     }
   }
   }

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

@@ -823,11 +823,11 @@ namespace TEAMModelOS.Controllers.Common
                     }
                     }
                     if (!string.IsNullOrWhiteSpace(ae.id))
                     if (!string.IsNullOrWhiteSpace(ae.id))
                     {
                     {
-                        return Ok(new { art, classes, ae, music, code = 200 });
+                        return Ok(new { art, classes, ae, music,count = rmembers.Count, code = 200 });
                     }
                     }
                     else
                     else
                     {
                     {
-                        return Ok(new { art, classes, music, code = 200 });
+                        return Ok(new { art, classes, music,count = rmembers.Count, code = 200 });
                     }
                     }