Blame view

src/pages/Mark/viewMark.vue 14.8 KB
006544386   Neeraj Sharma   implement task
1
2
  <template>
    <v-app id="pages-dasboard">
495e4037c   Neeraj Sharma   update
3
      <!-- ****** PROFILE MARK  ****** -->
006544386   Neeraj Sharma   implement task
4
      <v-container fluid grid-list-md>
ec5677f43   Neeraj Sharma   implement print o...
5
        <v-layout>
66a5c3b75   Neeraj Sharma   implement gloabal...
6
7
          <v-flex xs12 sm8 md10>
            <v-btn class="grey left mt-3" dark @click="print()">
ec5677f43   Neeraj Sharma   implement print o...
8
9
10
11
              Print
              <v-icon right dark>print</v-icon>
            </v-btn>
          </v-flex>
66a5c3b75   Neeraj Sharma   implement gloabal...
12
13
14
15
16
17
18
19
20
          <v-flex xs12 sm4 md2 class="right">
            <v-select
              class
              :items="selectMark"
              label="Select"
              v-model="selectMarkList"
              @change="selectMarkData(selectMarkList)"
            ></v-select>
          </v-flex>
ec5677f43   Neeraj Sharma   implement print o...
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
        </v-layout>
        <v-flex xs12 sm12 id="printMe">
          <v-layout wrap>
            <v-flex xs12 sm12 md3>
              <v-card class="fixcolors white--text" flat>
                <v-card-actions class="pa-0">
                  <v-spacer></v-spacer>
                  <v-card-title class="pa-2">
                    <h3>Profile</h3>
                  </v-card-title>
                  <v-spacer></v-spacer>
                </v-card-actions>
              </v-card>
              <v-card flat>
                <v-layout
                  wrap
                  v-for="(value, id, index) in filterData"
                  v-if="index == 0"
                  :key="index"
                >
                  <v-flex xs12 style="margin:16px;">
                    <v-layout>
                      <v-flex xs12>
                        <v-avatar
                          size="100px"
                          class="mx-auto"
                          style="margin: auto;display:block;margin-bottom:10px !important"
                        >
                          <img src="/static/icon/user.png" v-if="!value[0].studentId.profilePicUrl" />
                          <img
                            :src="value[0].studentId.profilePicUrl"
                            v-else-if="value[0].studentId.profilePicUrl"
                          />
                        </v-avatar>
                      </v-flex>
                    </v-layout>
                    <v-layout>
                      <v-flex xs12 style="text-align:center;">
                        <h3>
                          <b>{{ value[0].studentId.name }}</b>
                        </h3>
                        <p class="grey--text">Student</p>
                      </v-flex>
                    </v-layout>
                    <v-layout
                      style="border: 1px solid lightgrey;padding: 4px;border-top-right-radius: 4px;
                       border-top-left-radius: 4px;"
                    >
                      <v-flex xs6 sm3 class="py-1">
                        <h4>
                          <b>RollNo</b>
                        </h4>
                      </v-flex>
                      <v-flex sm9 xs7 class="py-1">
                        <h4>: {{ value[0].studentId.rollNo }}</h4>
                      </v-flex>
                    </v-layout>
                    <v-layout style="border: 1px solid lightgrey;padding: 4px;">
                      <v-flex xs6 sm3 class="py-1">
                        <h4>
                          <b>Class</b>
                        </h4>
                      </v-flex>
                      <v-flex sm9 xs8 class="py-1">
                        <h4>: {{value[0].classId.classNum }}</h4>
                      </v-flex>
                    </v-layout>
                    <v-layout
                      style="border: 1px solid lightgrey;padding: 4px;border-bottom-right-radius: 4px;
                       border-bottom-left-radius: 4px;"
                    >
                      <v-flex xs6 sm3 class>
                        <h4>
                          <b>Section</b>
                        </h4>
                      </v-flex>
                      <v-flex sm9 xs6 class>
                        <h4>: {{ value[0].sectionId.name}}</h4>
                      </v-flex>
                    </v-layout>
                  </v-flex>
                </v-layout>
66a5c3b75   Neeraj Sharma   implement gloabal...
103
                <v-layout v-if="markData == ''">
37150e7c1   Neeraj Sharma   implement school ...
104
105
106
107
                  <v-flex xs12>
                    <h5 class="text-xs-center pa-3">No Data Found</h5>
                  </v-flex>
                </v-layout>
ec5677f43   Neeraj Sharma   implement print o...
108
109
              </v-card>
            </v-flex>
495e4037c   Neeraj Sharma   update
110

66a5c3b75   Neeraj Sharma   implement gloabal...
111
            <!-- ****** TABLE DATA TOTAL MARK  ****** -->
