Commit 8627b28904c22278b320f8787dca97e79d768423
1 parent
1a34a28a17
Exists in
master
and in
3 other branches
set table fields and get data
Showing
3 changed files
with
8 additions
and
25 deletions
Show diff stats
src/pages/Exam/examSchedule.vue
1 | <template> | 1 | <template> |
2 | <v-container fluid class="body-color"> | 2 | <v-container fluid class="body-color"> |
3 | <!-- ****** Edit Exam Schedule****** --> | 3 | <!-- ****** Edit Exam Schedule****** --> |
4 | <v-dialog v-model="editExamScheduleDialog" max-width="800px" scrollable> | 4 | <v-dialog v-model="editExamScheduleDialog" max-width="800px" scrollable> |
5 | <v-card flat class="card-style pa-2" dark> | 5 | <v-card flat class="card-style pa-2" dark> |
6 | <v-layout> | 6 | <v-layout> |
7 | <v-flex xs12> | 7 | <v-flex xs12> |
8 | <label class="title text-xs-center">Edit Exam Schedule</label> | 8 | <label class="title text-xs-center">Edit Exam Schedule</label> |
9 | <v-icon size="24" class="right" @click="editExamScheduleDialog = false">cancel</v-icon> | 9 | <v-icon size="24" class="right" @click="editExamScheduleDialog = false">cancel</v-icon> |
10 | </v-flex> | 10 | </v-flex> |
11 | </v-layout> | 11 | </v-layout> |
12 | <v-card-text> | 12 | <v-card-text> |
13 | <v-form ref="form"> | 13 | <v-form ref="form"> |
14 | <v-container fluid> | 14 | <v-container fluid> |
15 | <v-layout wrap> | 15 | <v-layout wrap> |
16 | <v-flex xs12 sm12> | 16 | <v-flex xs12 sm12> |
17 | <v-layout> | 17 | <v-layout> |
18 | <v-flex xs4 class="pt-4 subheading"> | 18 | <v-flex xs4 class="pt-4 subheading"> |
19 | <label class="right">Exam Name:</label> | 19 | <label class="right">Exam Name:</label> |
20 | </v-flex> | 20 | </v-flex> |
21 | <v-flex xs7 class="ml-3"> | 21 | <v-flex xs7 class="ml-3"> |
22 | <v-select | 22 | <v-select |
23 | :rules="examRules" | 23 | :rules="examRules" |
24 | :items="examList" | 24 | :items="examList" |
25 | v-model="editedItem.examId" | 25 | v-model="editedItem.examId" |
26 | label="Select your Exam Name" | 26 | label="Select your Exam Name" |
27 | item-text="examName" | 27 | item-text="examName" |
28 | item-value="_id" | 28 | item-value="_id" |
29 | ></v-select> | 29 | ></v-select> |
30 | </v-flex> | 30 | </v-flex> |
31 | </v-layout> | 31 | </v-layout> |
32 | </v-flex> | 32 | </v-flex> |
33 | <v-flex xs12 sm12> | 33 | <v-flex xs12 sm12> |
34 | <v-layout> | 34 | <v-layout> |
35 | <v-flex xs4 class="pt-4 subheading"> | 35 | <v-flex xs4 class="pt-4 subheading"> |
36 | <label class="right">Class:</label> | 36 | <label class="right">Class:</label> |
37 | </v-flex> | 37 | </v-flex> |
38 | <v-flex xs7 class="ml-3"> | 38 | <v-flex xs7 class="ml-3"> |
39 | <v-select | 39 | <v-select |
40 | v-model="editedItem.classId" | 40 | v-model="editedItem.classId" |
41 | label="Select your Class" | 41 | label="Select your Class" |
42 | type="text" | 42 | type="text" |
43 | :items="classList" | 43 | :items="classList" |
44 | item-text="classNum" | 44 | item-text="classNum" |
45 | item-value="_id" | 45 | item-value="_id" |
46 | @change="getSections(editedItem.classId)" | 46 | @change="getSections(editedItem.classId)" |
47 | required | 47 | required |
48 | ></v-select> | 48 | ></v-select> |
49 | </v-flex> | 49 | </v-flex> |
50 | </v-layout> | 50 | </v-layout> |
51 | </v-flex> | 51 | </v-flex> |
52 | <v-flex xs12 sm12> | 52 | <v-flex xs12 sm12> |
53 | <v-layout> | 53 | <v-layout> |
54 | <v-flex xs4 class="pt-4 subheading"> | 54 | <v-flex xs4 class="pt-4 subheading"> |
55 | <label class="right">Section:</label> | ||
56 | </v-flex> | ||
57 | <v-flex xs7 class="ml-3"> | ||
58 | <v-select | ||
59 | :items="addSection" | ||
60 | label="Select your section" | ||
61 | v-model="editedItem.sectionId" | ||
62 | item-text="name" | ||
63 | item-value="_id" | ||
64 | name="Select Section" | ||
65 | required | ||
66 | ></v-select> | ||
67 | </v-flex> | ||
68 | </v-layout> | ||
69 | </v-flex> | ||
70 | <v-flex xs12 sm12> | ||
71 | <v-layout> | ||
72 | <v-flex xs4 class="pt-4 subheading"> | ||
73 | <label class="right">Subject Name:</label> | 55 | <label class="right">Subject Name:</label> |
74 | </v-flex> | 56 | </v-flex> |
75 | <v-flex xs7 class="ml-3"> | 57 | <v-flex xs7 class="ml-3"> |
76 | <v-select | 58 | <v-select |
77 | :items="subjects" | 59 | :items="subjects" |
78 | label="Select your Subject Name" | 60 | label="Select your Subject" |
79 | v-model="editedItem.subjectName" | 61 | v-model="editedItem.subjectName" |
80 | item-text="subjectName" | 62 | item-text="subjectName" |
81 | item-value="subjectName" | 63 | item-value="subjectName" |
82 | name="Select Section" | 64 | name="Select Subject" |
83 | required | 65 | required |
84 | ></v-select> | 66 | ></v-select> |
85 | </v-flex> | 67 | </v-flex> |
86 | </v-layout> | 68 | </v-layout> |
87 | </v-flex> | 69 | </v-flex> |
88 | <v-flex xs12 sm12> | 70 | <v-flex xs12 sm12> |
89 | <v-layout> | 71 | <v-layout> |
90 | <v-flex xs4 class="pt-4 subheading"> | 72 | <v-flex xs4 class="pt-4 subheading"> |
91 | <label class="right">Date:</label> | 73 | <label class="right">Date:</label> |
92 | </v-flex> | 74 | </v-flex> |
93 | <v-flex xs7 class="ml-3"> | 75 | <v-flex xs7 class="ml-3"> |
94 | <v-menu | 76 | <v-menu |
95 | ref="editDate" | 77 | ref="editDate" |
96 | :close-on-content-click="false" | 78 | :close-on-content-click="false" |
97 | v-model="editDate" | 79 | v-model="editDate" |
98 | :nudge-right="40" | 80 | :nudge-right="40" |
99 | :return-value.sync="editDate" | 81 | :return-value.sync="editDate" |
100 | lazy | 82 | lazy |
101 | transition="scale-transition" | 83 | transition="scale-transition" |
102 | offset-y | 84 | offset-y |
103 | full-width | 85 | full-width |
104 | min-width="290px" | 86 | min-width="290px" |
105 | > | 87 | > |
106 | <v-text-field | 88 | <v-text-field |
107 | slot="activator" | 89 | slot="activator" |
108 | v-model="editedItem.date" | 90 | v-model="editedItem.date" |
109 | label="Select Date" | 91 | label="Select Date" |
110 | append-icon="event" | 92 | append-icon="event" |
111 | readonly | 93 | readonly |
112 | ></v-text-field> | 94 | ></v-text-field> |
113 | <v-date-picker v-model="editedItem.date" @input="editDate = false"></v-date-picker> | 95 | <v-date-picker v-model="editedItem.date" @input="editDate = false"></v-date-picker> |
114 | </v-menu> | 96 | </v-menu> |
115 | </v-flex> | 97 | </v-flex> |
116 | </v-layout> | 98 | </v-layout> |
117 | </v-flex> | 99 | </v-flex> |
118 | <v-flex xs12 sm12> | 100 | <v-flex xs12 sm12> |
119 | <v-layout> | 101 | <v-layout> |
120 | <v-flex xs4 class="pt-4 subheading"> | 102 | <v-flex xs4 class="pt-4 subheading"> |
121 | <label class="right">Time From:</label> | 103 | <label class="right">Time From:</label> |
122 | </v-flex> | 104 | </v-flex> |
123 | <v-flex xs7 class="ml-3"> | 105 | <v-flex xs7 class="ml-3"> |
124 | <v-menu | 106 | <v-menu |
125 | ref="menuEdit" | 107 | ref="menuEdit" |
126 | :close-on-content-click="false" | 108 | :close-on-content-click="false" |
127 | v-model="menuEdit" | 109 | v-model="menuEdit" |
128 | :nudge-right="40" | 110 | :nudge-right="40" |
129 | :return-value.sync="editedItem.timeFrom" | 111 | :return-value.sync="editedItem.timeFrom" |
130 | lazy | 112 | lazy |
131 | transition="scale-transition" | 113 | transition="scale-transition" |
132 | offset-y | 114 | offset-y |
133 | full-width | 115 | full-width |
134 | max-width="290px" | 116 | max-width="290px" |
135 | min-width="290px" | 117 | min-width="290px" |
136 | > | 118 | > |
137 | <v-text-field | 119 | <v-text-field |
138 | slot="activator" | 120 | slot="activator" |
139 | v-model="editedItem.timeFrom" | 121 | v-model="editedItem.timeFrom" |
140 | label="Select your time From" | 122 | label="Select your time From" |
141 | append-icon="access_time" | 123 | append-icon="access_time" |
142 | readonly | 124 | readonly |
143 | ></v-text-field> | 125 | ></v-text-field> |
144 | <v-time-picker | 126 | <v-time-picker |
145 | v-model="editedItem.timeIn" | 127 | v-model="editedItem.timeIn" |
146 | @change="$refs.menuEdit.save(editedItem.timeIn)" | 128 | @change="$refs.menuEdit.save(editedItem.timeIn)" |
147 | ></v-time-picker> | 129 | ></v-time-picker> |
148 | </v-menu> | 130 | </v-menu> |
149 | </v-flex> | 131 | </v-flex> |
150 | </v-layout> | 132 | </v-layout> |
151 | </v-flex> | 133 | </v-flex> |
152 | <v-flex xs12 sm12> | 134 | <v-flex xs12 sm12> |
153 | <v-layout> | 135 | <v-layout> |
154 | <v-flex xs4 class="pt-4 subheading"> | 136 | <v-flex xs4 class="pt-4 subheading"> |
155 | <label class="right">Time To:</label> | 137 | <label class="right">Time To:</label> |
156 | </v-flex> | 138 | </v-flex> |
157 | <v-flex xs7 class="ml-3"> | 139 | <v-flex xs7 class="ml-3"> |
158 | <v-menu | 140 | <v-menu |
159 | ref="timeToEdit" | 141 | ref="timeToEdit" |
160 | :close-on-content-click="false" | 142 | :close-on-content-click="false" |
161 | v-model="timeToEdit" | 143 | v-model="timeToEdit" |
162 | :nudge-right="40" | 144 | :nudge-right="40" |
163 | :return-value.sync="editedItem.timeTo" | 145 | :return-value.sync="editedItem.timeTo" |
164 | lazy | 146 | lazy |
165 | transition="scale-transition" | 147 | transition="scale-transition" |
166 | offset-y | 148 | offset-y |
167 | full-width | 149 | full-width |
168 | max-width="290px" | 150 | max-width="290px" |
169 | min-width="290px" | 151 | min-width="290px" |
170 | > | 152 | > |
171 | <v-text-field | 153 | <v-text-field |
172 | slot="activator" | 154 | slot="activator" |
173 | v-model="editedItem.timeTo" | 155 | v-model="editedItem.timeTo" |
174 | label="Select your Time To" | 156 | label="Select your Time To" |
175 | append-icon="access_time" | 157 | append-icon="access_time" |
176 | readonly | 158 | readonly |
177 | ></v-text-field> | 159 | ></v-text-field> |
178 | <v-time-picker | 160 | <v-time-picker |
179 | v-model="editedItem.timeTo" | 161 | v-model="editedItem.timeTo" |
180 | @change="$refs.timeToEdit.save(editedItem.timeTo)" | 162 | @change="$refs.timeToEdit.save(editedItem.timeTo)" |
181 | ></v-time-picker> | 163 | ></v-time-picker> |
182 | </v-menu> | 164 | </v-menu> |
183 | </v-flex> | 165 | </v-flex> |
184 | </v-layout> | 166 | </v-layout> |
185 | </v-flex> | 167 | </v-flex> |
186 | <v-flex xs12 sm12> | 168 | <v-flex xs12 sm12> |
187 | <v-layout> | 169 | <v-layout> |
188 | <v-flex xs4 class="pt-4 subheading"> | 170 | <v-flex xs4 class="pt-4 subheading"> |
189 | <label class="right">Room:</label> | 171 | <label class="right">Room:</label> |
190 | </v-flex> | 172 | </v-flex> |
191 | <v-flex xs7 class="ml-3"> | 173 | <v-flex xs7 class="ml-3"> |
192 | <v-text-field | 174 | <v-text-field |
193 | placeholder="fill your room" | 175 | placeholder="fill your room" |
194 | v-model="editedItem.room" | 176 | v-model="editedItem.room" |
195 | @keyup.enter="save" | 177 | @keyup.enter="save" |
196 | ></v-text-field> | 178 | ></v-text-field> |
197 | </v-flex> | 179 | </v-flex> |
198 | </v-layout> | 180 | </v-layout> |
199 | </v-flex> | 181 | </v-flex> |
200 | </v-layout> | 182 | </v-layout> |
201 | <v-layout> | 183 | <v-layout> |
202 | <v-flex xs12> | 184 | <v-flex xs12> |
203 | <v-card-actions> | 185 | <v-card-actions> |
204 | <v-spacer></v-spacer> | 186 | <v-spacer></v-spacer> |
205 | <v-btn round dark @click="save" class="add-button">Save</v-btn> | 187 | <v-btn round dark @click="save" class="add-button">Save</v-btn> |
206 | </v-card-actions> | 188 | </v-card-actions> |
207 | </v-flex> | 189 | </v-flex> |
208 | </v-layout> | 190 | </v-layout> |
209 | </v-container> | 191 | </v-container> |
210 | </v-form> | 192 | </v-form> |
211 | </v-card-text> | 193 | </v-card-text> |
212 | </v-card> | 194 | </v-card> |
213 | </v-dialog> | 195 | </v-dialog> |
214 | 196 | ||
215 | <!-- ****** PROFILE VIEW Exam Schedule DATA ****** --> | 197 | <!-- ****** PROFILE VIEW Exam Schedule DATA ****** --> |
216 | 198 | ||
217 | <v-dialog v-model="profileExamScheduleDialog" max-width="600px"> | 199 | <v-dialog v-model="profileExamScheduleDialog" max-width="600px"> |
218 | <v-card flat class="card-style pa-3" dark> | 200 | <v-card flat class="card-style pa-3" dark> |
219 | <v-layout> | 201 | <v-layout> |
220 | <v-flex xs12> | 202 | <v-flex xs12> |
221 | <label class="title text-xs-center">View Exam Schedule</label> | 203 | <label class="title text-xs-center">View Exam Schedule</label> |
222 | <v-icon size="24" class="right" @click="profileExamScheduleDialog = false">cancel</v-icon> | 204 | <v-icon size="24" class="right" @click="profileExamScheduleDialog = false">cancel</v-icon> |
223 | </v-flex> | 205 | </v-flex> |
224 | </v-layout> | 206 | </v-layout> |
225 | <v-card-text> | 207 | <v-card-text> |
226 | <v-container grid-list-md> | 208 | <v-container grid-list-md> |
227 | <v-layout wrap> | 209 | <v-layout wrap> |
228 | <v-flex> | 210 | <v-flex> |
229 | <v-layout> | 211 | <v-layout> |
230 | <v-flex xs5 sm6> | 212 | <v-flex xs5 sm6> |
231 | <h5 class="right my-1"> | 213 | <h5 class="right my-1"> |
232 | <b>Exam Name:</b> | 214 | <b>Exam Name:</b> |
233 | </h5> | 215 | </h5> |
234 | </v-flex> | 216 | </v-flex> |
235 | <v-flex sm6 xs8> | 217 | <v-flex sm6 xs8> |
236 | <h5 class="my-1">{{ editedItem.examId}}</h5> | 218 | <h5 class="my-1">{{ editedItem.examId}}</h5> |
237 | </v-flex> | 219 | </v-flex> |
238 | </v-layout> | 220 | </v-layout> |
239 | <v-layout> | 221 | <v-layout> |
240 | <v-flex xs5 sm6> | 222 | <v-flex xs5 sm6> |
241 | <h5 class="right my-1"> | 223 | <h5 class="right my-1"> |
242 | <b>Class:</b> | 224 | <b>Class:</b> |
243 | </h5> | 225 | </h5> |
244 | </v-flex> | 226 | </v-flex> |
245 | <v-flex sm6 xs8> | 227 | <v-flex sm6 xs8> |
246 | <h5 class="my-1">{{ editedItem.classId }}</h5> | 228 | <h5 class="my-1">{{ editedItem.classId }}</h5> |
247 | </v-flex> | 229 | </v-flex> |
248 | </v-layout> | 230 | </v-layout> |
249 | <v-layout> | 231 | <v-layout> |
250 | <v-flex xs5 sm6> | 232 | <v-flex xs5 sm6> |
251 | <h5 class="right my-1"> | 233 | <h5 class="right my-1"> |
252 | <b>Section:</b> | 234 | <b>Section:</b> |
253 | </h5> | 235 | </h5> |
254 | </v-flex> | 236 | </v-flex> |
255 | <v-flex sm6 xs8> | 237 | <v-flex sm6 xs8> |
256 | <h5 class="my-1">{{ editedItem.sectionId }}</h5> | 238 | <h5 class="my-1">{{ editedItem.sectionId }}</h5> |
257 | </v-flex> | 239 | </v-flex> |
258 | </v-layout> | 240 | </v-layout> |
259 | <v-layout> | 241 | <v-layout> |
260 | <v-flex xs5 sm6> | 242 | <v-flex xs5 sm6> |
261 | <h5 class="right my-1"> | 243 | <h5 class="right my-1"> |
262 | <b>Subject Name:</b> | 244 | <b>Subject Name:</b> |
263 | </h5> | 245 | </h5> |
264 | </v-flex> | 246 | </v-flex> |
265 | <v-flex sm6 xs8> | 247 | <v-flex sm6 xs8> |
266 | <h5 class="my-1">{{ editedItem.subjectName }}</h5> | 248 | <h5 class="my-1">{{ editedItem.subjectName }}</h5> |
267 | </v-flex> | 249 | </v-flex> |
268 | </v-layout> | 250 | </v-layout> |
269 | <v-layout> | 251 | <v-layout> |
270 | <v-flex xs5 sm6> | 252 | <v-flex xs5 sm6> |
271 | <h5 class="right my-1"> | 253 | <h5 class="right my-1"> |
272 | <b>Date:</b> | 254 | <b>Date:</b> |
273 | </h5> | 255 | </h5> |
274 | </v-flex> | 256 | </v-flex> |
275 | <v-flex sm6 xs8> | 257 | <v-flex sm6 xs8> |
276 | <h5 class="my-1">{{ dates(editedItem.date) }}</h5> | 258 | <h5 class="my-1">{{ dates(editedItem.date) }}</h5> |
277 | </v-flex> | 259 | </v-flex> |
278 | </v-layout> | 260 | </v-layout> |
279 | <v-layout> | 261 | <v-layout> |
280 | <v-flex xs5 sm6> | 262 | <v-flex xs5 sm6> |
281 | <h5 class="right my-1"> | 263 | <h5 class="right my-1"> |
282 | <b>Time From:</b> | 264 | <b>Time From:</b> |
283 | </h5> | 265 | </h5> |
284 | </v-flex> | 266 | </v-flex> |
285 | <v-flex sm6 xs8> | 267 | <v-flex sm6 xs8> |
286 | <h5 class="my-1">{{ editedItem.timeFrom }}</h5> | 268 | <h5 class="my-1">{{ editedItem.timeFrom }}</h5> |
287 | </v-flex> | 269 | </v-flex> |
288 | </v-layout> | 270 | </v-layout> |
289 | <v-layout> | 271 | <v-layout> |
290 | <v-flex xs5 sm6> | 272 | <v-flex xs5 sm6> |
291 | <h5 class="right my-1"> | 273 | <h5 class="right my-1"> |
292 | <b>Time To:</b> | 274 | <b>Time To:</b> |
293 | </h5> | 275 | </h5> |
294 | </v-flex> | 276 | </v-flex> |
295 | <v-flex sm6 xs8> | 277 | <v-flex sm6 xs8> |
296 | <h5 class="my-1">{{ editedItem.timeTo }}</h5> | 278 | <h5 class="my-1">{{ editedItem.timeTo }}</h5> |
297 | </v-flex> | 279 | </v-flex> |
298 | </v-layout> | 280 | </v-layout> |
299 | <v-layout> | 281 | <v-layout> |
300 | <v-flex xs5 sm6> | 282 | <v-flex xs5 sm6> |
301 | <h5 class="right my-1"> | 283 | <h5 class="right my-1"> |
302 | <b>Room:</b> | 284 | <b>Room:</b> |
303 | </h5> | 285 | </h5> |
304 | </v-flex> | 286 | </v-flex> |
305 | <v-flex sm6 xs8> | 287 | <v-flex sm6 xs8> |
306 | <h5 class="my-1">{{ editedItem.room }}</h5> | 288 | <h5 class="my-1">{{ editedItem.room }}</h5> |
307 | </v-flex> | 289 | </v-flex> |
308 | </v-layout> | 290 | </v-layout> |
309 | </v-flex> | 291 | </v-flex> |
310 | </v-layout> | 292 | </v-layout> |
311 | </v-container> | 293 | </v-container> |
312 | </v-card-text> | 294 | </v-card-text> |
313 | </v-card> | 295 | </v-card> |
314 | </v-dialog> | 296 | </v-dialog> |
315 | <!-- ***** Exam Schedule TABLE****** --> | 297 | <!-- ***** Exam Schedule TABLE****** --> |
316 | <v-toolbar color="transparent" flat> | 298 | <v-toolbar color="transparent" flat> |
317 | <v-btn | 299 | <v-btn |
318 | fab | 300 | fab |
319 | dark | 301 | dark |
320 | class="open-dialog-button hidden-xl-only hidden-md-only hidden-lg-only" | 302 | class="open-dialog-button hidden-xl-only hidden-md-only hidden-lg-only" |
321 | small | 303 | small |
322 | @click="addExamScheduleDialog = true" | 304 | @click="addExamScheduleDialog = true" |
323 | > | 305 | > |
324 | <v-icon dark>add</v-icon> | 306 | <v-icon dark>add</v-icon> |
325 | </v-btn> | 307 | </v-btn> |
326 | <v-btn | 308 | <v-btn |
327 | round | 309 | round |
328 | class="open-dialog-button hidden-sm-only hidden-xs-only" | 310 | class="open-dialog-button hidden-sm-only hidden-xs-only" |
329 | dark | 311 | dark |
330 | @click="addExamScheduleDialog = true" | 312 | @click="addExamScheduleDialog = true" |
331 | > | 313 | > |
332 | <v-icon class="white--text pr-1" size="20">add</v-icon>Add Exam Schedule | 314 | <v-icon class="white--text pr-1" size="20">add</v-icon>Add Exam Schedule |
333 | </v-btn> | 315 | </v-btn> |
334 | <v-spacer></v-spacer> | 316 | <v-spacer></v-spacer> |
335 | <v-flex xs8 sm3 md2 class="mr-3"> | 317 | <v-flex xs8 sm3 md2 class="mr-3"> |
336 | <v-select | 318 | <v-select |
337 | v-model="getScheduleData.classId" | 319 | v-model="getScheduleData.classId" |
338 | label="Select your class" | 320 | label="Select your class" |
339 | type="text" | 321 | type="text" |
340 | :items="classList" | 322 | :items="classList" |
341 | item-text="classNum" | 323 | item-text="classNum" |
342 | item-value="_id" | 324 | item-value="_id" |
343 | @change="getSchedulesList()" | 325 | @change="getSchedulesList()" |
344 | required | 326 | required |
345 | ></v-select> | 327 | ></v-select> |
346 | </v-flex> | 328 | </v-flex> |
347 | <v-card-title class="body-1" v-show="show"> | 329 | <v-card-title class="body-1" v-show="show"> |
348 | <v-btn icon large flat @click="displaySearch"> | 330 | <v-btn icon large flat @click="displaySearch"> |
349 | <v-avatar size="27"> | 331 | <v-avatar size="27"> |
350 | <img src="/static/icon/search.png" alt="icon" /> | 332 | <img src="/static/icon/search.png" alt="icon" /> |
351 | </v-avatar> | 333 | </v-avatar> |
352 | </v-btn> | 334 | </v-btn> |
353 | </v-card-title> | 335 | </v-card-title> |
354 | <v-flex xs8 sm8 md3 lg2 v-show="showSearch"> | 336 | <v-flex xs8 sm8 md3 lg2 v-show="showSearch"> |
355 | <v-layout> | 337 | <v-layout> |
356 | <v-text-field v-model="search" label="Search" prepend-inner-icon="search" color="primary"></v-text-field> | 338 | <v-text-field v-model="search" label="Search" prepend-inner-icon="search" color="primary"></v-text-field> |
357 | <v-icon @click="closeSearch" color="error">close</v-icon> | 339 | <v-icon @click="closeSearch" color="error">close</v-icon> |
358 | </v-layout> | 340 | </v-layout> |
359 | </v-flex> | 341 | </v-flex> |
360 | </v-toolbar> | 342 | </v-toolbar> |
361 | <v-data-table | 343 | <v-data-table |
362 | :headers="headers" | 344 | :headers="headers" |
363 | :items="ScheduleData" | 345 | :items="ScheduleData" |
364 | :pagination.sync="pagination" | 346 | :pagination.sync="pagination" |
365 | :search="search" | 347 | :search="search" |
366 | > | 348 | > |
367 | <template slot="items" slot-scope="props"> | 349 | <template slot="items" slot-scope="props"> |
368 | <tr class="tr"> | 350 | <tr class="tr"> |
369 | <td class="td td-row">{{ props.index + 1}}</td> | 351 | <td class="td td-row">{{ props.index + 1}}</td> |
370 | <td class="td td-row text-xs-center">{{ props.item.examId.examName}}</td> | 352 | <td class="td td-row text-xs-center">{{ props.item.examId.examName}}</td> |
371 | <td class="td td-row text-xs-center">{{ props.item.classId.classNum}}</td> | 353 | <td class="td td-row text-xs-center">{{ props.item.classId.classNum}}</td> |
372 | <td class="td td-row text-xs-center">{{ props.item.subjectName }}</td> | 354 | <td class="td td-row text-xs-center">{{ props.item.subjectName }}</td> |
373 | <td class="td td-row text-xs-center">{{ dates(props.item.date) }}</td> | 355 | <td class="td td-row text-xs-center">{{ dates(props.item.date) }}</td> |
374 | <td class="td td-row text-xs-center">{{ props.item.timeFrom }} - {{ props.item.timeTo }}</td> | 356 | <td class="td td-row text-xs-center">{{ props.item.timeFrom }} - {{ props.item.timeTo }}</td> |
375 | <td class="td td-row text-xs-center">{{ props.item.room }}</td> | 357 | <td class="td td-row text-xs-center">{{ props.item.room }}</td> |
376 | <td class="td td-row text-xs-center"> | 358 | <td class="td td-row text-xs-center"> |
377 | <span> | 359 | <span> |
378 | <v-tooltip top> | 360 | <v-tooltip top> |
379 | <img | 361 | <img |
380 | slot="activator" | 362 | slot="activator" |
381 | style="cursor:pointer; width:25px; height:25px; " | 363 | style="cursor:pointer; width:25px; height:25px; " |
382 | class="mr-3" | 364 | class="mr-3" |
383 | @click="profile(props.item)" | 365 | @click="profile(props.item)" |
384 | src="/static/icon/view.png" | 366 | src="/static/icon/view.png" |
385 | /> | 367 | /> |
386 | <span>View</span> | 368 | <span>View</span> |
387 | </v-tooltip> | 369 | </v-tooltip> |
388 | <v-tooltip top> | 370 | <v-tooltip top> |
389 | <img | 371 | <img |
390 | slot="activator" | 372 | slot="activator" |
391 | style="cursor:pointer; width:20px; height:18px; " | 373 | style="cursor:pointer; width:20px; height:18px; " |
392 | class="mr-3" | 374 | class="mr-3" |
393 | @click="editItem(props.item)" | 375 | @click="editItem(props.item)" |
394 | src="/static/icon/edit.png" | 376 | src="/static/icon/edit.png" |
395 | /> | 377 | /> |
396 | <span>Edit</span> | 378 | <span>Edit</span> |
397 | </v-tooltip> | 379 | </v-tooltip> |
398 | <v-tooltip top> | 380 | <v-tooltip top> |
399 | <img | 381 | <img |
400 | slot="activator" | 382 | slot="activator" |
401 | style="cursor:pointer; width:20px; height:20px; " | 383 | style="cursor:pointer; width:20px; height:20px; " |
402 | @click="deleteSchedule(props.item)" | 384 | @click="deleteSchedule(props.item)" |
403 | src="/static/icon/delete.png" | 385 | src="/static/icon/delete.png" |
404 | /> | 386 | /> |
405 | <span>Delete</span> | 387 | <span>Delete</span> |
406 | </v-tooltip> | 388 | </v-tooltip> |
407 | </span> | 389 | </span> |
408 | </td> | 390 | </td> |
409 | </tr> | 391 | </tr> |
410 | </template> | 392 | </template> |
411 | <v-alert | 393 | <v-alert |
412 | slot="no-results" | 394 | slot="no-results" |
413 | :value="true" | 395 | :value="true" |
414 | color="error" | 396 | color="error" |
415 | icon="warning" | 397 | icon="warning" |
416 | >Your search for "{{ search }}" found no results.</v-alert> | 398 | >Your search for "{{ search }}" found no results.</v-alert> |
417 | </v-data-table> | 399 | </v-data-table> |
418 | 400 | ||
419 | <!-- ****** ADD Exam Schedule ****** --> | 401 | <!-- ****** ADD Exam Schedule ****** --> |
420 | <v-dialog v-model="addExamScheduleDialog" max-width="600"> | 402 | <v-dialog v-model="addExamScheduleDialog" max-width="600"> |
421 | <v-card flat class="card-style pa-2" dark> | 403 | <v-card flat class="card-style pa-2" dark> |
422 | <v-layout> | 404 | <v-layout> |
423 | <v-flex xs12> | 405 | <v-flex xs12> |
424 | <label class="title text-xs-center">Add Exam</label> | 406 | <label class="title text-xs-center">Add Exam</label> |
425 | <v-icon size="24" class="right" @click="addExamScheduleDialog = false">cancel</v-icon> | 407 | <v-icon size="24" class="right" @click="addExamScheduleDialog = false">cancel</v-icon> |
426 | </v-flex> | 408 | </v-flex> |
427 | </v-layout> | 409 | </v-layout> |
428 | <v-form ref="form" v-model="valid" lazy-validation> | 410 | <v-form ref="form" v-model="valid" lazy-validation> |
429 | <v-container fluid> | 411 | <v-container fluid> |
430 | <v-flex xs12> | 412 | <v-flex xs12> |
431 | <v-layout> | 413 | <v-layout> |
432 | <v-flex xs5 class="pt-4 subheading"> | 414 | <v-flex xs5 class="pt-4 subheading"> |
433 | <label class="right">Exam Name:</label> | 415 | <label class="right">Exam Name:</label> |
434 | </v-flex> | 416 | </v-flex> |
435 | <v-flex xs7 sm7 md6 class="ml-3"> | 417 | <v-flex xs7 sm7 md6 class="ml-3"> |
436 | <v-select | 418 | <v-select |
437 | label="Select your Exam Name" | 419 | label="Select your Exam Name" |
438 | :rules="examRules" | 420 | :rules="examRules" |
439 | :items="examList" | 421 | :items="examList" |
440 | v-model="addSchedule.examId" | 422 | v-model="addSchedule.examId" |
441 | item-text="examName" | 423 | item-text="examName" |
442 | item-value="_id" | 424 | item-value="_id" |
443 | ></v-select> | 425 | ></v-select> |
444 | </v-flex> | 426 | </v-flex> |
445 | </v-layout> | 427 | </v-layout> |
446 | </v-flex> | 428 | </v-flex> |
447 | <v-flex xs12> | 429 | <v-flex xs12> |
448 | <v-layout> | 430 | <v-layout> |
449 | <v-flex xs5 class="pt-4 subheading"> | 431 | <v-flex xs5 class="pt-4 subheading"> |
450 | <label class="right">Class:</label> | 432 | <label class="right">Class:</label> |
451 | </v-flex> | 433 | </v-flex> |
452 | <v-flex xs7 sm7 md6 class="ml-3"> | 434 | <v-flex xs7 sm7 md6 class="ml-3"> |
453 | <v-select | 435 | <v-select |
454 | v-model="addSchedule.classId" | 436 | v-model="addSchedule.classId" |
455 | label="Select your class" | 437 | label="Select your class" |
456 | type="text" | 438 | type="text" |
457 | :items="classList" | 439 | :items="classList" |
458 | item-text="classNum" | 440 | item-text="classNum" |
459 | item-value="_id" | 441 | item-value="_id" |
460 | :rules="classRules" | 442 | :rules="classRules" |
461 | @change="getSections(addSchedule.classId)" | 443 | @change="getSections(addSchedule.classId)" |
462 | required | 444 | required |
463 | ></v-select> | 445 | ></v-select> |
464 | </v-flex> | 446 | </v-flex> |
465 | </v-layout> | 447 | </v-layout> |
466 | </v-flex> | 448 | </v-flex> |
467 | <v-flex xs12> | 449 | <v-flex xs12> |
468 | <v-layout> | 450 | <v-layout> |
469 | <v-flex xs5 class="pt-4 subheading"> | 451 | <v-flex xs5 class="pt-4 subheading"> |
470 | <label class="right">Section:</label> | 452 | <label class="right">Section:</label> |
471 | </v-flex> | 453 | </v-flex> |
472 | <v-flex xs7 sm7 md6 class="ml-3"> | 454 | <v-flex xs7 sm7 md6 class="ml-3"> |
473 | <v-select | 455 | <v-select |
474 | :items="addSection" | 456 | :items="addSection" |
475 | label="Select Section" | 457 | label="Select Section" |
476 | v-model="addSchedule.sectionId" | 458 | v-model="addSchedule.sectionId" |
477 | item-text="name" | 459 | item-text="name" |
478 | item-value="_id" | 460 | item-value="_id" |
479 | name="Select Section" | 461 | name="Select Section" |
480 | :rules="sectionRules" | 462 | :rules="sectionRules" |
481 | required | 463 | required |
482 | ></v-select> | 464 | ></v-select> |
483 | </v-flex> | 465 | </v-flex> |
484 | </v-layout> | 466 | </v-layout> |
485 | </v-flex> | 467 | </v-flex> |
486 | <v-flex xs12> | 468 | <v-flex xs12> |
487 | <v-layout> | 469 | <v-layout> |
488 | <v-flex xs5 class="pt-4 subheading"> | 470 | <v-flex xs5 class="pt-4 subheading"> |
489 | <label class="right">Subject Name:</label> | 471 | <label class="right">Subject Name:</label> |
490 | </v-flex> | 472 | </v-flex> |
491 | <v-flex xs7 sm7 md6 class="ml-3"> | 473 | <v-flex xs7 sm7 md6 class="ml-3"> |
492 | <v-select | 474 | <v-select |
493 | :items="subjects" | 475 | :items="subjects" |
494 | label="Select Subject" | 476 | label="Select Subject" |
495 | v-model="addSchedule.subjectName" | 477 | v-model="addSchedule.subjectName" |
496 | item-text="subjectName" | 478 | item-text="subjectName" |
497 | item-value="subjectName" | 479 | item-value="subjectName" |
498 | name="Select Section" | 480 | name="Select Section" |
499 | :rules="subjectRules" | 481 | :rules="subjectRules" |
500 | required | 482 | required |
501 | ></v-select> | 483 | ></v-select> |
502 | </v-flex> | 484 | </v-flex> |
503 | </v-layout> | 485 | </v-layout> |
504 | </v-flex> | 486 | </v-flex> |
505 | <v-flex xs12> | 487 | <v-flex xs12> |
506 | <v-layout> | 488 | <v-layout> |
507 | <v-flex xs5 class="pt-4 subheading"> | 489 | <v-flex xs5 class="pt-4 subheading"> |
508 | <label class="right">Date:</label> | 490 | <label class="right">Date:</label> |
509 | </v-flex> | 491 | </v-flex> |
510 | <v-flex xs7 sm7 md6 class="ml-3"> | 492 | <v-flex xs7 sm7 md6 class="ml-3"> |
511 | <v-menu | 493 | <v-menu |
512 | ref="menu2" | 494 | ref="menu2" |
513 | :close-on-content-click="false" | 495 | :close-on-content-click="false" |
514 | v-model="menu2" | 496 | v-model="menu2" |
515 | :nudge-right="40" | 497 | :nudge-right="40" |
516 | :return-value.sync="addSchedule.date" | 498 | :return-value.sync="addSchedule.date" |
517 | lazy | 499 | lazy |
518 | transition="scale-transition" | 500 | transition="scale-transition" |
519 | offset-y | 501 | offset-y |
520 | full-width | 502 | full-width |
521 | min-width="290px" | 503 | min-width="290px" |
522 | > | 504 | > |
523 | <v-text-field | 505 | <v-text-field |
524 | slot="activator" | 506 | slot="activator" |
525 | v-model="addSchedule.date" | 507 | v-model="addSchedule.date" |
526 | :rules="examScheduleDateRules" | 508 | :rules="examScheduleDateRules" |
527 | label="Select Date" | 509 | label="Select Date" |
528 | append-icon="event" | 510 | append-icon="event" |
529 | readonly | 511 | readonly |
530 | ></v-text-field> | 512 | ></v-text-field> |
531 | <v-date-picker | 513 | <v-date-picker |
532 | v-model="addSchedule.date" | 514 | v-model="addSchedule.date" |
533 | @input="$refs.menu2.save(addSchedule.date)" | 515 | @input="$refs.menu2.save(addSchedule.date)" |
534 | ></v-date-picker> | 516 | ></v-date-picker> |
535 | </v-menu> | 517 | </v-menu> |
536 | </v-flex> | 518 | </v-flex> |
537 | </v-layout> | 519 | </v-layout> |
538 | </v-flex> | 520 | </v-flex> |
539 | <v-flex xs12> | 521 | <v-flex xs12> |
540 | <v-layout> | 522 | <v-layout> |
541 | <v-flex xs5 class="pt-4 subheading"> | 523 | <v-flex xs5 class="pt-4 subheading"> |
542 | <label class="right">Time From:</label> | 524 | <label class="right">Time From:</label> |
543 | </v-flex> | 525 | </v-flex> |
544 | <v-flex xs7 sm7 md6 class="ml-3"> | 526 | <v-flex xs7 sm7 md6 class="ml-3"> |
545 | <v-menu | 527 | <v-menu |
546 | ref="menuA" | 528 | ref="menuA" |
547 | :close-on-content-click="false" | 529 | :close-on-content-click="false" |
548 | v-model="menuB" | 530 | v-model="menuB" |
549 | :nudge-right="40" | 531 | :nudge-right="40" |
550 | :return-value.sync="addSchedule.timeFrom" | 532 | :return-value.sync="addSchedule.timeFrom" |
551 | lazy | 533 | lazy |
552 | transition="scale-transition" | 534 | transition="scale-transition" |
553 | offset-y | 535 | offset-y |
554 | full-width | 536 | full-width |
555 | max-width="290px" | 537 | max-width="290px" |
556 | min-width="290px" | 538 | min-width="290px" |
557 | > | 539 | > |
558 | <v-text-field | 540 | <v-text-field |
559 | slot="activator" | 541 | slot="activator" |
560 | v-model="addSchedule.timeIn" | 542 | v-model="addSchedule.timeIn" |
561 | label="Select your time From" | 543 | label="Select your time From" |
562 | append-icon="access_time" | 544 | append-icon="access_time" |
563 | :rules="timeInRules" | 545 | :rules="timeInRules" |
564 | readonly | 546 | readonly |
565 | ></v-text-field> | 547 | ></v-text-field> |
566 | <v-time-picker | 548 | <v-time-picker |
567 | v-model="addSchedule.timeIn" | 549 | v-model="addSchedule.timeIn" |
568 | @change="$refs.menuA.save(addSchedule.timeIn)" | 550 | @change="$refs.menuA.save(addSchedule.timeIn)" |
569 | ></v-time-picker> | 551 | ></v-time-picker> |
570 | </v-menu> | 552 | </v-menu> |
571 | </v-flex> | 553 | </v-flex> |
572 | </v-layout> | 554 | </v-layout> |
573 | </v-flex> | 555 | </v-flex> |
574 | <v-flex xs12> | 556 | <v-flex xs12> |
575 | <v-layout> | 557 | <v-layout> |
576 | <v-flex xs5 class="pt-4 subheading"> | 558 | <v-flex xs5 class="pt-4 subheading"> |
577 | <label class="right">Time To:</label> | 559 | <label class="right">Time To:</label> |
578 | </v-flex> | 560 | </v-flex> |
579 | <v-flex xs7 sm7 md6 class="ml-3"> | 561 | <v-flex xs7 sm7 md6 class="ml-3"> |
580 | <v-menu | 562 | <v-menu |
581 | ref="menu" | 563 | ref="menu" |
582 | :close-on-content-click="false" | 564 | :close-on-content-click="false" |
583 | v-model="menu1" | 565 | v-model="menu1" |
584 | :nudge-right="40" | 566 | :nudge-right="40" |
585 | :return-value.sync="addSchedule.timeTo" | 567 | :return-value.sync="addSchedule.timeTo" |
586 | lazy | 568 | lazy |
587 | transition="scale-transition" | 569 | transition="scale-transition" |
588 | offset-y | 570 | offset-y |
589 | full-width | 571 | full-width |
590 | max-width="290px" | 572 | max-width="290px" |
591 | min-width="290px" | 573 | min-width="290px" |
592 | > | 574 | > |
593 | <v-text-field | 575 | <v-text-field |
594 | slot="activator" | 576 | slot="activator" |
595 | v-model="addSchedule.timeTo" | 577 | v-model="addSchedule.timeTo" |
596 | label="Select your Time To" | 578 | label="Select your Time To" |
597 | append-icon="access_time" | 579 | append-icon="access_time" |
598 | :rules="timeOutRules" | 580 | :rules="timeOutRules" |
599 | readonly | 581 | readonly |
600 | ></v-text-field> | 582 | ></v-text-field> |
601 | <v-time-picker | 583 | <v-time-picker |
602 | v-model="addSchedule.timeTo" | 584 | v-model="addSchedule.timeTo" |
603 | @change="$refs.menu.save(addSchedule.timeTo)" | 585 | @change="$refs.menu.save(addSchedule.timeTo)" |
604 | ></v-time-picker> | 586 | ></v-time-picker> |
605 | </v-menu> | 587 | </v-menu> |
606 | </v-flex> | 588 | </v-flex> |
607 | </v-layout> | 589 | </v-layout> |
608 | </v-flex> | 590 | </v-flex> |
609 | <v-flex xs12> | 591 | <v-flex xs12> |
610 | <v-layout> | 592 | <v-layout> |
611 | <v-flex xs5 class="pt-4 subheading"> | 593 | <v-flex xs5 class="pt-4 subheading"> |
612 | <label class="right">Room:</label> | 594 | <label class="right">Room:</label> |
613 | </v-flex> | 595 | </v-flex> |
614 | <v-flex xs7 sm7 md6 class="ml-3"> | 596 | <v-flex xs7 sm7 md6 class="ml-3"> |
615 | <v-text-field | 597 | <v-text-field |
616 | placeholder="fill your room" | 598 | placeholder="fill your room" |
617 | :rules="roomRules" | 599 | :rules="roomRules" |
618 | v-model="addSchedule.room" | 600 | v-model="addSchedule.room" |
619 | @keyup.enter="submit" | 601 | @keyup.enter="submit" |
620 | ></v-text-field> | 602 | ></v-text-field> |
621 | </v-flex> | 603 | </v-flex> |
622 | </v-layout> | 604 | </v-layout> |
623 | </v-flex> | 605 | </v-flex> |
624 | <v-layout> | 606 | <v-layout> |
625 | <v-flex xs12> | 607 | <v-flex xs12> |
626 | <v-card-actions> | 608 | <v-card-actions> |
627 | <v-spacer class="hidden-xs-only"></v-spacer> | 609 | <v-spacer class="hidden-xs-only"></v-spacer> |
628 | <v-btn @click="clear" round dark class="clear-button">clear</v-btn> | 610 | <v-btn @click="clear" round dark class="clear-button">clear</v-btn> |
629 | <v-btn @click="submit" round dark :loading="loading" class="add-button">Add</v-btn> | 611 | <v-btn @click="submit" round dark :loading="loading" class="add-button">Add</v-btn> |
630 | </v-card-actions> | 612 | </v-card-actions> |
631 | </v-flex> | 613 | </v-flex> |
632 | </v-layout> | 614 | </v-layout> |
633 | </v-container> | 615 | </v-container> |
634 | </v-form> | 616 | </v-form> |
635 | </v-card> | 617 | </v-card> |
636 | </v-dialog> | 618 | </v-dialog> |
637 | <v-snackbar | 619 | <v-snackbar |
638 | :timeout="timeout" | 620 | :timeout="timeout" |
639 | :top="y === 'top'" | 621 | :top="y === 'top'" |
640 | :right="x === 'right'" | 622 | :right="x === 'right'" |
641 | :vertical="mode === 'vertical'" | 623 | :vertical="mode === 'vertical'" |
642 | v-model="snackbar" | 624 | v-model="snackbar" |
643 | :color="color" | 625 | :color="color" |
644 | >{{ text }}</v-snackbar> | 626 | >{{ text }}</v-snackbar> |
645 | <div class="loader" v-if="showLoader"> | 627 | <div class="loader" v-if="showLoader"> |
646 | <v-progress-circular indeterminate color="white"></v-progress-circular> | 628 | <v-progress-circular indeterminate color="white"></v-progress-circular> |
647 | </div> | 629 | </div> |
648 | </v-container> | 630 | </v-container> |
649 | </template> | 631 | </template> |
650 | 632 | ||
651 | <script> | 633 | <script> |
652 | import http from "@/Services/http.js"; | 634 | import http from "@/Services/http.js"; |
653 | import moment from "moment"; | 635 | import moment from "moment"; |
654 | 636 | ||
655 | export default { | 637 | export default { |
656 | data: () => ({ | 638 | data: () => ({ |
657 | snackbar: false, | 639 | snackbar: false, |
658 | date: null, | 640 | date: null, |
659 | editDate: false, | 641 | editDate: false, |
660 | menu1: false, | 642 | menu1: false, |
661 | menuB: false, | 643 | menuB: false, |
662 | menu2: false, | 644 | menu2: false, |
663 | menuEdit: false, | 645 | menuEdit: false, |
664 | timeToEdit: false, | 646 | timeToEdit: false, |
665 | show: true, | 647 | show: true, |
666 | showSearch: false, | 648 | showSearch: false, |
667 | addExamScheduleDialog: false, | 649 | addExamScheduleDialog: false, |
668 | color: "", | 650 | color: "", |
669 | y: "top", | 651 | y: "top", |
670 | x: "right", | 652 | x: "right", |
671 | mode: "", | 653 | mode: "", |
672 | timeout: 10000, | 654 | timeout: 10000, |
673 | text: "", | 655 | text: "", |
674 | loading: false, | 656 | loading: false, |
675 | date: null, | 657 | date: null, |
676 | search: "", | 658 | search: "", |
677 | showLoader: false, | 659 | showLoader: false, |
678 | editExamScheduleDialog: false, | 660 | editExamScheduleDialog: false, |
679 | profileExamScheduleDialog: false, | 661 | profileExamScheduleDialog: false, |
680 | valid: true, | 662 | valid: true, |
681 | addSection: [], | ||
682 | pagination: { | 663 | pagination: { |
683 | rowsPerPage: 10 | 664 | rowsPerPage: 10 |
684 | }, | 665 | }, |
685 | examRules: [v => !!v || "Exam Name is required"], | 666 | examRules: [v => !!v || "Exam Name is required"], |
686 | classRules: [v => !!v || "Class Name is required"], | 667 | classRules: [v => !!v || "Class Name is required"], |
687 | sectionRules: [v => !!v || "section is required"], | 668 | sectionRules: [v => !!v || "section is required"], |
688 | subjectRules: [v => !!v || "Subject is required"], | 669 | subjectRules: [v => !!v || "Subject is required"], |
689 | timeInRules: [v => !!v || "Time In is required"], | 670 | timeInRules: [v => !!v || "Time In is required"], |
690 | timeOutRules: [v => !!v || "time Out s is required"], | 671 | timeOutRules: [v => !!v || "time Out s is required"], |
691 | roomRules: [v => !!v || "Room is required"], | 672 | roomRules: [v => !!v || "Room is required"], |
692 | examScheduleDateRules: [v => !!v || "Date is required"], | 673 | examScheduleDateRules: [v => !!v || "Date is required"], |
693 | headers: [ | 674 | headers: [ |
694 | { | 675 | { |
695 | align: "", | 676 | align: "", |
696 | text: "No", | 677 | text: "No", |
697 | sortable: false, | 678 | sortable: false, |
698 | value: "No" | 679 | value: "No" |
699 | }, | 680 | }, |
700 | { | 681 | { |
701 | text: "Exam Name", | 682 | text: "Exam Name", |
702 | vaue: "examId.examName", | 683 | vaue: "examId.examName", |
703 | sortable: false, | 684 | sortable: false, |
704 | align: "center" | 685 | align: "center" |
705 | }, | 686 | }, |
706 | { | 687 | { |
707 | text: "Class", | 688 | text: "Class", |
708 | value: "classId.classNum", | 689 | value: "classId.classNum", |
709 | sortable: false, | 690 | sortable: false, |
710 | align: "center" | 691 | align: "center" |
711 | }, | 692 | }, |
712 | // { | 693 | // { |
713 | // text: "Section", | 694 | // text: "Section", |
714 | // value: "sectionId.name", | 695 | // value: "sectionId.name", |
715 | // sortable: false, | 696 | // sortable: false, |
716 | // align: "center" | 697 | // align: "center" |
717 | // }, | 698 | // }, |
718 | { | 699 | { |
719 | text: "Subject Name", | 700 | text: "Subject Name", |
720 | value: "subjectName", | 701 | value: "subjectName", |
721 | sortable: false, | 702 | sortable: false, |
722 | align: "center" | 703 | align: "center" |
723 | }, | 704 | }, |
724 | { | 705 | { |
725 | text: "Date", | 706 | text: "Date", |
726 | value: "date", | 707 | value: "date", |
727 | sortable: false, | 708 | sortable: false, |
728 | align: "center" | 709 | align: "center" |
729 | }, | 710 | }, |
730 | { | 711 | { |
731 | text: "Time", | 712 | text: "Time", |
732 | value: "timeFrom", | 713 | value: "timeFrom", |
733 | sortable: false, | 714 | sortable: false, |
734 | align: "center" | 715 | align: "center" |
735 | }, | 716 | }, |
736 | { | 717 | { |
737 | text: "Room", | 718 | text: "Room", |
738 | value: "room", | 719 | value: "room", |
739 | sortable: false, | 720 | sortable: false, |
740 | align: "center" | 721 | align: "center" |
741 | }, | 722 | }, |
742 | { text: "Action", value: "", sortable: false, align: "center" } | 723 | { text: "Action", value: "", sortable: false, align: "center" } |
743 | ], | 724 | ], |
744 | classList: [], | 725 | classList: [], |
726 | addSection: [], | ||
745 | examList: [], | 727 | examList: [], |
746 | subjects: [], | 728 | subjects: [], |
747 | addSchedule: {}, | 729 | addSchedule: {}, |
748 | editedItem: { | 730 | editedItem: { |
749 | sectionId: { | 731 | sectionId: { |
750 | name: "" | 732 | name: "" |
751 | } | 733 | } |
752 | }, | 734 | }, |
753 | getScheduleData: {}, | 735 | getScheduleData: {}, |
754 | ScheduleData: [], | 736 | ScheduleData: [], |
755 | token: "" | 737 | token: "" |
756 | }), | 738 | }), |
757 | methods: { | 739 | methods: { |
758 | dates: function(date) { | 740 | dates: function(date) { |
759 | return moment(date).format("MMMM DD, YYYY"); | 741 | return moment(date).format("MMMM DD, YYYY"); |
760 | }, | 742 | }, |
761 | pickFile() { | 743 | pickFile() { |
762 | this.$refs.image.click(); | 744 | this.$refs.image.click(); |
763 | }, | 745 | }, |
764 | getSchedulesList() { | 746 | getSchedulesList() { |
765 | this.showLoader = true; | 747 | this.showLoader = true; |
766 | http() | 748 | http() |
767 | .get("/getSchedulesList", { | 749 | .get("/getSchedulesList", { |
768 | params: { classId: this.getScheduleData.classId }, | 750 | params: { classId: this.getScheduleData.classId }, |
769 | headers: { Authorization: "Bearer " + this.token } | 751 | headers: { Authorization: "Bearer " + this.token } |
770 | }) | 752 | }) |
771 | .then(response => { | 753 | .then(response => { |
772 | this.ScheduleData = response.data.data; | 754 | this.ScheduleData = response.data.data; |
773 | // console.log("this.ScheduleData", this.ScheduleData); | 755 | // console.log("this.ScheduleData", this.ScheduleData); |
774 | this.showLoader = false; | 756 | this.showLoader = false; |
775 | }) | 757 | }) |
776 | .catch(error => { | 758 | .catch(error => { |
777 | // console.log("err====>", err); | 759 | // console.log("err====>", err); |
778 | this.showLoader = false; | 760 | this.showLoader = false; |
779 | this.loadingSearch = false; | 761 | this.loadingSearch = false; |
780 | this.snackbar = true; | 762 | this.snackbar = true; |
781 | this.text = error.response.data.message; | 763 | this.text = error.response.data.message; |
782 | if (error.response.status === 401) { | 764 | if (error.response.status === 401) { |
783 | this.$router.replace({ path: "/" }); | 765 | this.$router.replace({ path: "/" }); |
784 | this.$store.dispatch("setToken", null); | 766 | this.$store.dispatch("setToken", null); |
785 | this.$store.dispatch("Id", null); | 767 | this.$store.dispatch("Id", null); |
786 | } | 768 | } |
787 | }); | 769 | }); |
788 | }, | 770 | }, |
789 | editItem(item) { | 771 | editItem(item) { |
790 | // console.log("item", item); | 772 | // console.log("item", item); |
791 | this.editedIndex = this.ScheduleData.indexOf(item); | 773 | this.editedIndex = this.ScheduleData.indexOf(item); |
792 | this.editedItem = Object.assign({}, item); | 774 | this.editedItem = Object.assign({}, item); |
793 | this.editedItem.examId = this.editedItem.examId._id; | 775 | this.editedItem.examId = this.editedItem.examId._id; |
794 | this.editedItem.classId = this.editedItem.classId._id; | 776 | this.editedItem.classId = this.editedItem.classId._id; |
795 | this.editedItem.sectionId = this.editedItem.sectionId._id; | 777 | this.editedItem.sectionId = this.editedItem.sectionId._id; |
796 | this.editedItem.date = | 778 | this.editedItem.date = |
797 | this.editedItem.date != undefined | 779 | this.editedItem.date != undefined |
798 | ? (this.editedItem.date = this.editedItem.date.substring(0, 10)) | 780 | ? (this.editedItem.date = this.editedItem.date.substring(0, 10)) |
799 | : (this.editedItem.date = ""); | 781 | : (this.editedItem.date = ""); |
800 | this.editExamScheduleDialog = true; | 782 | this.editExamScheduleDialog = true; |
801 | }, | 783 | }, |
802 | profile(item) { | 784 | profile(item) { |
803 | this.editedIndex = this.ScheduleData.indexOf(item); | 785 | this.editedIndex = this.ScheduleData.indexOf(item); |
804 | this.editedItem = Object.assign({}, item); | 786 | this.editedItem = Object.assign({}, item); |
805 | this.editedItem.examId = this.editedItem.examId.examName; | 787 | this.editedItem.examId = this.editedItem.examId.examName; |
806 | this.editedItem.classId = this.editedItem.classId.classNum; | 788 | this.editedItem.classId = this.editedItem.classId.classNum; |
807 | this.editedItem.sectionId = this.editedItem.sectionId.name; | 789 | this.editedItem.sectionId = this.editedItem.sectionId.name; |
808 | this.profileExamScheduleDialog = true; | 790 | this.profileExamScheduleDialog = true; |
809 | }, | 791 | }, |
810 | deleteSchedule(item) { | 792 | deleteSchedule(item) { |
811 | let deleteSchedule = { | 793 | let deleteSchedule = { |
812 | scheduleId: item._id | 794 | scheduleId: item._id |
813 | }; | 795 | }; |
814 | http() | 796 | http() |
815 | .delete( | 797 | .delete( |
816 | "/deleteSchedule", | 798 | "/deleteSchedule", |
817 | confirm("Are you sure you want to Delete this?") && { | 799 | confirm("Are you sure you want to Delete this?") && { |
818 | params: deleteSchedule | 800 | params: deleteSchedule |
819 | } | 801 | } |
820 | ) | 802 | ) |
821 | .then(response => { | 803 | .then(response => { |
822 | this.snackbar = true; | 804 | this.snackbar = true; |
823 | this.text = response.data.message; | 805 | this.text = response.data.message; |
824 | this.color = "green"; | 806 | this.color = "green"; |
825 | this.getSchedulesList(); | 807 | this.getSchedulesList(); |
826 | }) | 808 | }) |
827 | .catch(error => { | 809 | .catch(error => { |
828 | this.snackbar = true; | 810 | this.snackbar = true; |
829 | this.color = "error"; | 811 | this.color = "error"; |
830 | this.text = error.response.data.message; | 812 | this.text = error.response.data.message; |
831 | }); | 813 | }); |
832 | }, | 814 | }, |
833 | close() { | 815 | close() { |
834 | this.dialog = false; | 816 | this.dialog = false; |
835 | }, | 817 | }, |
836 | submit() { | 818 | submit() { |
837 | if (this.$refs.form.validate()) { | 819 | if (this.$refs.form.validate()) { |
838 | this.loading = true; | 820 | this.loading = true; |
839 | http() | 821 | http() |
840 | .post("/createSchedule", this.addSchedule) | 822 | .post("/createSchedule", this.addSchedule) |
841 | .then(response => { | 823 | .then(response => { |
842 | this.snackbar = true; | 824 | this.snackbar = true; |
843 | this.text = response.data.message; | 825 | this.text = response.data.message; |
844 | this.addExamScheduleDialog = false; | 826 | this.addExamScheduleDialog = false; |
845 | this.color = "green"; | 827 | this.color = "green"; |
846 | this.loading = false; | 828 | this.loading = false; |
847 | this.clear(); | 829 | this.clear(); |
848 | }) | 830 | }) |
849 | .catch(error => { | 831 | .catch(error => { |
850 | this.snackbar = true; | 832 | this.snackbar = true; |
851 | this.text = error.response.data.message; | 833 | this.text = error.response.data.message; |
852 | this.color = "red"; | 834 | this.color = "red"; |
853 | this.loading = false; | 835 | this.loading = false; |
854 | }); | 836 | }); |
855 | } | 837 | } |
856 | }, | 838 | }, |
857 | clear() { | 839 | clear() { |
858 | this.$refs.form.reset(); | 840 | this.$refs.form.reset(); |
859 | this.disable = false; | 841 | this.disable = false; |
860 | this.loading = false; | 842 | this.loading = false; |
861 | }, | 843 | }, |
862 | save() { | 844 | save() { |
863 | this.editedItem.scheduleId = this.editedItem._id; | 845 | this.editedItem.scheduleId = this.editedItem._id; |
864 | http() | 846 | http() |
865 | .put("/updateSchedule", this.editedItem) | 847 | .put("/updateSchedule", this.editedItem) |
866 | .then(response => { | 848 | .then(response => { |
867 | this.snackbar = true; | 849 | this.snackbar = true; |
868 | this.text = "Successfully Edit Exam Schedule"; | 850 | this.text = "Successfully Edit Exam Schedule"; |
869 | this.color = "green"; | 851 | this.color = "green"; |
870 | this.getSchedulesList(); | 852 | this.getSchedulesList(); |
871 | this.close(); | 853 | this.close(); |
872 | }) | 854 | }) |
873 | .catch(error => { | 855 | .catch(error => { |
874 | this.snackbar = true; | 856 | this.snackbar = true; |
875 | this.text = error.response.data.message; | 857 | this.text = error.response.data.message; |
876 | this.color = "red"; | 858 | this.color = "red"; |
877 | }); | 859 | }); |
878 | }, | 860 | }, |
879 | getClass() { | 861 | getClass() { |
880 | http() | 862 | http() |
881 | .get("/getClassesList", { | 863 | .get("/getClassesList", { |
882 | headers: { Authorization: "Bearer " + this.token } | 864 | headers: { Authorization: "Bearer " + this.token } |
883 | }) | 865 | }) |
884 | .then(response => { | 866 | .then(response => { |
885 | this.classList = response.data.data; | 867 | this.classList = response.data.data; |
886 | }) | 868 | }) |
887 | .catch(err => { | 869 | .catch(err => { |
888 | // console.log("err====>", err); | 870 | // console.log("err====>", err); |
889 | }); | 871 | }); |
890 | }, | 872 | }, |
891 | getSections(_id) { | 873 | getSections(_id) { |
892 | for (let i = 0; i < this.classList.length; i++) { | 874 | for (let i = 0; i < this.classList.length; i++) { |
893 | if (_id == this.classList[i]._id) { | 875 | if (_id == this.classList[i]._id) { |
894 | this.subjects = this.classList[i].subjects; | 876 | this.subjects = this.classList[i].subjects; |
895 | } | 877 | } |
896 | } | 878 | } |
897 | http() | 879 | http() |
898 | .get( | 880 | .get( |
899 | "/getSectionsList", | 881 | "/getSectionsList", |
900 | { params: { classId: _id } }, | 882 | { params: { classId: _id } }, |
901 | { | 883 | { |
902 | headers: { Authorization: "Bearer " + this.token } | 884 | headers: { Authorization: "Bearer " + this.token } |
903 | } | 885 | } |
904 | ) | 886 | ) |
905 | .then(response => { | 887 | .then(response => { |
906 | this.addSection = response.data.data; | 888 | this.addSection = response.data.data; |
907 | }) | 889 | }) |
908 | .catch(err => { | 890 | .catch(err => { |
909 | }); | 891 | }); |
910 | }, | 892 | }, |
911 | getExamList() { | 893 | getExamList() { |
912 | this.showLoader = true; | 894 | this.showLoader = true; |
913 | this.loadingSearch = true; | 895 | this.loadingSearch = true; |
914 | http() | 896 | http() |
915 | .get("/getExamsList", { | 897 | .get("/getExamsList", { |
916 | headers: { Authorization: "Bearer " + this.token } | 898 | headers: { Authorization: "Bearer " + this.token } |
917 | }) | 899 | }) |
918 | .then(response => { | 900 | .then(response => { |
919 | this.examList = response.data.data; | 901 | this.examList = response.data.data; |
920 | this.showLoader = false; | 902 | this.showLoader = false; |
921 | this.loadingSearch = false; | 903 | this.loadingSearch = false; |
922 | }) | 904 | }) |
923 | .catch(error => { | 905 | .catch(error => { |
924 | this.showLoader = false; | 906 | this.showLoader = false; |
925 | this.loadingSearch = false; | 907 | this.loadingSearch = false; |
926 | this.snackbar = true; | 908 | this.snackbar = true; |
927 | this.text = error.response.data.message; | 909 | this.text = error.response.data.message; |
928 | if (error.response.status === 401) { | 910 | if (error.response.status === 401) { |
929 | this.$router.replace({ path: "/" }); | 911 | this.$router.replace({ path: "/" }); |
930 | this.$store.dispatch("setToken", null); | 912 | this.$store.dispatch("setToken", null); |
931 | this.$store.dispatch("Id", null); | 913 | this.$store.dispatch("Id", null); |
932 | } | 914 | } |
933 | }); | 915 | }); |
934 | }, | 916 | }, |
935 | displaySearch() { | 917 | displaySearch() { |
936 | (this.show = false), (this.showSearch = true); | 918 | (this.show = false), (this.showSearch = true); |
937 | }, | 919 | }, |
938 | closeSearch() { | 920 | closeSearch() { |
939 | this.showSearch = false; | 921 | this.showSearch = false; |
940 | this.show = true; | 922 | this.show = true; |
941 | this.search = ""; | 923 | this.search = ""; |
942 | } | 924 | } |
943 | }, | 925 | }, |
944 | mounted() { | 926 | mounted() { |
945 | this.token = this.$store.state.token; | 927 | this.token = this.$store.state.token; |
946 | this.getClass(); | 928 | this.getClass(); |
947 | this.getExamList(); | 929 | this.getExamList(); |
948 | } | 930 | } |
949 | }; | 931 | }; |
src/pages/Mark/viewMark.vue
1 | <template> | 1 | <template> |
2 | <v-app id="pages-dasboard"> | 2 | <v-app id="pages-dasboard"> |
3 | <!-- ****** PROFILE MARK ****** --> | 3 | <!-- ****** PROFILE MARK ****** --> |
4 | <v-container fluid grid-list-md> | 4 | <v-container fluid grid-list-md> |
5 | <v-layout> | 5 | <v-layout> |
6 | <v-flex xs12 sm8 md10> | 6 | <v-flex xs12 sm8 md10> |
7 | <v-btn class="open-dialog-button mt-3" round dark @click="print()"> | 7 | <v-btn class="open-dialog-button mt-3" round dark @click="print()"> |
8 | 8 | ||
9 | <v-icon size="18" right dark>print</v-icon> | 9 | <v-icon size="18" right dark>print</v-icon> |
10 | </v-btn> | 10 | </v-btn> |
11 | </v-flex> | 11 | </v-flex> |
12 | <v-flex xs12 sm4 md2 class="right"> | 12 | <v-flex xs12 sm4 md2 class="right"> |
13 | <v-select | 13 | <v-select |
14 | class | 14 | class |
15 | :items="selectMark" | 15 | :items="selectMark" |
16 | label="Select" | 16 | label="Select" |
17 | v-model="selectMarkList" | 17 | v-model="selectMarkList" |
18 | @change="selectMarkData(selectMarkList)" | 18 | @change="selectMarkData(selectMarkList)" |
19 | ></v-select> | 19 | ></v-select> |
20 | </v-flex> | 20 | </v-flex> |
21 | </v-layout> | 21 | </v-layout> |
22 | <v-flex xs12 sm12 id="printMe"> | 22 | <v-flex xs12 sm12 id="printMe"> |
23 | <v-layout wrap> | 23 | <v-layout wrap> |
24 | <!-- ****** TABLE DATA MARK ****** --> | 24 | <!-- ****** TABLE DATA MARK ****** --> |
25 | <v-flex xs12 sm12 md12> | 25 | <v-flex xs12 sm12 md12> |
26 | <v-card | 26 | <v-card |
27 | v-for="(value, id, index) in filterData" | 27 | v-for="(value, id, index) in filterData" |
28 | :key="index" | 28 | :key="index" |
29 | flat | 29 | flat |
30 | style="border: 1px solid lightgrey;margin-bottom:14px;padding:20px" | 30 | style="border: 1px solid lightgrey;margin-bottom:14px;padding:20px" |
31 | > | 31 | > |
32 | <v-layout> | 32 | <v-layout> |
33 | <v-flex xs12 sm12 md12 class="text-xs-center"> | 33 | <v-flex xs12 sm12 md12 class="text-xs-center"> |
34 | <img :src="userData.schoolLogoUrl" width="140" alt="logo" /> | 34 | <img :src="userData.schoolLogoUrl" width="140" alt="logo" /> |
35 | <p class="title">{{ userData.name }}</p> | 35 | <p class="title">{{ userData.name }}</p> |
36 | <p>{{ userData.address }}</p> | 36 | <p>{{ userData.address }}</p> |
37 | </v-flex> | 37 | </v-flex> |
38 | <v-flex xs12 sm12 md12 class="text-xs-center"> | 38 | <v-flex xs12 sm12 md12 class="text-xs-center"> |
39 | <v-avatar size="80px"> | 39 | <v-avatar size="80px"> |
40 | <img src="/static/icon/user.png" v-if="!value[0].studentId.profilePicUrl" /> | 40 | <img src="/static/icon/user.png" v-if="!value[0].studentId.profilePicUrl" /> |
41 | <img :src="value[0].studentId.profilePicUrl" v-else-if="value[0].studentId.profilePicUrl" /> | 41 | <img :src="value[0].studentId.profilePicUrl" v-else-if="value[0].studentId.profilePicUrl" /> |
42 | </v-avatar> | 42 | </v-avatar> |
43 | <p | 43 | <p |
44 | style="font-size:20px;margin:0px;margin-bottom:4px;" | 44 | style="font-size:20px;margin:0px;margin-bottom:4px;" |
45 | >{{ value[0].studentId.name }}</p> | 45 | >{{ value[0].studentId.name }}</p> |
46 | <p | 46 | <p |
47 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" | 47 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" |
48 | > Class : {{ value[0].classId.classNum }}</p> | 48 | > Class : {{ value[0].classId.classNum }}</p> |
49 | <p | 49 | <p |
50 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" | 50 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" |
51 | > Section : {{ value[0].sectionId.name }}</p> | 51 | > Section : {{ value[0].sectionId.name }}</p> |
52 | <p | 52 | <p |
53 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" | 53 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" |
54 | > Roll No : {{ value[0].studentId.rollNo }}</p> | 54 | > Roll No : {{ value[0].studentId.rollNo }}</p> |
55 | </v-flex> | 55 | </v-flex> |
56 | </v-layout> | 56 | </v-layout> |
57 | <v-card-title class="subheading">{{value[0].examId.examName}}</v-card-title> | 57 | <v-card-title class="subheading">{{value[0].examId.examName}}</v-card-title> |
58 | <table | 58 | <table |
59 | class="mb-5 tableRsponsive feeTypeTable" | 59 | class="mb-5 tableRsponsive feeTypeTable" |
60 | style="border: 1px solid lightgrey; | 60 | style="border: 1px solid lightgrey; |
61 | border-collapse: collapse;!important | 61 | border-collapse: collapse;!important |
62 | table-layout: auto !important; | 62 | table-layout: auto !important; |
63 | width: 100% !important; | 63 | width: 100% !important; |
64 | overflow: hidden;" | 64 | overflow: hidden;" |
65 | > | 65 | > |
66 | <thead style="border: 1px solid lightgrey !important;"> | 66 | <thead style="border: 1px solid lightgrey !important;"> |
67 | <tr style="border: 1px solid lightgrey !important;padding:4px;"> | 67 | <tr style="border: 1px solid lightgrey !important;padding:4px;"> |
68 | <td | 68 | <td |
69 | rowspan="2" | 69 | rowspan="2" |
70 | style="border: 1px solid lightgrey !important;padding: 10px;" | 70 | style="border: 1px solid lightgrey !important;padding: 10px;" |
71 | >Subject</td> | 71 | >Subject</td> |
72 | <template v-for="studentData in value"> | 72 | <template v-for="studentData in value"> |
73 | <td | 73 | <td |
74 | colspan="2" | 74 | colspan="2" |
75 | v-for="studentMark in studentData.studentsMarks" | 75 | v-for="studentMark in studentData.studentsMarks" |
76 | style="border: 1px solid lightgrey !important;padding: 10px;" | 76 | style="border: 1px solid lightgrey !important;padding: 10px;" |
77 | >{{studentMark.markDistributionId.distributionType}}</td> | 77 | >{{studentMark.markDistributionId.distributionType}}</td> |
78 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Total Marks</td> | 78 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Total Marks</td> |
79 | </template> | 79 | </template> |
80 | </tr> | 80 | </tr> |
81 | <tr | 81 | <tr |
82 | v-for="(subject, ind) in value" | 82 | v-for="(subject, ind) in value" |
83 | v-if="ind == 0" | 83 | v-if="ind == 0" |
84 | style="border: 1px solid lightgrey !important;" | 84 | style="border: 1px solid lightgrey !important;" |
85 | > | 85 | > |
86 | <template v-for="(exam, i) in subject.studentsMarks"> | 86 | <template v-for="(exam, i) in subject.studentsMarks"> |
87 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Marks</td> | 87 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Marks</td> |
88 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Highest Marks</td> | 88 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Highest Marks</td> |
89 | </template> | 89 | </template> |
90 | <!-- <td style="border: 1px solid lightgrey !important;padding: 10px;">Mark</td> --> | 90 | <!-- <td style="border: 1px solid lightgrey !important;padding: 10px;">Mark</td> --> |
91 | </tr> | 91 | </tr> |
92 | </thead> | 92 | </thead> |
93 | <tbody style="border: 1px solid lightgrey !important;"> | 93 | <tbody style="border: 1px solid lightgrey !important;"> |
94 | <tr v-for="subject in value" style="border: 1px solid lightgrey !important;"> | 94 | <tr v-for="subject in value" style="border: 1px solid lightgrey !important;"> |
95 | <td | 95 | <!-- <td |
96 | style="border: 1px solid lightgrey !important;padding: 10px;" | 96 | style="border: 1px solid lightgrey !important;padding: 10px;" |
97 | >{{subject.subjectName}}</td> | 97 | >{{subject.subjectName}}</td> --> |
98 | <td style="border: 1px solid lightgrey !important;padding: 10px;"></td> | ||
98 | <template v-for="(exam, i) in subject.studentsMarks"> | 99 | <template v-for="(exam, i) in subject.studentsMarks"> |
99 | <td | 100 | <td |
100 | style="border: 1px solid lightgrey !important;padding: 10px;" | 101 | style="border: 1px solid lightgrey !important;padding: 10px;" |
101 | >{{exam.marksScored}}</td> | 102 | >{{exam.marksScored}}</td> |
102 | <td | 103 | <td |
103 | style="border: 1px solid lightgrey !important;padding: 10px;" | 104 | style="border: 1px solid lightgrey !important;padding: 10px;" |
104 | >{{exam.markDistributionId.markValue}}</td> | 105 | >{{exam.markDistributionId.markValue}}</td> |
105 | </template> | 106 | </template> |
106 | <td | 107 | <td |
107 | style="border: 1px solid lightgrey !important;padding: 10px;" | 108 | style="border: 1px solid lightgrey !important;padding: 10px;" |
108 | >{{subject.totalMarks}}</td> | 109 | >{{subject.totalMarks}}</td> |
109 | </tr> | 110 | </tr> |
110 | </tbody> | 111 | </tbody> |
111 | </table> | 112 | </table> |
112 | </v-card> | 113 | </v-card> |
113 | </v-flex> | 114 | </v-flex> |
114 | </v-layout> | 115 | </v-layout> |
115 | </v-flex> | 116 | </v-flex> |
116 | </v-container> | 117 | </v-container> |
117 | <div class="loader" v-if="showLoader"> | 118 | <div class="loader" v-if="showLoader"> |
118 | <v-progress-circular indeterminate color="white"></v-progress-circular> | 119 | <v-progress-circular indeterminate color="white"></v-progress-circular> |
119 | </div> | 120 | </div> |
120 | </v-app> | 121 | </v-app> |
121 | </template> | 122 | </template> |
122 | 123 | ||
123 | <script> | 124 | <script> |
124 | import http from "@/Services/http.js"; | 125 | import http from "@/Services/http.js"; |
125 | import moment from "moment"; | 126 | import moment from "moment"; |
126 | import _ from "underscore"; | 127 | import _ from "underscore"; |
127 | 128 | ||
128 | export default { | 129 | export default { |
129 | data: () => ({ | 130 | data: () => ({ |
130 | showLoader: true, | 131 | showLoader: true, |
131 | nameShow: false, | 132 | nameShow: false, |
132 | showMark: true, | 133 | showMark: true, |
133 | showGrade: false, | 134 | showGrade: false, |
134 | markData: [], | 135 | markData: [], |
135 | token: "", | 136 | token: "", |
136 | markDistributions: [], | 137 | markDistributions: [], |
137 | markParticularDistributionData: [], | 138 | markParticularDistributionData: [], |
138 | filterData: [], | 139 | filterData: [], |
139 | output: null, | 140 | output: null, |
140 | gradeAPlus: "A+", | 141 | gradeAPlus: "A+", |
141 | gradeA: "A", | 142 | gradeA: "A", |
142 | gradeBPlus: "B+", | 143 | gradeBPlus: "B+", |
143 | gradeB: "B", | 144 | gradeB: "B", |
144 | gradeCPlus: "C+", | 145 | gradeCPlus: "C+", |
145 | gradeC: "C", | 146 | gradeC: "C", |
146 | selectMarkList: "Mark", | 147 | selectMarkList: "Mark", |
147 | selectMark: ["Mark", "Grade"], | 148 | selectMark: ["Mark", "Grade"], |
148 | MarkData: "", | 149 | MarkData: "", |
149 | userData: {} | 150 | userData: {} |
150 | }), | 151 | }), |
151 | mounted() { | 152 | mounted() { |
152 | this.token = this.$store.state.token; | 153 | this.token = this.$store.state.token; |
153 | this.getMarkList(); | 154 | this.getMarkList(); |
154 | this.getUserData(); | 155 | this.getUserData(); |
155 | }, | 156 | }, |
156 | methods: { | 157 | methods: { |
157 | getMarkList() { | 158 | getMarkList() { |
158 | this.showLoader = true; | 159 | this.showLoader = true; |
159 | http() | 160 | http() |
160 | .get("/getParticularMark", { | 161 | .get("/getParticularMark", { |
161 | params: { studentId: this.$route.params.markId }, | 162 | params: { studentId: this.$route.params.markId }, |
162 | headers: { Authorization: "Bearer " + this.token } | 163 | headers: { Authorization: "Bearer " + this.token } |
163 | }) | 164 | }) |
164 | .then(response => { | 165 | .then(response => { |
165 | this.markData = response.data.data; | 166 | this.markData = response.data.data; |
166 | let newData = response.data.data; | 167 | let newData = response.data.data; |
167 | // console.log("newData", newData); | 168 | // console.log("newData", newData); |
168 | for (var i = 0; i < newData.length; i++) { | 169 | for (var i = 0; i < newData.length; i++) { |
169 | newData[i].examination = newData[i].examId._id; | 170 | newData[i].examination = newData[i].examId._id; |
170 | } | 171 | } |
171 | this.filterData = _.groupBy(newData, ["examination"]); | 172 | this.filterData = _.groupBy(newData, ["examination"]); |
172 | // console.log("this.filterData", this.filterData); | 173 | // console.log("this.filterData", this.filterData); |
173 | for (let data in this.filterData) { | 174 | for (let data in this.filterData) { |
174 | for (let item in this.filterData[data]) { | 175 | for (let item in this.filterData[data]) { |
175 | var totalMarks = 0; | 176 | var totalMarks = 0; |
176 | for ( | 177 | for ( |
177 | let i = 0; | 178 | let i = 0; |
178 | i < this.filterData[data][item].studentsMarks.length; | 179 | i < this.filterData[data][item].studentsMarks.length; |
179 | i++ | 180 | i++ |
180 | ) { | 181 | ) { |
181 | // console.log("this.filterData[data][item].studentsMarks[i]",this.filterData[data][item].studentsMarks[i] | 182 | // console.log("this.filterData[data][item].studentsMarks[i]",this.filterData[data][item].studentsMarks[i] |
182 | // .marksScored) | 183 | // .marksScored) |
183 | totalMarks += this.filterData[data][item].studentsMarks[i] | 184 | totalMarks += this.filterData[data][item].studentsMarks[i] |
184 | .marksScored; | 185 | .marksScored; |
185 | } | 186 | } |
186 | this.filterData[data][item].totalMarks = totalMarks; | 187 | this.filterData[data][item].totalMarks = totalMarks; |
187 | 188 | ||
188 | if (totalMarks > 90) { | 189 | if (totalMarks > 90) { |
189 | this.filterData[data][item].grade = this.gradeAPlus; | 190 | this.filterData[data][item].grade = this.gradeAPlus; |
190 | } else if (totalMarks > 80 && totalMarks < 90) { | 191 | } else if (totalMarks > 80 && totalMarks < 90) { |
191 | this.filterData[data][item].grade = this.gradeA; | 192 | this.filterData[data][item].grade = this.gradeA; |
192 | } else if (totalMarks > 70 && totalMarks < 80) { | 193 | } else if (totalMarks > 70 && totalMarks < 80) { |
193 | this.filterData[data][item].grade = this.gradeBPlus; | 194 | this.filterData[data][item].grade = this.gradeBPlus; |
194 | } else if (totalMarks > 60 && totalMarks < 70) { | 195 | } else if (totalMarks > 60 && totalMarks < 70) { |
195 | this.filterData[data][item].grade = this.gradeB; | 196 | this.filterData[data][item].grade = this.gradeB; |
196 | } else if (totalMarks > 50 && totalMarks < 60) { | 197 | } else if (totalMarks > 50 && totalMarks < 60) { |
197 | this.filterData[data][item].grade = this.gradeCPlus; | 198 | this.filterData[data][item].grade = this.gradeCPlus; |
198 | } else if (totalMarks > 40 && totalMarks < 50) { | 199 | } else if (totalMarks > 40 && totalMarks < 50) { |
199 | this.filterData[data][item].grade = this.gradeC; | 200 | this.filterData[data][item].grade = this.gradeC; |
200 | } | 201 | } |
201 | } | 202 | } |
202 | } | 203 | } |
203 | this.showLoader = false; | 204 | this.showLoader = false; |
204 | }) | 205 | }) |
205 | .catch(error => { | 206 | .catch(error => { |
206 | this.showLoader = false; | 207 | this.showLoader = false; |
207 | this.snackbar = true; | 208 | this.snackbar = true; |
208 | this.text = error.response.data.message; | 209 | this.text = error.response.data.message; |
209 | if (error.response.status === 401) { | 210 | if (error.response.status === 401) { |
210 | this.$router.replace({ path: "/" }); | 211 | this.$router.replace({ path: "/" }); |
211 | this.$store.dispatch("setToken", null); | 212 | this.$store.dispatch("setToken", null); |
212 | this.$store.dispatch("Id", null); | 213 | this.$store.dispatch("Id", null); |
213 | } | 214 | } |
214 | }); | 215 | }); |
215 | }, | 216 | }, |
216 | print() { | 217 | print() { |
217 | // Pass the element id here | 218 | // Pass the element id here |
218 | this.$htmlToPaper("printMe"); | 219 | this.$htmlToPaper("printMe"); |
219 | }, | 220 | }, |
220 | getUserData() { | 221 | getUserData() { |
221 | http() | 222 | http() |
222 | .get("/getParticularUserDetail") | 223 | .get("/getParticularUserDetail") |
223 | .then(response => { | 224 | .then(response => { |
224 | this.userData = response.data.data; | 225 | this.userData = response.data.data; |
225 | }) | 226 | }) |
226 | .catch(error => { | 227 | .catch(error => { |
227 | // if (error.response.status === 401) { | 228 | // if (error.response.status === 401) { |
228 | // this.$router.replace({ path: "/" }); | 229 | // this.$router.replace({ path: "/" }); |
229 | // this.$store.dispatch("setToken", null); | 230 | // this.$store.dispatch("setToken", null); |
230 | // this.$store.dispatch("Id", null); | 231 | // this.$store.dispatch("Id", null); |
231 | // } | 232 | // } |
232 | }); | 233 | }); |
233 | }, | 234 | }, |
234 | selectMarkData(select) { | 235 | selectMarkData(select) { |
235 | if (select == "Mark") { | 236 | if (select == "Mark") { |
236 | this.showMark = true; | 237 | this.showMark = true; |
237 | this.showGrade = false; | 238 | this.showGrade = false; |
238 | } else if (select == "Grade") { | 239 | } else if (select == "Grade") { |
239 | this.showGrade = true; | 240 | this.showGrade = true; |
240 | this.showMark = false; | 241 | this.showMark = false; |
241 | } | 242 | } |
242 | } | 243 | } |
243 | } | 244 | } |
244 | }; | 245 | }; |
245 | </script> | 246 | </script> |
246 | 247 | ||
247 | <style scoped> | 248 | <style scoped> |
248 | .add-button { | 249 | .add-button { |
249 | background: #feb83c !important; | 250 | background: #feb83c !important; |
250 | border-color: #feb83c !important; | 251 | border-color: #feb83c !important; |
251 | text-transform: none !important; | 252 | text-transform: none !important; |
252 | -webkit-box-shadow: none !important; | 253 | -webkit-box-shadow: none !important; |
253 | box-shadow: none !important; | 254 | box-shadow: none !important; |
254 | } | 255 | } |
255 | .card-styles { | 256 | .card-styles { |
256 | background: #7f62f8 !important; | 257 | background: #7f62f8 !important; |
257 | border-color: #7f62f8 !important; | 258 | border-color: #7f62f8 !important; |
258 | } | 259 | } |
259 | .open-dialog-button { | 260 | .open-dialog-button { |
260 | background: #827bfa !important; | 261 | background: #827bfa !important; |
261 | border-color: #827bfa !important; | 262 | border-color: #827bfa !important; |
262 | text-transform: none !important; | 263 | text-transform: none !important; |
263 | } | 264 | } |
264 | table { | 265 | table { |
265 | border-collapse: collapse; | 266 | border-collapse: collapse; |
266 | border: 1px solid #e2e7eb; | 267 | border: 1px solid #e2e7eb; |
267 | } | 268 | } |
268 | th, | 269 | th, |
269 | td { | 270 | td { |
270 | border: 1px solid #e2e7eb; | 271 | border: 1px solid #e2e7eb; |
271 | text-align: center; | 272 | text-align: center; |
272 | } | 273 | } |
273 | table.feeTypeTable { | 274 | table.feeTypeTable { |
274 | table-layout: auto !important; | 275 | table-layout: auto !important; |
275 | width: 100% !important; | 276 | width: 100% !important; |
276 | } | 277 | } |
277 | .bg-sky { | 278 | .bg-sky { |
278 | background-color: #98b2cc !important; | 279 | background-color: #98b2cc !important; |
279 | } | 280 | } |
280 | .bg-sky-light { | 281 | .bg-sky-light { |
281 | background-color: #89a0b8; | 282 | background-color: #89a0b8; |
282 | } | 283 | } |
283 | .bg-purple { | 284 | .bg-purple { |
284 | background-color: #9583ac; | 285 | background-color: #9583ac; |
285 | } | 286 | } |
286 | .bg-skyDark { | 287 | .bg-skyDark { |
287 | background-color: #956785; | 288 | background-color: #956785; |
288 | } | 289 | } |
289 | .loader { | 290 | .loader { |
290 | width: 100%; | 291 | width: 100%; |
291 | height: 100%; | 292 | height: 100%; |
292 | position: fixed; | 293 | position: fixed; |
293 | top: 0; | 294 | top: 0; |
294 | left: 0; | 295 | left: 0; |
295 | text-align: center; | 296 | text-align: center; |
296 | background-color: rgba(0, 0, 0, 0.5); | 297 | background-color: rgba(0, 0, 0, 0.5); |
297 | z-index: 999; | 298 | z-index: 999; |
298 | } | 299 | } |
299 | 300 | ||
300 | .loader > div { | 301 | .loader > div { |
301 | position: relative; | 302 | position: relative; |
302 | top: calc(50% - 16px); | 303 | top: calc(50% - 16px); |
303 | } | 304 | } |
304 | @media screen and (max-width: 380px) { | 305 | @media screen and (max-width: 380px) { |
305 | .tableRsponsive { | 306 | .tableRsponsive { |
306 | /* display: block; */ | 307 | /* display: block; */ |
307 | position: relative; | 308 | position: relative; |
308 | overflow: scroll; | 309 | overflow: scroll; |
309 | } | 310 | } |
310 | } | 311 | } |
311 | </style> | 312 | </style> |
312 | 313 | ||
313 | 314 | ||
314 | 315 | ||
315 | 316 | ||
316 | 317 | ||
317 | 318 | ||
318 | 319 | ||
319 | 320 | ||
320 | 321 | ||
321 | 322 | ||
322 | 323 | ||
323 | 324 | ||
324 | 325 | ||
325 | 326 | ||
326 | 327 | ||
327 | 328 | ||
328 | 329 | ||
329 | 330 |
src/pages/Report/progressCardReport.vue
1 | <template> | 1 | <template> |
2 | <v-container fluid class="body-color"> | 2 | <v-container fluid class="body-color"> |
3 | <!-- ****** Progress Card Report Table****** --> | 3 | <!-- ****** Progress Card Report Table****** --> |
4 | <v-card flat class="elevation-0 transparent"> | 4 | <v-card flat class="elevation-0 transparent"> |
5 | <v-form ref="form" v-model="valid" lazy-validation> | 5 | <v-form ref="form" v-model="valid" lazy-validation> |
6 | <v-flex xs12 sm12 lg12> | 6 | <v-flex xs12 sm12 lg12> |
7 | <v-layout wrap> | 7 | <v-layout wrap> |
8 | <v-flex xs12 sm12 lg3> | 8 | <v-flex xs12 sm12 lg3> |
9 | <v-layout> | 9 | <v-layout> |
10 | <v-flex xs3 sm6 lg2 class="subheading mt-4"> | 10 | <v-flex xs3 sm6 lg2 class="subheading mt-4"> |
11 | <label class="right">Class:</label> | 11 | <label class="right">Class:</label> |
12 | </v-flex> | 12 | </v-flex> |
13 | <v-flex xs9 sm6 lg8 class="ml-2"> | 13 | <v-flex xs9 sm6 lg8 class="ml-2"> |
14 | <v-select | 14 | <v-select |
15 | v-model="getReport.classId" | 15 | v-model="getReport.classId" |
16 | label="Select your class" | 16 | label="Select your class" |
17 | type="text" | 17 | type="text" |
18 | :items="classList" | 18 | :items="classList" |
19 | item-text="classNum" | 19 | item-text="classNum" |
20 | item-value="_id" | 20 | item-value="_id" |
21 | :rules="classRules" | 21 | :rules="classRules" |
22 | @change="getSections(getReport.classId)" | 22 | @change="getSections(getReport.classId)" |
23 | required | 23 | required |
24 | ></v-select> | 24 | ></v-select> |
25 | </v-flex> | 25 | </v-flex> |
26 | </v-layout> | 26 | </v-layout> |
27 | </v-flex> | 27 | </v-flex> |
28 | <v-flex xs12 sm12 lg3> | 28 | <v-flex xs12 sm12 lg3> |
29 | <v-layout> | 29 | <v-layout> |
30 | <v-flex xs3 sm6 lg2 class="subheading mt-4"> | 30 | <v-flex xs3 sm6 lg2 class="subheading mt-4"> |
31 | <label class="right">Section:</label> | 31 | <label class="right">Section:</label> |
32 | </v-flex> | 32 | </v-flex> |
33 | <v-flex xs9 sm6 lg8 class="ml-2"> | 33 | <v-flex xs9 sm6 lg8 class="ml-2"> |
34 | <v-select | 34 | <v-select |
35 | :items="addSection" | 35 | :items="addSection" |
36 | label="Select your Section" | 36 | label="Select your Section" |
37 | v-model="getReport.sectionId" | 37 | v-model="getReport.sectionId" |
38 | item-text="name" | 38 | item-text="name" |
39 | item-value="_id" | 39 | item-value="_id" |
40 | name="Select Section" | 40 | name="Select Section" |
41 | @change="getStudents" | 41 | @change="getStudents" |
42 | :rules="sectionRules" | 42 | :rules="sectionRules" |
43 | required | 43 | required |
44 | ></v-select> | 44 | ></v-select> |
45 | </v-flex> | 45 | </v-flex> |
46 | </v-layout> | 46 | </v-layout> |
47 | </v-flex> | 47 | </v-flex> |
48 | <v-flex xs12 sm12 lg3> | 48 | <v-flex xs12 sm12 lg3> |
49 | <v-layout> | 49 | <v-layout> |
50 | <v-flex xs3 sm6 lg2 class="subheading mt-4"> | 50 | <v-flex xs3 sm6 lg2 class="subheading mt-4"> |
51 | <label class="right">Student:</label> | 51 | <label class="right">Student:</label> |
52 | </v-flex> | 52 | </v-flex> |
53 | <v-flex xs9 sm6 lg8 class="ml-2"> | 53 | <v-flex xs9 sm6 lg8 class="ml-2"> |
54 | <v-select | 54 | <v-select |
55 | :items="getStudentsList" | 55 | :items="getStudentsList" |
56 | label="Select your student" | 56 | label="Select your student" |
57 | v-model="getReport.studentId" | 57 | v-model="getReport.studentId" |
58 | item-text="name" | 58 | item-text="name" |
59 | item-value="_id" | 59 | item-value="_id" |
60 | :rules="studentRules" | 60 | :rules="studentRules" |
61 | required | 61 | required |
62 | ></v-select> | 62 | ></v-select> |
63 | </v-flex> | 63 | </v-flex> |
64 | </v-layout> | 64 | </v-layout> |
65 | </v-flex> | 65 | </v-flex> |
66 | <v-flex xs12 sm12 lg3 class="hidden-xs-only hidden-sm-only pl-5"> | 66 | <v-flex xs12 sm12 lg3 class="hidden-xs-only hidden-sm-only pl-5"> |
67 | <v-btn | 67 | <v-btn |
68 | @click="getMarkReportList" | 68 | @click="getMarkReportList" |
69 | round | 69 | round |
70 | dark | 70 | dark |
71 | :loading="loading" | 71 | :loading="loading" |
72 | class="open-dialog-button mt-3 ml-5" | 72 | class="open-dialog-button mt-3 ml-5" |
73 | >Get Report</v-btn> | 73 | >Get Report</v-btn> |
74 | </v-flex> | 74 | </v-flex> |
75 | </v-layout> | 75 | </v-layout> |
76 | </v-flex> | 76 | </v-flex> |
77 | </v-form> | 77 | </v-form> |
78 | </v-card> | 78 | </v-card> |
79 | <v-layout v-show="showReport"> | 79 | <v-layout v-show="showReport"> |
80 | <v-flex xs12> | 80 | <v-flex xs12> |
81 | <v-card class="transparent elevation-0"> | 81 | <v-card class="transparent elevation-0"> |
82 | <v-layout> | 82 | <v-layout> |
83 | <v-flex xs12> | 83 | <v-flex xs12> |
84 | <v-btn class="open-dialog-button right" round dark @click="printProgressReport()"> | 84 | <v-btn class="open-dialog-button right" round dark @click="printProgressReport()"> |
85 | 85 | ||
86 | <v-icon right dark>print</v-icon> | 86 | <v-icon right dark>print</v-icon> |
87 | </v-btn> | 87 | </v-btn> |
88 | </v-flex> | 88 | </v-flex> |
89 | </v-layout> | 89 | </v-layout> |
90 | <v-container grid-list-md v-show="showReport" class="report"> | 90 | <v-container grid-list-md v-show="showReport" class="report"> |
91 | <v-flex xs12 sm12 id="printMe"> | 91 | <v-flex xs12 sm12 id="printMe"> |
92 | <v-layout wrap> | 92 | <v-layout wrap> |
93 | <!-- ****** TABLE DATA MARK ****** --> | 93 | <!-- ****** TABLE DATA MARK ****** --> |
94 | <v-flex xs12 sm12 md12> | 94 | <v-flex xs12 sm12 md12> |
95 | <v-card | 95 | <v-card |
96 | v-for="(value, id, index) in filterData" | 96 | v-for="(value, id, index) in filterData" |
97 | :key="index" | 97 | :key="index" |
98 | flat | 98 | flat |
99 | style="border: 1px solid lightgrey;margin-bottom:14px;padding:20px" | 99 | style="border: 1px solid lightgrey;margin-bottom:14px;padding:20px" |
100 | > | 100 | > |
101 | <v-layout> | 101 | <v-layout> |
102 | <v-flex xs12 sm12 md12 class="text-xs-center"> | 102 | <v-flex xs12 sm12 md12 class="text-xs-center"> |
103 | <div class="line"> | 103 | <div class="line"> |
104 | <div class="school-logo"> | 104 | <div class="school-logo"> |
105 | <img :src="userData.schoolLogoUrl" width="140" alt="logo" /> | 105 | <img :src="userData.schoolLogoUrl" width="140" alt="logo" /> |
106 | </div> | 106 | </div> |
107 | <div class="school-name"> | 107 | <div class="school-name"> |
108 | <h2>{{ userData.name }}</h2> | 108 | <h2>{{ userData.name }}</h2> |
109 | </div> | 109 | </div> |
110 | </div> | 110 | </div> |
111 | <div class="school-info"> | 111 | <div class="school-info"> |
112 | <v-flex class="school-address"> | 112 | <v-flex class="school-address"> |
113 | <p class="title">{{ userData.name }}</p> | 113 | <p class="title">{{ userData.name }}</p> |
114 | <p>{{ userData.address }}</p> | 114 | <p>{{ userData.address }}</p> |
115 | </v-flex> | 115 | </v-flex> |
116 | <v-flex xs12 sm12 md12 class="text-xs-center student-data"> | 116 | <v-flex xs12 sm12 md12 class="text-xs-center student-data"> |
117 | <v-avatar size="100"> | 117 | <v-avatar size="100"> |
118 | <img :src="value[0].studentId.profilePicUrl" v-if="value[0].studentId.profilePicUrl" width="100px" /> | 118 | <img :src="value[0].studentId.profilePicUrl" v-if="value[0].studentId.profilePicUrl" width="100px" /> |
119 | <img src="/static/icon/user.png" v-else-if="!value[0].studentId.profilePicUrl" width="100px" /> | 119 | <img src="/static/icon/user.png" v-else-if="!value[0].studentId.profilePicUrl" width="100px" /> |
120 | </v-avatar> | 120 | </v-avatar> |
121 | <div class="student-info"> | 121 | <div class="student-info"> |
122 | <p | 122 | <p |
123 | style="font-size:20px;margin:0px;margin-bottom:4px;" | 123 | style="font-size:20px;margin:0px;margin-bottom:4px;" |
124 | >{{ value[0].studentId.name }}</p> | 124 | >{{ value[0].studentId.name }}</p> |
125 | <p | 125 | <p |
126 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" | 126 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" |
127 | >Class : {{ value[0].classId.classNum }}</p> | 127 | >Class : {{ value[0].classId.classNum }}</p> |
128 | <p | 128 | <p |
129 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" | 129 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" |
130 | >Section : {{ value[0].sectionId.name }}</p> | 130 | >Section : {{ value[0].sectionId.name }}</p> |
131 | <p | 131 | <p |
132 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" | 132 | style="font-size: 15px;color: #707478;margin:0px;margin-bottom:4px;" |
133 | >Roll NO : {{ value[0].studentId.rollNo }}</p> | 133 | >Roll NO : {{ value[0].studentId.rollNo }}</p> |
134 | </div> | 134 | </div> |
135 | </v-flex> | 135 | </v-flex> |
136 | </div> | 136 | </div> |
137 | </v-flex> | 137 | </v-flex> |
138 | </v-layout> | 138 | </v-layout> |
139 | <!-- <v-card-title class="subheading">{{value[0].examId.examName}}</v-card-title> --> | 139 | <!-- <v-card-title class="subheading">{{value[0].examId.examName}}</v-card-title> --> |
140 | <table | 140 | <table |
141 | class="mb-5 tableRsponsive feeTypeTable" | 141 | class="mb-5 tableRsponsive feeTypeTable" |
142 | style="border: 1px solid lightgrey; | 142 | style="border: 1px solid lightgrey; |
143 | border-collapse: collapse;!important | 143 | border-collapse: collapse;!important |
144 | table-layout: auto !important; | 144 | table-layout: auto !important; |
145 | width: 100% !important; | 145 | width: 100% !important; |
146 | overflow: hidden;" | 146 | overflow: hidden;" |
147 | > | 147 | > |
148 | <thead style="border: 1px solid lightgrey !important;"> | 148 | <thead style="border: 1px solid lightgrey !important;"> |
149 | <tr style="border: 1px solid lightgrey !important;padding:4px;"> | 149 | <tr style="border: 1px solid lightgrey !important;padding:4px;"> |
150 | <td | 150 | <td |
151 | rowspan="2" | 151 | rowspan="2" |
152 | style="border: 1px solid lightgrey !important;padding: 10px;" | 152 | style="border: 1px solid lightgrey !important;padding: 10px;" |
153 | >Subject</td> | 153 | >Subject</td> |
154 | <td | 154 | <td |
155 | v-for="(exam,i) in value[index].studentsMarks" | 155 | v-for="(exam,i) in value[index].studentsMarks" |
156 | colspan="2" | 156 | colspan="2" |
157 | style="border: 1px solid lightgrey !important;padding: 10px;" | 157 | style="border: 1px solid lightgrey !important;padding: 10px;" |
158 | >{{ exam.markDistributionId.distributionType }}</td> | 158 | >{{ exam.markDistributionId.distributionType }}</td> |
159 | <!-- <template v-for="studentData in value"> | 159 | <!-- <template v-for="studentData in value"> |
160 | <td | 160 | <td |
161 | colspan="2" | 161 | colspan="2" |
162 | v-for="studentMark in studentData.studentsMarks" | 162 | v-for="studentMark in studentData.studentsMarks" |
163 | >{{ studentMark.markDistributionId.distributionType }}</td> | 163 | >{{ studentMark.markDistributionId.distributionType }}</td> |
164 | </template> --> | 164 | </template> --> |
165 | <!-- <td>{{value[0].studentsMarks[1].markDistributionId.distributionType}}</td> --> | 165 | <!-- <td>{{value[0].studentsMarks[1].markDistributionId.distributionType}}</td> --> |
166 | 166 | ||
167 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Total</td> | 167 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Total Marks</td> |
168 | </tr> | 168 | </tr> |
169 | <tr | 169 | <tr |
170 | v-for="(subject, ind) in value" | 170 | v-for="(subject, ind) in value" |
171 | v-if="ind == 0" | 171 | v-if="ind == 0" |
172 | style="border: 1px solid lightgrey !important;" | 172 | style="border: 1px solid lightgrey !important;" |
173 | > | 173 | > |
174 | <template v-for="(exam, i) in subject.studentsMarks"> | 174 | <template v-for="(exam, i) in subject.studentsMarks"> |
175 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Mark</td> | 175 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Mark</td> |
176 | <td | 176 | <td |
177 | style="border: 1px solid lightgrey !important;padding: 10px;" | 177 | style="border: 1px solid lightgrey !important;padding: 10px;" |
178 | >Highest Mark</td> | 178 | >Highest Mark</td> |
179 | </template> | 179 | </template> |
180 | <td style="border: 1px solid lightgrey !important;padding: 10px;">Mark</td> | 180 | <!-- <td style="border: 1px solid lightgrey !important;padding: 10px;">Mark</td> --> |
181 | </tr> | 181 | </tr> |
182 | </thead> | 182 | </thead> |
183 | <tbody style="border: 1px solid lightgrey !important;"> | 183 | <tbody style="border: 1px solid lightgrey !important;"> |
184 | <tr | 184 | <tr |
185 | v-for="subject in value" | 185 | v-for="subject in value" |
186 | style="border: 1px solid lightgrey !important;" | 186 | style="border: 1px solid lightgrey !important;" |
187 | > | 187 | > |
188 | <td style="border: 1px solid lightgrey !important;padding: 10px;"></td> | 188 | <td style="border: 1px solid lightgrey !important;padding: 10px;"></td> |
189 | <!-- <td | 189 | <!-- <td |
190 | style="border: 1px solid lightgrey !important;padding: 10px;" | 190 | style="border: 1px solid lightgrey !important;padding: 10px;" |
191 | >{{subject.subjectName}}</td> --> | 191 | >{{subject.subjectName}}</td> --> |
192 | <template v-for="(exam, i) in subject.studentsMarks"> | 192 | <template v-for="(exam, i) in subject.studentsMarks"> |
193 | <td | 193 | <td |
194 | style="border: 1px solid lightgrey !important;padding: 10px;" | 194 | style="border: 1px solid lightgrey !important;padding: 10px;" |
195 | >{{exam.marksScored}}</td> | 195 | >{{exam.marksScored}}</td> |
196 | <td | 196 | <td |
197 | style="border: 1px solid lightgrey !important;padding: 10px;" | 197 | style="border: 1px solid lightgrey !important;padding: 10px;" |
198 | >{{exam.markDistributionId.markValue}}</td> | 198 | >{{exam.markDistributionId.markValue}}</td> |
199 | </template> | 199 | </template> |
200 | <td | 200 | <td |
201 | style="border: 1px solid lightgrey !important;padding: 10px;" | 201 | style="border: 1px solid lightgrey !important;padding: 10px;" |
202 | >{{subject.totalMarks}}</td> | 202 | >{{subject.totalMarks}}</td> |
203 | </tr> | 203 | </tr> |
204 | </tbody> | 204 | </tbody> |
205 | <!-- <tfoot> | 205 | <!-- <tfoot> |
206 | <tr> | 206 | <tr> |
207 | <td colspan="4"> | 207 | <td colspan="4"> |
208 | <span class="right subheding">Total Amount (RS) :</span> | 208 | <span class="right subheding">Total Amount (RS) :</span> |
209 | </td> | 209 | </td> |
210 | <td>{{ feeType.subTotal }}</td> | 210 | <td>{{ feeType.subTotal }}</td> |
211 | </tr> | 211 | </tr> |
212 | <tr> | 212 | <tr> |
213 | <td colspan="4"> | 213 | <td colspan="4"> |
214 | <span class="right subheding">Paid (RS) :</span> | 214 | <span class="right subheding">Paid (RS) :</span> |
215 | </td> | 215 | </td> |
216 | <td>{{ feeType.totalPaidAmount ? feeType.totalPaidAmount : 0 }}</td> | 216 | <td>{{ feeType.totalPaidAmount ? feeType.totalPaidAmount : 0 }}</td> |
217 | </tr> | 217 | </tr> |
218 | <tr> | 218 | <tr> |
219 | <td colspan="4"> | 219 | <td colspan="4"> |
220 | <span class="right subheding">Balance (RS) :</span> | 220 | <span class="right subheding">Balance (RS) :</span> |
221 | </td> | 221 | </td> |
222 | <td>{{ feeType.totalPaidAmount ? feeType.subTotal - feeType.totalPaidAmount : feeType.subTotal }}</td> | 222 | <td>{{ feeType.totalPaidAmount ? feeType.subTotal - feeType.totalPaidAmount : feeType.subTotal }}</td> |
223 | </tr> | 223 | </tr> |
224 | </tfoot>--> | 224 | </tfoot>--> |
225 | </table> | 225 | </table> |
226 | </v-card> | 226 | </v-card> |
227 | </v-flex> | 227 | </v-flex> |
228 | </v-layout> | 228 | </v-layout> |
229 | </v-flex> | 229 | </v-flex> |
230 | </v-container> | 230 | </v-container> |
231 | </v-card> | 231 | </v-card> |
232 | </v-flex> | 232 | </v-flex> |
233 | </v-layout> | 233 | </v-layout> |
234 | <div class="loader" v-if="showLoader"> | 234 | <div class="loader" v-if="showLoader"> |
235 | <v-progress-circular indeterminate color="white"></v-progress-circular> | 235 | <v-progress-circular indeterminate color="white"></v-progress-circular> |
236 | </div> | 236 | </div> |
237 | </v-container> | 237 | </v-container> |
238 | </template> | 238 | </template> |
239 | 239 | ||
240 | <script> | 240 | <script> |
241 | import http from "@/Services/http.js"; | 241 | import http from "@/Services/http.js"; |
242 | import moment from "moment"; | 242 | import moment from "moment"; |
243 | import _ from "underscore"; | 243 | import _ from "underscore"; |
244 | 244 | ||
245 | export default { | 245 | export default { |
246 | data: () => ({ | 246 | data: () => ({ |
247 | showLoader: false, | 247 | showLoader: false, |
248 | markData: [], | 248 | markData: [], |
249 | token: "", | 249 | token: "", |
250 | markDistributions: [], | 250 | markDistributions: [], |
251 | markParticularDistributionData: [], | 251 | markParticularDistributionData: [], |
252 | loading: false, | 252 | loading: false, |
253 | valid: true, | 253 | valid: true, |
254 | loading: false, | 254 | loading: false, |
255 | showReport: false, | 255 | showReport: false, |
256 | addSection: [], | 256 | addSection: [], |
257 | filterData: [], | 257 | filterData: [], |
258 | getStudentsList: [], | 258 | getStudentsList: [], |
259 | classRules: [v => !!v || "Class is required"], | 259 | classRules: [v => !!v || "Class is required"], |
260 | sectionRules: [v => !!v || "Class is required"], | 260 | sectionRules: [v => !!v || "Class is required"], |
261 | studentRules: [v => !!v || "Student is required"], | 261 | studentRules: [v => !!v || "Student is required"], |
262 | getReport: {}, | 262 | getReport: {}, |
263 | classList: [], | 263 | classList: [], |
264 | output: null, | 264 | output: null, |
265 | userData: {} | 265 | userData: {} |
266 | }), | 266 | }), |
267 | mounted() { | 267 | mounted() { |
268 | this.token = this.$store.state.token; | 268 | this.token = this.$store.state.token; |
269 | this.getClass(); | 269 | this.getClass(); |
270 | this.getUserData(); | 270 | this.getUserData(); |
271 | }, | 271 | }, |
272 | methods: { | 272 | methods: { |
273 | clear() { | 273 | clear() { |
274 | this.$refs.form.reset(); | 274 | this.$refs.form.reset(); |
275 | }, | 275 | }, |
276 | getClass() { | 276 | getClass() { |
277 | this.showLoader = true; | 277 | this.showLoader = true; |
278 | http() | 278 | http() |
279 | .get("/getClassesList", { | 279 | .get("/getClassesList", { |
280 | headers: { Authorization: "Bearer " + this.token } | 280 | headers: { Authorization: "Bearer " + this.token } |
281 | }) | 281 | }) |
282 | .then(response => { | 282 | .then(response => { |
283 | this.classList = response.data.data; | 283 | this.classList = response.data.data; |
284 | this.showLoader = false; | 284 | this.showLoader = false; |
285 | }) | 285 | }) |
286 | .catch(error => { | 286 | .catch(error => { |
287 | this.showLoader = false; | 287 | this.showLoader = false; |
288 | // console.log("err====>", err); | 288 | // console.log("err====>", err); |
289 | }); | 289 | }); |
290 | }, | 290 | }, |
291 | getSections(_id) { | 291 | getSections(_id) { |
292 | this.showLoader = true; | 292 | this.showLoader = true; |
293 | http() | 293 | http() |
294 | .get( | 294 | .get( |
295 | "/getSectionsList", | 295 | "/getSectionsList", |
296 | { params: { classId: _id } }, | 296 | { params: { classId: _id } }, |
297 | { | 297 | { |
298 | headers: { Authorization: "Bearer " + this.token } | 298 | headers: { Authorization: "Bearer " + this.token } |
299 | } | 299 | } |
300 | ) | 300 | ) |
301 | .then(response => { | 301 | .then(response => { |
302 | this.addSection = response.data.data; | 302 | this.addSection = response.data.data; |
303 | this.showLoader = false; | 303 | this.showLoader = false; |
304 | }) | 304 | }) |
305 | .catch(err => { | 305 | .catch(err => { |
306 | this.showLoader = false; | 306 | this.showLoader = false; |
307 | // console.log("err====>", err); | 307 | // console.log("err====>", err); |
308 | }); | 308 | }); |
309 | }, | 309 | }, |
310 | getStudents() { | 310 | getStudents() { |
311 | this.showLoader = true; | 311 | this.showLoader = true; |
312 | http() | 312 | http() |
313 | .get("/getStudentWithClass", { | 313 | .get("/getStudentWithClass", { |
314 | params: { | 314 | params: { |
315 | classId: this.getReport.classId, | 315 | classId: this.getReport.classId, |
316 | sectionId: this.getReport.sectionId | 316 | sectionId: this.getReport.sectionId |
317 | } | 317 | } |
318 | }) | 318 | }) |
319 | .then(response => { | 319 | .then(response => { |
320 | this.getStudentsList = response.data.data; | 320 | this.getStudentsList = response.data.data; |
321 | this.showLoader = false; | 321 | this.showLoader = false; |
322 | // console.log("getSectionsList=====>", response.data.data); | 322 | // console.log("getSectionsList=====>", response.data.data); |
323 | }) | 323 | }) |
324 | .catch(error => { | 324 | .catch(error => { |
325 | console.log("err====>", error); | 325 | console.log("err====>", error); |
326 | this.showLoader = false; | 326 | this.showLoader = false; |
327 | }); | 327 | }); |
328 | }, | 328 | }, |
329 | getMarkReportList() { | 329 | getMarkReportList() { |
330 | // this.showLoader = true; | 330 | // this.showLoader = true; |
331 | this.showReport = true; | 331 | this.showReport = true; |
332 | http() | 332 | http() |
333 | .get("/getParticularMark", { | 333 | .get("/getParticularMark", { |
334 | params: { studentId: this.getReport.studentId }, | 334 | params: { studentId: this.getReport.studentId }, |
335 | headers: { Authorization: "Bearer " + this.token } | 335 | headers: { Authorization: "Bearer " + this.token } |
336 | }) | 336 | }) |
337 | .then(response => { | 337 | .then(response => { |
338 | this.showLoader = false; | 338 | this.showLoader = false; |
339 | let newData = response.data.data; | 339 | let newData = response.data.data; |
340 | // console.log("response", newData); | 340 | // console.log("response", newData); |
341 | for (var i = 0; i < newData.length; i++) { | 341 | for (var i = 0; i < newData.length; i++) { |
342 | newData[i].examination = newData[i].examId._id; | 342 | newData[i].examination = newData[i].examId._id; |
343 | // console.log("newData[i].examination", newData[i].examination); | 343 | // console.log("newData[i].examination", newData[i].examination); |
344 | } | 344 | } |
345 | this.filterData = _.groupBy(newData, ["examination"]); | 345 | this.filterData = _.groupBy(newData, ["examination"]); |
346 | for (let data in this.filterData) { | 346 | for (let data in this.filterData) { |
347 | // console.log("data+++++++++++++++++++++++++++++++++++", data); | 347 | // console.log("data+++++++++++++++++++++++++++++++++++", data); |
348 | 348 | ||
349 | for (let item in this.filterData[data]) { | 349 | for (let item in this.filterData[data]) { |
350 | // console.log( | 350 | // console.log( |
351 | // "filterData[data]==========================>", | 351 | // "filterData[data]==========================>", |
352 | // this.filterData[data] | 352 | // this.filterData[data] |
353 | // ); | 353 | // ); |
354 | // console.log("filterData[item]==========================>", item); | 354 | // console.log("filterData[item]==========================>", item); |
355 | var totalMarks = 0; | 355 | var totalMarks = 0; |
356 | for ( | 356 | for ( |
357 | let i = 0; | 357 | let i = 0; |
358 | i < this.filterData[data][item].studentsMarks.length; | 358 | i < this.filterData[data][item].studentsMarks.length; |
359 | i++ | 359 | i++ |
360 | ) { | 360 | ) { |
361 | totalMarks += this.filterData[data][item].studentsMarks[i] | 361 | totalMarks += this.filterData[data][item].studentsMarks[i] |
362 | .marksScored; | 362 | .marksScored; |
363 | } | 363 | } |
364 | this.filterData[data][item].totalMarks = totalMarks; | 364 | this.filterData[data][item].totalMarks = totalMarks; |
365 | // var total = 0; | 365 | // var total = 0; |
366 | // total += this.filterData[data][item].totalMarks ; | 366 | // total += this.filterData[data][item].totalMarks ; |
367 | // console.log("total", total); | 367 | // console.log("total", total); |
368 | } | 368 | } |
369 | } | 369 | } |
370 | }) | 370 | }) |
371 | .catch(error => { | 371 | .catch(error => { |
372 | // console.log("err====>", err); | 372 | // console.log("err====>", err); |
373 | this.showLoader = false; | 373 | this.showLoader = false; |
374 | this.snackbar = true; | 374 | this.snackbar = true; |
375 | this.text = error.response.data.message; | 375 | this.text = error.response.data.message; |
376 | if (error.response.status === 401) { | 376 | if (error.response.status === 401) { |
377 | this.$router.replace({ path: "/" }); | 377 | this.$router.replace({ path: "/" }); |
378 | this.$store.dispatch("setToken", null); | 378 | this.$store.dispatch("setToken", null); |
379 | this.$store.dispatch("Id", null); | 379 | this.$store.dispatch("Id", null); |
380 | } | 380 | } |
381 | }); | 381 | }); |
382 | }, | 382 | }, |
383 | printProgressReport() { | 383 | printProgressReport() { |
384 | // Pass the element id here | 384 | // Pass the element id here |
385 | this.$htmlToPaper("printMe"); | 385 | this.$htmlToPaper("printMe"); |
386 | }, | 386 | }, |
387 | getUserData() { | 387 | getUserData() { |
388 | http() | 388 | http() |
389 | .get("/getParticularUserDetail") | 389 | .get("/getParticularUserDetail") |
390 | .then(response => { | 390 | .then(response => { |
391 | this.userData = response.data.data; | 391 | this.userData = response.data.data; |
392 | }) | 392 | }) |
393 | .catch(error => { | 393 | .catch(error => { |
394 | // if (error.response.status === 401) { | 394 | // if (error.response.status === 401) { |
395 | // this.$router.replace({ path: "/" }); | 395 | // this.$router.replace({ path: "/" }); |
396 | // this.$store.dispatch("setToken", null); | 396 | // this.$store.dispatch("setToken", null); |
397 | // this.$store.dispatch("Id", null); | 397 | // this.$store.dispatch("Id", null); |
398 | // } | 398 | // } |
399 | }); | 399 | }); |
400 | } | 400 | } |
401 | } | 401 | } |
402 | }; | 402 | }; |
403 | </script> | 403 | </script> |
404 | 404 | ||
405 | <style scoped> | 405 | <style scoped> |
406 | table { | 406 | table { |
407 | border-collapse: collapse; | 407 | border-collapse: collapse; |
408 | border: 1px solid #e2e7eb; | 408 | border: 1px solid #e2e7eb; |
409 | } | 409 | } |
410 | 410 | ||
411 | th, | 411 | th, |
412 | td { | 412 | td { |
413 | border: 1px solid #e2e7eb; | 413 | border: 1px solid #e2e7eb; |
414 | padding: 10px; | 414 | padding: 10px; |
415 | text-align: center; | 415 | text-align: center; |
416 | } | 416 | } |
417 | table.feeTypeTable { | 417 | table.feeTypeTable { |
418 | table-layout: auto !important; | 418 | table-layout: auto !important; |
419 | width: 100% !important; | 419 | width: 100% !important; |
420 | } | 420 | } |
421 | .bg-sky { | 421 | .bg-sky { |
422 | background-color: #98b2cc !important; | 422 | background-color: #98b2cc !important; |
423 | } | 423 | } |
424 | .bg-sky-light { | 424 | .bg-sky-light { |
425 | background-color: #89a0b8; | 425 | background-color: #89a0b8; |
426 | } | 426 | } |
427 | .bg-purple { | 427 | .bg-purple { |
428 | background-color: #9583ac; | 428 | background-color: #9583ac; |
429 | } | 429 | } |
430 | .bg-skyDark { | 430 | .bg-skyDark { |
431 | background-color: #956785; | 431 | background-color: #956785; |
432 | } | 432 | } |
433 | 433 | ||
434 | /* .report { | 434 | /* .report { |
435 | overflow: hidden; | 435 | overflow: hidden; |
436 | max-width: 794px; | 436 | max-width: 794px; |
437 | margin: 0px auto; | 437 | margin: 0px auto; |
438 | margin-bottom: 10px; | 438 | margin-bottom: 10px; |
439 | padding: 30px; | 439 | padding: 30px; |
440 | } */ | 440 | } */ |
441 | .line { | 441 | .line { |
442 | border-bottom: 1px solid #ddd; | 442 | border-bottom: 1px solid #ddd; |
443 | overflow: hidden; | 443 | overflow: hidden; |
444 | padding-bottom: 10px; | 444 | padding-bottom: 10px; |
445 | vertical-align: middle; | 445 | vertical-align: middle; |
446 | margin-bottom: 4px; | 446 | margin-bottom: 4px; |
447 | } | 447 | } |
448 | .school-logo { | 448 | .school-logo { |
449 | float: left; | 449 | float: left; |
450 | } | 450 | } |
451 | .school-name { | 451 | .school-name { |
452 | box-sizing: border-box; | 452 | box-sizing: border-box; |
453 | } | 453 | } |
454 | .school-info { | 454 | .school-info { |
455 | width: 100%; | 455 | width: 100%; |
456 | overflow: hidden; | 456 | overflow: hidden; |
457 | } | 457 | } |
458 | .school-address { | 458 | .school-address { |
459 | float: left; | 459 | float: left; |
460 | width: 40%; | 460 | width: 40%; |
461 | } | 461 | } |
462 | .student-data { | 462 | .student-data { |
463 | float: right; | 463 | float: right; |
464 | width: 40%; | 464 | width: 40%; |
465 | } | 465 | } |
466 | .student-info { | 466 | .student-info { |
467 | float: left; | 467 | float: left; |
468 | } | 468 | } |
469 | @media screen and (max-width: 380px) { | 469 | @media screen and (max-width: 380px) { |
470 | .tableRsponsive { | 470 | .tableRsponsive { |
471 | /* display: block; */ | 471 | /* display: block; */ |
472 | position: relative; | 472 | position: relative; |
473 | overflow: scroll; | 473 | overflow: scroll; |
474 | } | 474 | } |
475 | } | 475 | } |
476 | </style> s | 476 | </style> s |