Blame view

src/pages/Mark/viewMark.vue 14.5 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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
                </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>
                      <td
                        colspan="2"
                        v-for="exam in value[index].studentsMarks"
                        style="border: 1px solid lightgrey !important;padding: 10px;"
                      >{{exam.markDistributionId.distributionType}}</td>
                      <td style="border: 1px solid lightgrey !important;padding: 10px;">Total</td>
                    </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...
163
                        <td
ec5677f43   Neeraj Sharma   implement print o...
164
165
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
                          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...
194
195
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
242
243
244
245
246
247
248
              <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;"
                      >{{subject.subjectName}}</td>
                      <td
                        style="border: 1px solid lightgrey !important;padding: 10px;"
                      >{{subject.grade}}</td>
                    </tr>
                  </tbody>
                </table>
              </v-card>
              <v-card v-if="markData == ''">
37150e7c1   Neeraj Sharma   implement school ...
249
250
251
252
253
254
                <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...
255
256
            </v-flex>
          </v-layout>
006544386   Neeraj Sharma   implement task
257
258
259
260
261
262
263
264
265
266
267
        </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...
268
  import _ from "underscore";
006544386   Neeraj Sharma   implement task
269
270
271
  
  export default {
    data: () => ({
ec5677f43   Neeraj Sharma   implement print o...
272
273
      showLoader: true,
      nameShow: false,
66a5c3b75   Neeraj Sharma   implement gloabal...
274
275
      showMark: true,
      showGrade: false,
006544386   Neeraj Sharma   implement task
276
277
278
      markData: [],
      token: "",
      markDistributions: [],
79583580d   Neeraj Sharma   implement task ma...
279
      markParticularDistributionData: [],
ec5677f43   Neeraj Sharma   implement print o...
280
      filterData: [],
66a5c3b75   Neeraj Sharma   implement gloabal...
281
282
283
284
285
286
287
288
289
290
      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
291
292
293
294
295
296
297
    }),
    mounted() {
      this.token = this.$store.state.token;
      this.getMarkList();
    },
    methods: {
      getMarkList() {
ec5677f43   Neeraj Sharma   implement print o...
298
        this.showLoader = true;
006544386   Neeraj Sharma   implement task
299
300
301
302
303
304
        http()
          .get("/getParticularMark", {
            params: { studentId: this.$route.params.markId },
            headers: { Authorization: "Bearer " + this.token }
          })
          .then(response => {
66a5c3b75   Neeraj Sharma   implement gloabal...
305
            this.markData = response.data.data;
79583580d   Neeraj Sharma   implement task ma...
306
            let newData = response.data.data;
66a5c3b75   Neeraj Sharma   implement gloabal...
307
            console.log("newData", newData);
79583580d   Neeraj Sharma   implement task ma...
308
309
310
311
            for (var i = 0; i < newData.length; i++) {
              newData[i].examination = newData[i].examId._id;
            }
            this.filterData = _.groupBy(newData, ["examination"]);
66a5c3b75   Neeraj Sharma   implement gloabal...
312
            console.log("this.filterData", this.filterData);
79583580d   Neeraj Sharma   implement task ma...
313
            for (let data in this.filterData) {
79583580d   Neeraj Sharma   implement task ma...
314
              for (let item in this.filterData[data]) {
79583580d   Neeraj Sharma   implement task ma...
315
                var totalMarks = 0;
006544386   Neeraj Sharma   implement task
316
                for (
79583580d   Neeraj Sharma   implement task ma...
317
318
319
                  let i = 0;
                  i < this.filterData[data][item].studentsMarks.length;
                  i++
006544386   Neeraj Sharma   implement task
320
                ) {
79583580d   Neeraj Sharma   implement task ma...
321
322
                  totalMarks += this.filterData[data][item].studentsMarks[i]
                    .marksScored;
006544386   Neeraj Sharma   implement task
323
                }
79583580d   Neeraj Sharma   implement task ma...
324
                this.filterData[data][item].totalMarks = totalMarks;
66a5c3b75   Neeraj Sharma   implement gloabal...
325
326
327
328
329
330
331
332
333
334
335
336
337
                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
338
339
              }
            }
ec5677f43   Neeraj Sharma   implement print o...
340
            this.showLoader = false;
006544386   Neeraj Sharma   implement task
341
342
          })
          .catch(error => {
006544386   Neeraj Sharma   implement task
343
344
345
346
347
348
349
350
351
            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...
352
353
354
355
      },
      print() {
        // Pass the element id here
        this.$htmlToPaper("printMe");
66a5c3b75   Neeraj Sharma   implement gloabal...
356
357
358
359
360
361
362
363
364
      },
      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
365
366
367
368
369
370
371
372
373
374
      }
    }
  };
  </script>
  
  <style scoped>
  table {
    border-collapse: collapse;
    border: 1px solid #e2e7eb;
  }
006544386   Neeraj Sharma   implement task
375
376
377
  th,
  td {
    border: 1px solid #e2e7eb;
006544386   Neeraj Sharma   implement task
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
    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...
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
  .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
411
412
413
414
415
416
417
  @media screen and (max-width: 380px) {
    .tableRsponsive {
      display: block;
      position: relative;
      overflow: scroll;
    }
  }
ec5677f43   Neeraj Sharma   implement print o...
418
  </style>