495e4037c   Neeraj Sharma   update
112

66a5c3b75   Neeraj Sharma   implement gloabal...
113
            <v-flex xs12 sm12 md9 v-show="showMark">
ec5677f43   Neeraj Sharma   implement print o...
114
115
              <v-card class="fixcolors white--text" flat>
                <v-card-actions class="pa-0">
79583580d   Neeraj Sharma   implement task ma...
116
                  <v-spacer></v-spacer>
ec5677f43   Neeraj Sharma   implement print o...
117
                  <v-card-title class="pa-2">
79583580d   Neeraj Sharma   implement task ma...
118
                    <h3>Mark</h3>
ec5677f43   Neeraj Sharma   implement print o...
119
                  </v-card-title>
79583580d   Neeraj Sharma   implement task ma...
120
                  <v-spacer></v-spacer>
ec5677f43   Neeraj Sharma   implement print o...
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
                </v-card-actions>
              </v-card>
              <v-card
                v-for="(value, id, index) in filterData"
                :key="index"
                flat
                style="border: 1px solid lightgrey;margin-bottom:14px;"
              >
                <v-card-title class="subheading">{{value[0].examId.examName}}</v-card-title>
                <table
                  class="mb-5 tableRsponsive feeTypeTable"
                  style="border: 1px solid lightgrey;
                    border-collapse: collapse;!important
                    table-layout: auto !important;
                    width: 100% !important;"
                >
                  <thead style="border: 1px solid lightgrey !important;">
                    <tr
                      class="info white--text"
                      style="border: 1px solid lightgrey !important;padding:4px;"
                    >
                      <td
                        rowspan="2"
                        style="border: 1px solid lightgrey !important;padding: 10px;"
                      >Subject</td>
4d1fcaddc   Neeraj Sharma   fixed validation ...
146
147
148
149
150
151
152
153
                      <template v-for="studentData in  value">
                        <td
                          colspan="2"
                          v-for="studentMark in studentData.studentsMarks"
                          style="border: 1px solid lightgrey !important;padding: 10px;"
                        >{{studentMark.markDistributionId.distributionType}}</td>
                        <td style="border: 1px solid lightgrey !important;padding: 10px;">Total</td>
                      </template>
ec5677f43   Neeraj Sharma   implement print o...
154
155
156
157
158
159
160
161
162
163
164
                    </tr>
                    <tr
                      v-for="(subject, ind) in value"
                      v-if="ind == 0"
                      style="border: 1px solid lightgrey !important;"
                    >
                      <template v-for="(exam, i) in subject.studentsMarks">
                        <td
                          class="bg-sky white--text"
                          style="border: 1px solid lightgrey !important;padding: 10px;"
                        >Mark</td>
79583580d   Neeraj Sharma   implement task ma...
165
                        <td
ec5677f43   Neeraj Sharma   implement print o...
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
                          class="bg-sky-light white--text"
                          style="border: 1px solid lightgrey !important;padding: 10px;"
                        >Highest Mark</td>
                      </template>
                      <td
                        class="bg-sky white--text"
                        style="border: 1px solid lightgrey !important;padding: 10px;"
                      >Mark</td>
                    </tr>
                  </thead>
                  <tbody style="border: 1px solid lightgrey !important;">
                    <tr v-for="subject in value" style="border: 1px solid lightgrey !important;">
                      <td
                        style="border: 1px solid lightgrey !important;padding: 10px;"
                      >{{subject.subjectName}}</td>
                      <template v-for="(exam, i) in subject.studentsMarks">
                        <td
                          style="border: 1px solid lightgrey !important;padding: 10px;"
                        >{{exam.marksScored}}</td>
                        <td
                          style="border: 1px solid lightgrey !important;padding: 10px;"
                        >{{exam.markDistributionId.markValue}}</td>
                      </template>
                      <td
                        style="border: 1px solid lightgrey !important;padding: 10px;"
                      >{{subject.totalMarks}}</td>
                    </tr>
                  </tbody>
                </table>
              </v-card>
