Просмотр исходного кода

نمایش مجموع و نمره حضور و غیاب هر جلسه برای کلاس های که به صورت آفلاین هستند

hgh 1 год назад
Родитель
Сommit
93a767b4fc
1 измененных файлов с 83 добавлено и 9 удалено
  1. 83 9
      src/pages/User/Profile/classroomInfo.vue

+ 83 - 9
src/pages/User/Profile/classroomInfo.vue

@@ -92,7 +92,12 @@
                       :table-grid-size="$q.screen.lt.sm"
                       :show-expand-button="false"
                       :show-reload-button="false"
-                      :show-search-button="false">
+                      :show-search-button="false"
+                      @on-page-changed="onPageChanged">
+          <template v-if='classroom.holding_type === "OFFLINE"'
+                    #before-form-builder>
+            مجموع نمره  حضور و غیاب کسب شده از ۱۰۰ نمره : {{ totalAttendanceScore }}
+          </template>
           <template #entity-index-table-cell="{inputData}">
             <template v-if="inputData.col.name === 'number'">
               {{ inputData.rowNumber }}
@@ -446,6 +451,7 @@ export default {
     // const userId = this.$store.getters['Auth/user'].id
     return {
       mounted: false,
+      totalAttendanceScore: 0,
       teamInfoDialog: false,
       selectedTeam: null,
       selectedTest: {
@@ -457,7 +463,8 @@ export default {
       tab: 'classroomInfo',
       inputs: [],
       sessionsInputs: [
-        { type: 'hidden', name: 'classroom', value: classroomId }
+        { type: 'hidden', name: 'classroom', value: classroomId },
+        { type: 'hidden', name: 'per_page', value: 100 }
       ],
       api: APIGateway.classroom.get(classroomId),
       sessionsApi: APIGateway.session.APIAdresses.attendanceSheets,
@@ -589,13 +596,6 @@ export default {
             align: 'left',
             field: row => (new SessionAttendanceSheets(this.getCurrentUserAttendanceSheet(row))).attendance_status_info.label
           },
-          {
-            name: 'attendance_score',
-            required: true,
-            label: 'نمره حضور و غیاب',
-            align: 'left',
-            field: row => (new SessionAttendanceSheets(this.getCurrentUserAttendanceSheet(row))).attendance_score
-          },
           {
             name: 'action',
             required: true,
@@ -886,9 +886,83 @@ export default {
     this.$store.commit('Test/updateAnswerBook', null)
     this.getRegistrationInfo()
     this.mounted = true
+    console.log(this.classroom)
+    if (this.classroom.holding_type === 'OFFLINE') {
+      this.sessionsTable = {
+        columns: [
+          {
+            name: 'number',
+            required: true,
+            label: 'شماره',
+            align: 'left',
+            field: () => ''
+          },
+          {
+            name: 'id',
+            required: true,
+            label: 'شناسه',
+            align: 'left',
+            field: row => row.id
+          },
+          {
+            name: 'title',
+            required: true,
+            label: 'عنوان',
+            align: 'left',
+            field: row => row.title
+          },
+          {
+            name: 'title',
+            required: true,
+            label: 'زمان شروع',
+            align: 'left',
+            field: row => row.beginning_time ? ShamsiDate.getDateTime(row.beginning_time) : '-'
+          },
+          {
+            name: 'title',
+            required: true,
+            label: 'زمان پایان',
+            align: 'left',
+            field: row => row.ending_time ? ShamsiDate.getDateTime(row.ending_time) : '-'
+          },
+          {
+            name: 'assignment_status',
+            required: true,
+            label: 'وضعیت تکلیف',
+            align: 'left',
+            field: row => (new SessionAttendanceSheets(this.getCurrentUserAttendanceSheet(row))).assignment_status_info.label
+          },
+          {
+            name: 'attendance_status',
+            required: true,
+            label: 'وضعیت حضور و غیاب',
+            align: 'left',
+            field: row => (new SessionAttendanceSheets(this.getCurrentUserAttendanceSheet(row))).attendance_status_info.label
+          },
+          {
+            name: 'attendance_score',
+            required: true,
+            label: 'نمره حضور و غیاب',
+            align: 'left',
+            field: row => (new SessionAttendanceSheets(this.getCurrentUserAttendanceSheet(row))).attendance_score
+          },
+          {
+            name: 'action',
+            required: true,
+            label: 'جزییات',
+            align: 'left',
+            field: ''
+          }
+        ]
+      }
+    }
     FormBuilderAssist.setAttributeByName(this.testListInputs, 'owner', 'value', this.user.id)
   },
   methods: {
+    onPageChanged (responseData) {
+      this.totalAttendanceScore = responseData.data.results?.map(session => (new SessionAttendanceSheets(this.getCurrentUserAttendanceSheet(session))).attendance_score || 0) // گرفتن مقدار امتیاز حضور
+        .reduce((sum, value) => sum + value, 0) // محاسبه مجموع
+    },
     showParticipateTypeDialog (testId, answerBookId) {
       this.$store.commit('Test/updateAnswerBook', null)
       this.selectedTest.testId = testId