66a5c3b75   Neeraj Sharma   implement gloabal...
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
              <v-card v-if="markData == ''">
                <v-layout>
                  <v-flex xs12>
                    <h5 class="text-xs-center pa-3">No Data Found</h5>
                  </v-flex>
                </v-layout>
              </v-card>
            </v-flex>
            <!-- ****** TABLE GRADE MARK  ****** -->
            <v-flex xs12 sm12 md9 v-show="showGrade">
              <v-card class="fixcolors white--text" flat>
                <v-card-actions class="pa-0">
                  <v-spacer></v-spacer>
                  <v-card-title class="pa-2">
                    <h3>Mark</h3>
                  </v-card-title>
                  <v-spacer></v-spacer>
                </v-card-actions>
              </v-card>
              <v-card
                v-for="(value, id, index) in filterData"
                :key="index"
                flat
                style="border: 1px solid lightgrey;margin-bottom:14px;"
              >
                <v-card-title class="subheading">{{value[0].examId.examName}}</v-card-title>
                <table
                  class="mb-5 tableRsponsive feeTypeTable"
                  style="border: 1px solid lightgrey;
                    border-collapse: collapse;!important
                    table-layout: auto !important;
                    width: 100% !important;"
                >
                  <thead style="border: 1px solid lightgrey !important;">
                    <tr
                      class="info white--text"
                      style="border: 1px solid lightgrey !important;padding:4px;"
                    >
                      <td style="border: 1px solid lightgrey !important;padding: 10px;">Subject</td>
                      <td style="border: 1px solid lightgrey !important;padding: 10px;">Grade</td>
                    </tr>
                  </thead>
                  <tbody style="border: 1px solid lightgrey !important;">
                    <tr v-for="subject in value" style="border: 1px solid lightgrey !important;">
                      <td
                        style="border: 1px solid lightgrey !important;padding: 10px;"
4d1fcaddc   Neeraj Sharma   fixed validation ...
242
                      >{{ subject.subjectName }}</td>
66a5c3b75   Neeraj Sharma   implement gloabal...
243
244
                      <td
                        style="border: 1px solid lightgrey !important;padding: 10px;"
4d1fcaddc   Neeraj Sharma   fixed validation ...
245
                      >{{ subject.grade }}</td>
66a5c3b75   Neeraj Sharma   implement gloabal...
246
247
248
249
250
                    </tr>
                  </tbody>
                </table>
              </v-card>
              <v-card v-if="markData == ''">
37150e7c1   Neeraj Sharma   implement school ...
251
252
253
254
255
256
                <v-layout>
                  <v-flex xs12>
                    <h5 class="text-xs-center pa-3">No Data Found</h5>
                  </v-flex>
                </v-layout>
              </v-card>
ec5677f43   Neeraj Sharma   implement print o...
257
258
            </v-flex>
          </v-layout>
006544386   Neeraj Sharma   implement task
259
260
261
262
263
264
265
266
267
268
269
        </v-flex>
      </v-container>
      <div class="loader" v-if="showLoader">
        <v-progress-circular indeterminate color="white"></v-progress-circular>
      </div>
    </v-app>
  </template>
  
  <script>
  import http from "@/Services/http.js";
  import moment from "moment";
79583580d   Neeraj Sharma   implement task ma...
270
  import _ from "underscore";
006544386   Neeraj Sharma   implement task
271
272
273
  
  export default {
    data: () => ({
ec5677f43   Neeraj Sharma   implement print o...
274
275
      showLoader: true,
      nameShow: false,
66a5c3b75   Neeraj Sharma   implement gloabal...
276
277
      showMark: true,
      showGrade: false,
006544386   Neeraj Sharma   implement task
278
279
280
      markData: [],
      token: "",
      markDistributions: [],
79583580d   Neeraj Sharma   implement task ma...
281
      markParticularDistributionData: [],
ec5677f43   Neeraj Sharma   implement print o...
282
      filterData: [],
66a5c3b75   Neeraj Sharma   implement gloabal...
283
284
285
286
287
288
289
290
291
292
      output: null,
      gradeAPlus: "A+",
      gradeA: "A",
      gradeBPlus: "B+",
      gradeB: "B",
      gradeCPlus: "C+",
      gradeC: "C",
      selectMarkList: "Mark",
      selectMark: ["Mark", "Grade"],
      MarkData: ""
006544386   Neeraj Sharma   implement task
293
294
295
296
297
298
299
    }),
    mounted() {
      this.token = this.$store.state.token;
      this.getMarkList();
    },
    methods: {
      getMarkList() {
ec5677f43   Neeraj Sharma   implement print o...
300
        this.showLoader = true;
006544386   Neeraj Sharma   implement task
301
302
303
304
305
306
        http()
          .get("/getParticularMark", {
            params: { studentId: this.$route.params.markId },
            headers: { Authorization: "Bearer " + this.token }
          })
          .then(response => {
66a5c3b75   Neeraj Sharma   implement gloabal...
307
            this.markData = response.data.data;
79583580d   Neeraj Sharma   implement task ma...
308
            let newData = response.data.data;
4d1fcaddc   Neeraj Sharma   fixed validation ...
309
            // console.log("newData", newData);
79583580d   Neeraj Sharma   implement task ma...
310
311
312
313
            for (var i = 0; i < newData.length; i++) {
              newData[i].examination = newData[i].examId._id;
            }
            this.filterData = _.groupBy(newData, ["examination"]);
4d1fcaddc   Neeraj Sharma   fixed validation ...
314
            // console.log("this.filterData", this.filterData);
79583580d   Neeraj Sharma   implement task ma...
315
            for (let data in this.filterData) {
79583580d   Neeraj Sharma   implement task ma...
316
              for (let item in this.filterData[data]) {
79583580d   Neeraj Sharma   implement task ma...
317
                var totalMarks = 0;
006544386   Neeraj Sharma   implement task
318
                for (
79583580d   Neeraj Sharma   implement task ma...
319
320
321
                  let i = 0;
                  i < this.filterData[data][item].studentsMarks.length;
                  i++
006544386   Neeraj Sharma   implement task
322
                ) {
4d1fcaddc   Neeraj Sharma   fixed validation ...
323
324
                  // console.log("this.filterData[data][item].studentsMarks[i]",this.filterData[data][item].studentsMarks[i]
                  //   .marksScored)
79583580d   Neeraj Sharma   implement task ma...
325
326
                  totalMarks += this.filterData[data][item].studentsMarks[i]
                    .marksScored;
006544386   Neeraj Sharma   implement task
327
                }
79583580d   Neeraj Sharma   implement task ma...
328
                this.filterData[data][item].totalMarks = totalMarks;
4d1fcaddc   Neeraj Sharma   fixed validation ...
329

66a5c3b75   Neeraj Sharma   implement gloabal...
330
331
332
333
334
335
336
337
338
339
340
341
342
                if (totalMarks > 90) {
                  this.filterData[data][item].grade = this.gradeAPlus;
                } else if (totalMarks > 80 && totalMarks < 90) {
                  this.filterData[data][item].grade = this.gradeA;
                } else if (totalMarks > 70 && totalMarks < 80) {
                  this.filterData[data][item].grade = this.gradeBPlus;
                } else if (totalMarks > 60 && totalMarks < 70) {
                  this.filterData[data][item].grade = this.gradeB;
                } else if (totalMarks > 50 && totalMarks < 60) {
                  this.filterData[data][item].grade = this.gradeCPlus;
                } else if (totalMarks > 40 && totalMarks < 50) {
                  this.filterData[data][item].grade = this.gradeC;
                }
006544386   Neeraj Sharma   implement task
343
344
              }
            }
ec5677f43   Neeraj Sharma   implement print o...
345
            this.showLoader = false;
006544386   Neeraj Sharma   implement task
346
347
          })
          .catch(error => {
006544386   Neeraj Sharma   implement task
348
349
350
351
352
353
354
355
356
            this.showLoader = false;
            this.snackbar = true;
            this.text = error.response.data.message;
            if (error.response.status === 401) {
              this.$router.replace({ path: "/" });
              this.$store.dispatch("setToken", null);
              this.$store.dispatch("Id", null);
            }
          });
ec5677f43   Neeraj Sharma   implement print o...
357
358
359
360
      },
      print() {
        // Pass the element id here
        this.$htmlToPaper("printMe");
66a5c3b75   Neeraj Sharma   implement gloabal...
361
362
363
364
365
366
367
368
369
      },
      selectMarkData(select) {
        if (select == "Mark") {
          this.showMark = true;
          this.showGrade = false;
        } else if (select == "Grade") {
          this.showGrade = true;
          this.showMark = false;
        }
006544386   Neeraj Sharma   implement task
370
371
372
373
374
375
376
377
378
379
      }
    }
  };
  </script>
  
  <style scoped>
  table {
    border-collapse: collapse;
    border: 1px solid #e2e7eb;
  }
006544386   Neeraj Sharma   implement task
380
381
382
  th,
  td {
    border: 1px solid #e2e7eb;
006544386   Neeraj Sharma   implement task
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
    text-align: center;
  }
  table.feeTypeTable {
    table-layout: auto !important;
    width: 100% !important;
  }
  .bg-sky {
    background-color: #98b2cc !important;
  }
  .bg-sky-light {
    background-color: #89a0b8;
  }
  .bg-purple {
    background-color: #9583ac;
  }
  .bg-skyDark {
    background-color: #956785;
  }
ec5677f43   Neeraj Sharma   implement print o...
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
  .loader {
    width: 100%;
    height: 100%;
    position: fixed;
    top: 0;
    left: 0;
    text-align: center;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 999;
  }
  
  .loader > div {
    position: relative;
    top: calc(50% - 16px);
  }
006544386   Neeraj Sharma   implement task
416
417
418
419
420
421
422
  @media screen and (max-width: 380px) {
    .tableRsponsive {
      display: block;
      position: relative;
      overflow: scroll;
    }
  }
ec5677f43   Neeraj Sharma   implement print o...
423
  </style>