Commit 229463bd5fc4490deef9e0cef59f62a39b41d33e

Authored by Neeraj Sharma
1 parent 531728c2ef

implement design and functionality of enrollStudents,parents,annoucement,course

1 const adminMenu = [ 1 const adminMenu = [
2 // { header: 'Apps' }, 2 // { header: 'Apps' },
3 { 3 {
4 title: 'Dashboard', 4 title: 'Dashboard',
5 // group: 'apps', 5 // group: 'apps',
6 name: 'Dashboard', 6 name: 'Dashboard',
7 icon: '/static/icon/dashboard.png', 7 icon: '/static/icon/dashboard.png',
8 }, 8 },
9 { 9 {
10 title: 'Class', 10 title: 'Class',
11 // group: 'apps', 11 // group: 'apps',
12 name: 'Class', 12 name: 'Class',
13 icon: '/static/icon/class.png', 13 icon: '/static/icon/class.png',
14 }, 14 },
15 { 15 {
16 title: 'Section', 16 title: 'Section',
17 // group: 'apps', 17 // group: 'apps',
18 name: 'Section', 18 name: 'Section',
19 icon: '/static/icon/section.png', 19 icon: '/static/icon/section.png',
20 }, 20 },
21 // { 21 // {
22 // title: 'Subjects', 22 // title: 'Subjects',
23 // name: 'Subject', 23 // name: 'Subject',
24 // icon: '/static/icon/subject.png', 24 // icon: '/static/icon/subject.png',
25 // }, 25 // },
26 { 26 {
27 title: 'Parents', 27 title: 'Parents',
28 // group: 'apps', 28 // group: 'apps',
29 name: 'Parents', 29 name: 'Parents',
30 icon: '/static/icon/parents.png', 30 icon: '/static/icon/parents.png',
31 }, 31 },
32 { 32 {
33 title: 'Teachers', 33 title: 'Teachers',
34 // group: '', 34 // group: '',
35 name: 'Teachers', 35 name: 'Teachers',
36 icon: '/static/icon/teacher.png', 36 icon: '/static/icon/teacher.png',
37 }, 37 },
38 { 38 {
39 title: 'Students', 39 title: 'Students',
40 // group: 'apps', 40 // group: 'apps',
41 name: 'Students', 41 name: 'Students',
42 icon: '/static/icon/student.png', 42 icon: '/static/icon/student.png',
43 }, 43 },
44 { 44 {
45 title: 'User', 45 title: 'User',
46 name: 'User', 46 name: 'User',
47 icon: '/static/icon/users.png', 47 icon: '/static/icon/users.png',
48 }, 48 },
49 { 49 {
50 title: 'Attendance', 50 title: 'Attendance',
51 group: 'Attendance', 51 group: 'Attendance',
52 component: 'Attendance', 52 component: 'Attendance',
53 icon: '/static/icon/attendence.png', 53 icon: '/static/icon/attendence.png',
54 items: [ 54 items: [
55 { name: 'StudentAttendence', title: 'Student Attendance', component: 'Student Attendence', action: '', }, 55 { name: 'StudentAttendence', title: 'Student Attendance', component: 'Student Attendence', action: '', },
56 { name: 'TeacherAttendence', title: 'Teacher Attendance', component: 'Teacher Attendence', action: '', }, 56 { name: 'TeacherAttendence', title: 'Teacher Attendance', component: 'Teacher Attendence', action: '', },
57 // { name: 'userAttendence', title: 'User Attendance', component: 'User Attendence', action: '', }, 57 // { name: 'userAttendence', title: 'User Attendance', component: 'User Attendence', action: '', },
58 ] 58 ]
59 }, 59 },
60 { 60 {
61 title: 'Exam', 61 title: 'Exam',
62 group: 'Exam', 62 group: 'Exam',
63 component: 'Exam', 63 component: 'Exam',
64 icon: '/static/icon/exam.png', 64 icon: '/static/icon/exam.png',
65 items: [ 65 items: [
66 { name: 'Exam', title: 'Exam', component: 'Exam', action: '', }, 66 { name: 'Exam', title: 'Exam', component: 'Exam', action: '', },
67 { name: 'ExamSchedule', title: 'Exam Schedule', component: 'Exam Schedule', action: '', }, 67 { name: 'ExamSchedule', title: 'Exam Schedule', component: 'Exam Schedule', action: '', },
68 { name: 'Grade', title: 'Grade', component: 'Grade', action: '', }, 68 { name: 'Grade', title: 'Grade', component: 'Grade', action: '', },
69 // { name: 'userAttendence', title: 'User Attendance', component: 'userAttendence', action: '', }, 69 // { name: 'userAttendence', title: 'User Attendance', component: 'userAttendence', action: '', },
70 ] 70 ]
71 }, 71 },
72 { 72 {
73 title: 'Marks', 73 title: 'Marks',
74 group: 'Mark', 74 group: 'Mark',
75 component: 'Mark', 75 component: 'Mark',
76 icon: '/static/icon/marks.png', 76 icon: '/static/icon/marks.png',
77 items: [ 77 items: [
78 { name: 'Mark', title: 'Mark', component: 'Mark', action: '', }, 78 { name: 'Mark', title: 'Mark', component: 'Mark', action: '', },
79 { name: 'MarkDistribution', title: 'Mark Distribution', component: 'Mark Distribution', action: '', }, 79 { name: 'MarkDistribution', title: 'Mark Distribution', component: 'Mark Distribution', action: '', },
80 // { name: 'Promotion', title: 'promotion', component: 'Promotion', action: '', }, 80 // { name: 'Promotion', title: 'promotion', component: 'Promotion', action: '', },
81 // { name: 'userAttendence', title: 'User Attendance', component: 'userAttendence', action: '', }, 81 // { name: 'userAttendence', title: 'User Attendance', component: 'userAttendence', action: '', },
82 ] 82 ]
83 }, 83 },
84 { 84 {
85 title: 'Academic', 85 title: 'Academic',
86 group: 'Academic', 86 group: 'Academic',
87 component: 'Academic', 87 component: 'Academic',
88 icon: '/static/icon/school.png', 88 icon: '/static/icon/school.png',
89 items: [ 89 items: [
90 { name: 'Subject', title: 'Subject', component: 'Subject', action: '', }, 90 { name: 'Subject', title: 'Subject', component: 'Subject', action: '', },
91 { name: 'Syllabus', title: 'Syllabus', component: 'Syllabus', action: '', }, 91 { name: 'Syllabus', title: 'Syllabus', component: 'Syllabus', action: '', },
92 { name: 'Assignment', title: 'Assignment', component: 'Assignment', action: '', }, 92 { name: 'Assignment', title: 'Assignment', component: 'Assignment', action: '', },
93 { name: 'Routine', title: 'Routine', component: 'Routine', action: '', }, 93 { name: 'Routine', title: 'Routine', component: 'Routine', action: '', },
94 ] 94 ]
95 }, 95 },
96 { 96 {
97 title: 'Administrator', 97 title: 'Administrator',
98 group: 'Administrator', 98 group: 'Administrator',
99 component: 'Administrator', 99 component: 'Administrator',
100 icon: '/static/icon/adminstrator.png', 100 icon: '/static/icon/adminstrator.png',
101 items: [ 101 items: [
102 { name: 'AcademicYear', title: 'Academic Year', component: 'Academic Year', action: '', }, 102 { name: 'AcademicYear', title: 'Academic Year', component: 'Academic Year', action: '', },
103 // { name: 'systemAdmin', title: 'System Admin', component: 'systemAdmin', action: '', }, 103 // { name: 'systemAdmin', title: 'System Admin', component: 'systemAdmin', action: '', },
104 { name: 'resetPassword', title: 'Change Password', component: 'Change Password', action: '', }, 104 { name: 'resetPassword', title: 'Change Password', component: 'Change Password', action: '', },
105 { name: 'Role', title: 'Role', component: 'Role', action: '', }, 105 { name: 'Role', title: 'Role', component: 'Role', action: '', },
106 { name: 'BulkImport', title: 'Bulk Import', component: 'Bulk Import', action: '', }, 106 { name: 'BulkImport', title: 'Bulk Import', component: 'Bulk Import', action: '', },
107 107
108 ] 108 ]
109 }, 109 },
110 { 110 {
111 title: 'Payroll', 111 title: 'Payroll',
112 group: 'Payroll', 112 group: 'Payroll',
113 component: 'Payroll', 113 component: 'Payroll',
114 icon: '/static/icon/dollar.png', 114 icon: '/static/icon/dollar.png',
115 items: [ 115 items: [
116 { name: 'salaryTemplate', title: 'Salary Template', component: 'Salary Template', action: '', }, 116 { name: 'salaryTemplate', title: 'Salary Template', component: 'Salary Template', action: '', },
117 { name: 'hourlyTemplate', title: 'Hourly Template', component: 'Hourly Template', action: '', }, 117 { name: 'hourlyTemplate', title: 'Hourly Template', component: 'Hourly Template', action: '', },
118 { name: 'manageSalary', title: 'Manage Salary', component: 'Manage Salary', action: '', }, 118 { name: 'manageSalary', title: 'Manage Salary', component: 'Manage Salary', action: '', },
119 // { name: 'makePayment', title: 'Make Payment', component: 'Make Payment', action: '', }, 119 // { name: 'makePayment', title: 'Make Payment', component: 'Make Payment', action: '', },
120 ] 120 ]
121 }, 121 },
122 { 122 {
123 title: 'Notice Board', 123 title: 'Notice Board',
124 name: 'Notice Board', 124 name: 'Notice Board',
125 icon: '/static/icon/notice board.png', 125 icon: '/static/icon/notice board.png',
126 }, 126 },
127 { 127 {
128 title: 'News', 128 title: 'News',
129 name: 'News', 129 name: 'News',
130 icon: '/static/icon/news.png', 130 icon: '/static/icon/news.png',
131 }, 131 },
132 // { 132 // {
133 // title: 'Reminder', 133 // title: 'Reminder',
134 // name: 'reminder', 134 // name: 'reminder',
135 // icon: 'alarm_add', 135 // icon: 'alarm_add',
136 // }, 136 // },
137 { 137 {
138 title: 'Time Table', 138 title: 'Time Table',
139 name: 'Time Table', 139 name: 'Time Table',
140 icon: '/static/icon/time table.png', 140 icon: '/static/icon/time table.png',
141 }, 141 },
142 { 142 {
143 title: 'Library', 143 title: 'Library',
144 group: 'Library', 144 group: 'Library',
145 component: 'Library', 145 component: 'Library',
146 icon: '/static/icon/library.png', 146 icon: '/static/icon/library.png',
147 items: [ 147 items: [
148 { name: 'LibraryMember', title: ' Library Member', component: 'Library Member', action: '', }, 148 { name: 'LibraryMember', title: ' Library Member', component: 'Library Member', action: '', },
149 { name: 'Books', title: 'Books', component: 'Books', action: '', }, 149 { name: 'Books', title: 'Books', component: 'Books', action: '', },
150 { name: 'Issue', title: ' Issue', component: 'Issue', action: '', }, 150 { name: 'Issue', title: ' Issue', component: 'Issue', action: '', },
151 { name: 'E-Books', title: 'E-Books', component: 'E-Books', action: '', } 151 { name: 'E-Books', title: 'E-Books', component: 'E-Books', action: '', }
152 152
153 ] 153 ]
154 }, 154 },
155 { 155 {
156 title: 'Report', 156 title: 'Report',
157 group: 'Report', 157 group: 'Report',
158 component: 'Report', 158 component: 'Report',
159 icon: '/static/icon/reports.png', 159 icon: '/static/icon/reports.png',
160 items: [ 160 items: [
161 { name: 'studentReport', title: 'Student Report', component: 'Student Report', action: '', }, 161 { name: 'studentReport', title: 'Student Report', component: 'Student Report', action: '', },
162 { name: 'ProgressCardReport', title: 'Progress Card Report', component: 'Progress Card Report', action: '', }, 162 { name: 'ProgressCardReport', title: 'Progress Card Report', component: 'Progress Card Report', action: '', },
163 { name: 'idCard', title: 'Id Card Report', component: 'Id Card Report', action: '', }, 163 { name: 'idCard', title: 'Id Card Report', component: 'Id Card Report', action: '', },
164 { name: 'admitCard', title: 'Admit Card Report', component: 'Admit Card Report', action: '', } 164 { name: 'admitCard', title: 'Admit Card Report', component: 'Admit Card Report', action: '', }
165 ] 165 ]
166 }, 166 },
167 { 167 {
168 title: 'Notification', 168 title: 'Notification',
169 name: 'Notification', 169 name: 'Notification',
170 icon: '/static/icon/notification.png', 170 icon: '/static/icon/notification.png',
171 }, 171 },
172 { 172 {
173 title: 'Social Media', 173 title: 'Social Media',
174 name: 'Social Media', 174 name: 'Social Media',
175 icon: '/static/icon/events.png', 175 icon: '/static/icon/events.png',
176 }, 176 },
177 { 177 {
178 title: 'Gallery', 178 title: 'Gallery',
179 name: 'Gallery', 179 name: 'Gallery',
180 icon: '/static/icon/gallery.png', 180 icon: '/static/icon/gallery.png',
181 }, 181 },
182 { 182 {
183 title: 'Event', 183 title: 'Event',
184 name: 'Event', 184 name: 'Event',
185 icon: '/static/icon/events.png', 185 icon: '/static/icon/events.png',
186 }, 186 },
187 { 187 {
188 title: 'Account', 188 title: 'Account',
189 group: 'Account', 189 group: 'Account',
190 component: 'Account', 190 component: 'Account',
191 icon: '/static/icon/accounts.png', 191 icon: '/static/icon/accounts.png',
192 items: [ 192 items: [
193 { name: 'feeTypes', title: 'Fee Types', component: 'Fee Types', action: '', }, 193 { name: 'feeTypes', title: 'Fee Types', component: 'Fee Types', action: '', },
194 { name: 'Invoice', title: 'Invoice', component: 'Invoice', action: '', }, 194 { name: 'Invoice', title: 'Invoice', component: 'Invoice', action: '', },
195 { name: 'PaymentHistory', title: 'Payment History', component: 'Payment History', action: '', }, 195 { name: 'PaymentHistory', title: 'Payment History', component: 'Payment History', action: '', },
196 { name: 'Expense', title: 'Expense', component: 'Expense', action: '', }, 196 { name: 'Expense', title: 'Expense', component: 'Expense', action: '', },
197 { name: 'Income', title: 'Income', component: 'Income', action: '', }, 197 { name: 'Income', title: 'Income', component: 'Income', action: '', },
198 { name: 'GlobalPayment', title: 'Global Payment', component: 'Global Payment', action: '', } 198 { name: 'GlobalPayment', title: 'Global Payment', component: 'Global Payment', action: '', }
199 ] 199 ]
200 }, 200 },
201 { 201 {
202 title: 'Holiday', 202 title: 'Holiday',
203 name: 'Holiday', 203 name: 'Holiday',
204 icon: '/static/icon/holiday.png', 204 icon: '/static/icon/holiday.png',
205 }, 205 },
206 { 206 {
207 title: 'General Setting', 207 title: 'General Setting',
208 name: 'General Setting', 208 name: 'General Setting',
209 icon: '/static/icon/settings.png', 209 icon: '/static/icon/settings.png',
210 } 210 }
211 ]; 211 ];
212 212
213 const libraryMenu = [{ 213 const libraryMenu = [{
214 title: 'Dashboard', 214 title: 'Dashboard',
215 name: 'Dashboard', 215 name: 'Dashboard',
216 icon: '/static/icon/dashboard.png', 216 icon: '/static/icon/dashboard.png',
217 }, 217 },
218 { 218 {
219 title: 'Library', 219 title: 'Library',
220 group: 'Library', 220 group: 'Library',
221 component: 'Library', 221 component: 'Library',
222 icon: '/static/icon/library.png', 222 icon: '/static/icon/library.png',
223 items: [ 223 items: [
224 { name: 'LibraryMember', title: ' Library Member', component: 'Library Member', action: '', }, 224 { name: 'LibraryMember', title: ' Library Member', component: 'Library Member', action: '', },
225 { name: 'Books', title: 'Books', component: 'Books', action: '', }, 225 { name: 'Books', title: 'Books', component: 'Books', action: '', },
226 { name: 'Issue', title: ' Issue', component: 'Issue', action: '', }, 226 { name: 'Issue', title: ' Issue', component: 'Issue', action: '', },
227 { name: 'E-Books', title: 'E-Books', component: 'E-Books', action: '', } 227 { name: 'E-Books', title: 'E-Books', component: 'E-Books', action: '', }
228 228
229 ] 229 ]
230 }, 230 },
231 ]; 231 ];
232 232
233 const accountMenu = [{ 233 const accountMenu = [{
234 title: 'Dashboard', 234 title: 'Dashboard',
235 name: 'Dashboard', 235 name: 'Dashboard',
236 icon: '/static/icon/dashboard.png', 236 icon: '/static/icon/dashboard.png',
237 }, 237 },
238 238
239 { 239 {
240 title: 'Account', 240 title: 'Account',
241 group: 'Account', 241 group: 'Account',
242 component: 'Account', 242 component: 'Account',
243 icon: '/static/icon/accounts.png', 243 icon: '/static/icon/accounts.png',
244 items: [ 244 items: [
245 { name: 'feeTypes', title: 'Fee Types', component: 'Fee Types', action: '', }, 245 { name: 'feeTypes', title: 'Fee Types', component: 'Fee Types', action: '', },
246 { name: 'Invoice', title: 'Invoice', component: 'Invoice', action: '', }, 246 { name: 'Invoice', title: 'Invoice', component: 'Invoice', action: '', },
247 { name: 'PaymentHistory', title: 'Payment History', component: 'Payment History', action: '', }, 247 { name: 'PaymentHistory', title: 'Payment History', component: 'Payment History', action: '', },
248 { name: 'Expense', title: 'Expense', component: 'Expense', action: '', }, 248 { name: 'Expense', title: 'Expense', component: 'Expense', action: '', },
249 { name: 'Income', title: 'Income', component: 'Income', action: '', }, 249 { name: 'Income', title: 'Income', component: 'Income', action: '', },
250 { name: 'GlobalPayment', title: 'Global Payment', component: 'Global Payment', action: '', } 250 { name: 'GlobalPayment', title: 'Global Payment', component: 'Global Payment', action: '', }
251 ] 251 ]
252 }, 252 },
253 ]; 253 ];
254 254
255 const schoolMenu = [ 255 const schoolMenu = [
256 // { header: 'Apps' }, 256 // { header: 'Apps' },
257 { 257 {
258 title: 'Dashboard', 258 title: 'Dashboard',
259 // group: 'apps', 259 // group: 'apps',
260 name: 'View School Dashboard', 260 name: 'View School Dashboard',
261 icon: '/static/icon/dashboard.png', 261 icon: '/static/icon/dashboard.png',
262 }, 262 },
263 { 263 {
264 title: 'School', 264 title: 'School',
265 // group: 'apps', 265 // group: 'apps',
266 name: 'School', 266 name: 'School',
267 icon: '/static/schoolIcons/Dashboard.png', 267 icon: '/static/schoolIcons/Dashboard.png',
268 } 268 }
269 ]; 269 ];
270 270
271 const teacherMenu = [{ 271 const teacherMenu = [{
272 title: 'Dashboard', 272 title: 'Dashboard',
273 name: 'School', 273 name: 'Dashboard',
274 icon: '/static/icon/dashboard.png', 274 icon: '/static/icon/dashboard.png',
275 }, 275 },
276 { 276 {
277 title: 'Parents', 277 title: 'Parents',
278 // group: 'apps', 278 // group: 'apps',
279 name: 'Parents', 279 name: 'Parents',
280 icon: '/static/icon/parents.png', 280 icon: '/static/icon/parents.png',
281 }, 281 },
282 { 282 {
283 title: 'Teachers', 283 title: 'Teachers',
284 // group: '', 284 // group: '',
285 name: 'Teachers', 285 name: 'Teachers',
286 icon: '/static/icon/teacher.png', 286 icon: '/static/icon/teacher.png',
287 }, 287 },
288 { 288 {
289 title: 'Students', 289 title: 'Students',
290 // group: 'apps', 290 // group: 'apps',
291 name: 'Students', 291 name: 'Students',
292 icon: '/static/icon/student.png', 292 icon: '/static/icon/student.png',
293 }, 293 },
294 { 294 {
295 title: 'Academic', 295 title: 'Academic',
296 group: 'Academic', 296 group: 'Academic',
297 component: 'Academic', 297 component: 'Academic',
298 icon: '/static/icon/school.png', 298 icon: '/static/icon/school.png',
299 items: [ 299 items: [
300 { name: 'Subject', title: 'Subject', component: 'Subject', action: '', }, 300 { name: 'Subject', title: 'Subject', component: 'Subject', action: '', },
301 { name: 'Syllabus', title: 'Syllabus', component: 'Syllabus', action: '', }, 301 { name: 'Syllabus', title: 'Syllabus', component: 'Syllabus', action: '', },
302 { name: 'Assignment', title: 'Assignment', component: 'Assignment', action: '', }, 302 { name: 'Assignment', title: 'Assignment', component: 'Assignment', action: '', },
303 { name: 'Routine', title: 'Routine', component: 'Routine', action: '', }, 303 { name: 'Routine', title: 'Routine', component: 'Routine', action: '', },
304 ] 304 ]
305 }, 305 },
306 { 306 {
307 title: 'Course',
308 group: 'Course',
309 component: 'Course',
310 icon: '/static/icon/school.png',
311 items: [
312 { name: 'Course', title: 'Course', component: 'Course', action: '', },
313 { name: 'Enroll Students', title: 'Enroll Students', component: 'Enroll Students', action: '', },
314 // { name: 'Assignment', title: 'Assignment', component: 'Assignment', action: '', },
315 // { name: 'Routine', title: 'Routine', component: 'Routine', action: '', },
316 ]
317 },
318 {
319 title: 'Annoucement',
320 // group: 'apps',
321 name: 'Annoucement',
322 icon: '/static/icon/student.png',
323 },
324 {
307 title: 'Attendance', 325 title: 'Attendance',
308 group: 'Attendance', 326 group: 'Attendance',
309 component: 'Attendance', 327 component: 'Attendance',
310 icon: '/static/icon/attendence.png', 328 icon: '/static/icon/attendence.png',
311 items: [ 329 items: [
312 { name: 'StudentAttendence', title: 'Student Attendance', component: 'Student Attendence', action: '', }, 330 { name: 'StudentAttendence', title: 'Student Attendance', component: 'Student Attendence', action: '', },
313 { name: 'TeacherAttendence', title: 'Teacher Attendance', component: 'Teacher Attendence', action: '', }, 331 { name: 'TeacherAttendence', title: 'Teacher Attendance', component: 'Teacher Attendence', action: '', },
314 // { name: 'userAttendence', title: 'User Attendance', component: 'User Attendence', action: '', }, 332 // { name: 'userAttendence', title: 'User Attendance', component: 'User Attendence', action: '', },
315 ] 333 ]
316 }, 334 },
317 { 335 {
318 title: 'Exam', 336 title: 'Exam',
319 group: 'Exam', 337 group: 'Exam',
320 component: 'Exam', 338 component: 'Exam',
321 icon: '/static/icon/exam.png', 339 icon: '/static/icon/exam.png',
322 items: [ 340 items: [
323 { name: 'ExamSchedule', title: 'Exam Schedule', component: 'Exam Schedule', action: '', }, 341 { name: 'ExamSchedule', title: 'Exam Schedule', component: 'Exam Schedule', action: '', },
324 { name: 'ExamAttendence', title: 'Exam Attendence', component: 'Exam Attendence', action: '', } 342 { name: 'ExamAttendence', title: 'Exam Attendence', component: 'Exam Attendence', action: '', }
325 ] 343 ]
326 }, 344 },
327 { 345 {
328 title: 'Marks', 346 title: 'Marks',
329 group: 'Mark', 347 group: 'Mark',
330 component: 'Mark', 348 component: 'Mark',
331 icon: '/static/icon/marks.png', 349 icon: '/static/icon/marks.png',
332 items: [ 350 items: [
333 { name: 'Mark', title: 'Mark', component: 'Mark', action: '', } 351 { name: 'Mark', title: 'Mark', component: 'Mark', action: '', }
334 ] 352 ]
335 }, 353 },
336 { 354 {
337 title: 'Report', 355 title: 'Report',
338 group: 'Report', 356 group: 'Report',
339 component: 'Report', 357 component: 'Report',
340 icon: '/static/icon/reports.png', 358 icon: '/static/icon/reports.png',
341 items: [ 359 items: [
342 { name: 'studentReport', title: 'Student Report', component: 'Student Report', action: '', }, 360 { name: 'studentReport', title: 'Student Report', component: 'Student Report', action: '', },
343 { name: 'ProgressCardReport', title: 'Progress Card Report', component: 'Progress Card Report', action: '', }, 361 { name: 'ProgressCardReport', title: 'Progress Card Report', component: 'Progress Card Report', action: '', },
344 { name: 'idCard', title: 'Id Card Report', component: 'Id Card Report', action: '', }, 362 { name: 'idCard', title: 'Id Card Report', component: 'Id Card Report', action: '', },
345 { name: 'admitCard', title: 'Admit Card Report', component: 'Admit Card Report', action: '', } 363 { name: 'admitCard', title: 'Admit Card Report', component: 'Admit Card Report', action: '', }
346 ] 364 ]
347 }, 365 },
348 { 366 {
349 title: 'Library', 367 title: 'Library',
350 group: 'Library', 368 group: 'Library',
351 component: 'Library', 369 component: 'Library',
352 icon: '/static/icon/library.png', 370 icon: '/static/icon/library.png',
353 items: [ 371 items: [
354 { name: 'Books', title: 'Books', component: 'Books', action: '', }, 372 { name: 'Books', title: 'Books', component: 'Books', action: '', },
355 { name: 'E-Books', title: 'E-Books', component: 'E-Books', action: '', } 373 { name: 'E-Books', title: 'E-Books', component: 'E-Books', action: '', }
356 374
357 ] 375 ]
358 }, 376 },
359 { 377 {
360 title: 'Meet', 378 title: 'Meet',
361 name: 'Meet', 379 name: 'Meet',
362 icon: '/static/icon/parents.png', 380 icon: '/static/icon/parents.png',
363 } 381 }
364 ]; 382 ];
365 383
366 // reorder menu 384 // reorder menu
367 // Menu.forEach((item) => { 385 // Menu.forEach((item) => {
368 // if (item.items) { 386 // if (item.items) {
369 // item.items.sort((x, y) => { 387 // item.items.sort((x, y) => {
370 // let textA = x.title.toUpperCase(); 388 // let textA = x.title.toUpperCase();
371 // let textB = y.title.toUpperCase(); 389 // let textB = y.title.toUpperCase();
372 // return (textA < textB) ? -1 : (textA > textB) ? 1 : 0; 390 // return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
373 // }); 391 // });
374 // } 392 // }
375 // }); 393 // });
376 394
377 export default { adminMenu, schoolMenu, teacherMenu, libraryMenu, accountMenu }; 395 export default { adminMenu, schoolMenu, teacherMenu, libraryMenu, accountMenu };
src/pages/Annoucement/annoucement.vue
File was created 1 <template>
2 <v-container fluid class="body-color">
3 <!-- ****** EDITS COURSES DETAILS ****** -->
4 <v-dialog v-model="editStudentDialog" max-width="600px" scrollable>
5 <v-card flat class="card-style pa-2" dark>
6 <v-layout>
7 <v-flex xs12>
8 <label class="title text-xs-center">Edit Annoucement</label>
9 <v-icon size="24" class="right" @click="editStudentDialog = false">cancel</v-icon>
10 </v-flex>
11 </v-layout>
12 <v-card-text>
13 <v-form ref="form">
14 <v-container fluid>
15 <v-layout>
16 <v-flex xs12 class="text-xs-center text-sm-center text-md-center text-lg-center">
17 <v-avatar size="100px" v-if="!editedItem.attachementUrl && !editImageUrl">
18 <img src="/static/icon/user.png" />
19 </v-avatar>
20 <img
21 :src="editedItem.attachementUrl"
22 v-else-if="editedItem.attachementUrl && !editImageUrl"
23 height="150"
24 style="border-radius:50%; width:150px"
25 />
26 <img
27 v-if="editImageUrl"
28 :src="editImageUrl"
29 style="border-radius:50%; width:150px;height:150px"
30 />
31 <input
32 type="file"
33 style="display: none"
34 ref="editDataImage"
35 accept="image/*"
36 @change="onEditFilePicked"
37 />
38 </v-flex>
39 </v-layout>
40 <v-layout wrap>
41 <v-flex xs12 sm12>
42 <v-layout>
43 <v-flex xs4 sm5 class="pt-4 subheading">
44 <label class="right hidden-xs-only hidden-sm-only">Select Class:</label>
45 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Class:</label>
46 </v-flex>
47 <v-flex xs8 sm7 class="ml-3">
48 <v-select
49 :items="addclass"
50 label="Select Class"
51 v-model="editedItem.select"
52 item-text="classNum"
53 item-value="_id"
54 name="Select Class"
55 required
56 ></v-select>
57 </v-flex>
58 </v-layout>
59 <v-layout>
60 <v-flex xs4 sm5 class="pt-4 subheading">
61 <label class="right hidden-xs-only hidden-sm-only">Course Name:</label>
62 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Course:</label>
63 </v-flex>
64 <v-flex xs8 sm7 class="ml-3">
65 <v-select
66 :items="courseData"
67 item-text="coursrName"
68 item-value="_id"
69 v-model="editedItem.coursrName"
70 placeholder="fill your Course name"
71 type="text"
72 :rules="courseRules"
73 required
74 ></v-select>
75 </v-flex>
76 </v-layout>
77 <v-layout>
78 <v-flex xs4 sm5 class="pt-4 subheading">
79 <label class="right hidden-xs-only hidden-sm-only">Discussion Type:</label>
80 <label
81 class="right hidden-lg-only hidden-md-only hidden-xl-only"
82 >DiscussionType:</label>
83 </v-flex>
84 <v-flex xs8 sm7 class="ml-3">
85 <v-text-field
86 v-model="editedItem.discussionType"
87 placeholder="fill your Course Name"
88 type="text"
89 required
90 ></v-text-field>
91 </v-flex>
92 </v-layout>
93 <v-layout>
94 <v-flex xs4 sm5 class="pt-4 subheading">
95 <label class="right hidden-xs-only hidden-sm-only">Upload Image:</label>
96 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Upload:</label>
97 </v-flex>
98 <v-flex xs8 sm7 class="ml-3">
99 <v-text-field
100 label="Select Image"
101 @click="pickEditFile"
102 v-model="editImageName"
103 append-icon="attach_file"
104 ></v-text-field>
105 </v-flex>
106 </v-layout>
107 </v-flex>
108 </v-layout>
109 <v-layout>
110 <v-flex xs12 sm12 class="px-0 mx-0">
111 <v-layout class="right">
112 <v-btn @click="save" round dark :loading="editLoading" class="add-button">Save</v-btn>
113 </v-layout>
114 </v-flex>
115 </v-layout>
116 </v-container>
117 </v-form>
118 </v-card-text>
119 </v-card>
120 </v-dialog>
121
122 <!-- ****** PROFILE VIEW STUDENTS DEATILS ****** -->
123
124 <v-dialog v-model="profileStudentDialog" max-width="600px" scrollable>
125 <v-card flat class="card-style pa-3" dark>
126 <v-layout>
127 <v-flex xs12>
128 <label class="title text-xs-center">View Annoucement</label>
129 <v-icon size="24" class="right" @click="profileStudentDialog = false">cancel</v-icon>
130 </v-flex>
131 </v-layout>
132 <v-card-text>
133 <v-flex align-center justify-center layout text-xs-center class="mt-3">
134 <v-avatar size="100px">
135 <img src="/static/icon/user.png" v-if="!editedItem.attachementUrl" />
136 <img :src="editedItem.attachementUrl" v-else-if="editedItem.attachementUrl" />
137 </v-avatar>
138 </v-flex>
139 <v-container grid-list-md>
140 <v-layout wrap>
141 <v-flex xs12>
142 <v-layout>
143 <v-flex xs6 sm6>
144 <h5 class="right my-1">
145 <b>Discussion Type :</b>
146 </h5>
147 </v-flex>
148 <v-flex sm6 xs6>
149 <h5 class="my-1 left">{{ editedItem.discussionType }}</h5>
150 </v-flex>
151 </v-layout>
152 </v-flex>
153 </v-layout>
154 </v-container>
155 </v-card-text>
156 </v-card>
157 </v-dialog>
158
159 <!-- ****** Annoucement TABLE ****** -->
160 <v-toolbar color="transparent" flat>
161 <v-btn
162 fab
163 dark
164 class="open-dialog-button hidden-xl-only hidden-md-only hidden-lg-only"
165 small
166 @click="addAnnoucementDialog = true"
167 >
168 <v-icon dark>add</v-icon>
169 </v-btn>
170 <v-btn
171 round
172 class="open-dialog-button hidden-sm-only hidden-xs-only"
173 dark
174 @click="addAnnoucementDialog = true"
175 >
176 <v-icon class="white--text pr-1" size="20">add</v-icon>Add Annoucement
177 </v-btn>
178 <v-card-actions class="hidden-xs-only hidden-sm-only">
179 <v-flex md13 lg12>
180 <v-layout>
181 <v-flex lg6 md12>
182 <v-layout>
183 <v-select
184 :items="addclass"
185 label="Select Class"
186 v-model="selectAnnoucement.classId"
187 item-text="classNum"
188 item-value="_id"
189 name="Select Class"
190 :rules="classRules"
191 required
192 class="ml-2"
193 @change="getCourses(selectAnnoucement.classId)"
194 ></v-select>
195 <v-select
196 :items="courseData"
197 label="Select Course"
198 v-model="selectAnnoucement.courseId"
199 item-text="coursrName"
200 item-value="_id"
201 :rules="courseRules"
202 required
203 class="ml-4"
204 ></v-select>
205 </v-layout>
206 </v-flex>
207 </v-layout>
208 </v-flex>
209 </v-card-actions>
210 <v-spacer></v-spacer>
211 <v-btn
212 @click="getAnnoucementes()"
213 round
214 dark
215 :loading="loading"
216 class="add-button hidden-xs-only hidden-sm-only"
217 >Find</v-btn>
218 <v-card-title class="body-1" v-show="show">
219 <v-btn icon large flat @click="displaySearch">
220 <v-avatar size="27">
221 <img src="/static/icon/search.png" alt="icon" />
222 </v-avatar>
223 </v-btn>
224 </v-card-title>
225 <v-flex xs8 sm7 lg2 md3 v-show="showSearch">
226 <v-layout>
227 <v-text-field v-model="search" label="Search" prepend-inner-icon="search" color="primary"></v-text-field>
228 <v-icon @click="closeSearch" color="error">close</v-icon>
229 </v-layout>
230 </v-flex>
231 </v-toolbar>
232 <v-card flat class="elevation-0 transparent">
233 <v-flex class="hidden-xl-only hidden-lg-only hidden-md-only">
234 <v-layout>
235 <v-flex xs12>
236 <v-select
237 :items="addclass"
238 label="Select Class"
239 v-model="selectAnnoucement.select"
240 item-text="classNum"
241 item-value="_id"
242 name="Select Class"
243 :rules="classRules"
244 class="px-2"
245 ></v-select>
246 </v-flex>
247 </v-layout>
248 <v-layout>
249 <v-flex xs5 class="mx-auto mb-2">
250 <v-btn
251 @click="getAnnoucementes()"
252 block
253 round
254 dark
255 :loading="loading"
256 class="add-button"
257 >Find</v-btn>
258 </v-flex>
259 </v-layout>
260 </v-flex>
261 </v-card>
262 <v-data-table
263 :headers="headers"
264 :items="annoucementData"
265 :pagination.sync="pagination"
266 :search="search"
267 >
268 <template slot="items" slot-scope="props">
269 <tr class="tr">
270 <td class="text-xs-center td td-row">
271 <v-avatar size="40">
272 <img :src="props.item.attachementUrl" v-if="props.item.attachementUrl" />
273 <img src="/static/icon/user.png" v-else-if="!props.item.attachementUrl" />
274 </v-avatar>
275 </td>
276 <td class="text-xs-center td td-row">{{ props.item.discussionType}}</td>
277 <td class="text-xs-center td td-row">
278 <span>
279 <v-tooltip top>
280 <img
281 slot="activator"
282 style="cursor:pointer; width:25px; height:25px; "
283 class="mr-3"
284 @click="profile(props.item)"
285 src="/static/icon/view.png"
286 />
287 <span>View</span>
288 </v-tooltip>
289 <v-tooltip top>
290 <img
291 slot="activator"
292 style="cursor:pointer; width:20px; height:18px; "
293 class="mr-3"
294 @click="editItem(props.item)"
295 src="/static/icon/edit.png"
296 />
297 <span>Edit</span>
298 </v-tooltip>
299 <v-tooltip top>
300 <img
301 slot="activator"
302 style="cursor:pointer; width:20px; height:20px; "
303 class="mr-3"
304 @click="deleteItem(props.item)"
305 src="/static/icon/delete.png"
306 />
307 <span>Delete</span>
308 </v-tooltip>
309 </span>
310 </td>
311 </tr>
312 </template>
313 <v-alert
314 slot="no-results"
315 :value="true"
316 color="error"
317 icon="warning"
318 >Your search for "{{ search }}" found no results.</v-alert>
319 </v-data-table>
320 <!-- ****** Add Annoucement DETAILS******-->
321 <v-dialog v-model="addAnnoucementDialog" max-width="500">
322 <v-card flat class="card-style pa-2" dark>
323 <v-layout>
324 <v-flex xs12>
325 <label class="title text-xs-center">Add Annoucement</label>
326 <v-icon size="24" class="right" @click="addAnnoucementDialog = false">cancel</v-icon>
327 </v-flex>
328 </v-layout>
329 <v-container fluid>
330 <v-layout align-center>
331 <v-flex xs12>
332 <v-flex xs12 sm12>
333 <v-form ref="form" v-model="valid" lazy-validation>
334 <v-layout>
335 <v-flex
336 xs12
337 class="text-xs-center text-sm-center text-md-center text-lg-center"
338 >
339 <v-avatar size="100px" v-if="!imageUrl">
340 <img src="/static/icon/user.png" />
341 </v-avatar>
342 <input
343 type="file"
344 style="display: none"
345 ref="image"
346 accept="image/*"
347 @change="onFilePicked"
348 />
349 <img
350 :src="imageData.imageUrl"
351 height="150"
352 width="150"
353 v-if="imageUrl"
354 style="border-radius:50%; width:200px"
355 />
356 </v-flex>
357 </v-layout>
358 <v-layout wrap>
359 <v-flex xs12 sm12>
360 <v-layout>
361 <v-flex x4 sm4 class="pt-4 subheading">
362 <label class="right hidden-xs-only hidden-sm-only">Select Class:</label>
363 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Class:</label>
364 </v-flex>
365 <v-flex xs8 sm8 class="ml-3">
366 <v-select
367 :items="addclass"
368 label="Select Class"
369 v-model="addAnnoucement.select"
370 item-text="classNum"
371 item-value="_id"
372 name="Select Class"
373 :rules="classRules"
374 @change="getCourses(addAnnoucement.select)"
375 required
376 ></v-select>
377 </v-flex>
378 </v-layout>
379 </v-flex>
380 </v-layout>
381 <v-layout wrap>
382 <v-flex xs12 sm12>
383 <v-layout>
384 <v-flex xs4 sm4 class="pt-4 subheading">
385 <label class="right hidden-xs-only hidden-sm-only">Course Name:</label>
386 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Course:</label>
387 </v-flex>
388 <v-flex xs8 sm8 class="ml-3">
389 <v-select
390 :items="courseData"
391 item-text="coursrName"
392 item-value="_id"
393 v-model="addAnnoucement.coursrName"
394 placeholder="fill your Course name"
395 type="text"
396 :rules="courseRules"
397 required
398 ></v-select>
399 </v-flex>
400 </v-layout>
401 </v-flex>
402 <v-flex xs12 sm12>
403 <v-layout>
404 <v-flex xs4 sm4 class="pt-4 subheading">
405 <label class="right hidden-xs-only hidden-sm-only">Discussion Type:</label>
406 <label
407 class="right hidden-lg-only hidden-md-only hidden-xl-only"
408 >DiscussionType:</label>
409 </v-flex>
410 <v-flex xs8 sm8 class="ml-3">
411 <v-text-field
412 v-model="addAnnoucement.discussionType"
413 placeholder="fill your Course name"
414 type="text"
415 :rules="courseRules"
416 required
417 ></v-text-field>
418 </v-flex>
419 </v-layout>
420 </v-flex>
421 <v-flex xs12 sm12>
422 <v-layout>
423 <v-flex xs4 class="pt-4 subheading">
424 <label class="right hidden-xs-only hidden-sm-only">Upload Image:</label>
425 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Upload :</label>
426 </v-flex>
427 <v-flex xs8 class="ml-3">
428 <v-text-field
429 label="Select Image"
430 @click="pickFile"
431 v-model="imageName"
432 append-icon="attach_file"
433 ></v-text-field>
434 </v-flex>
435 </v-layout>
436 </v-flex>
437 </v-layout>
438 <v-layout>
439 <v-flex xs12 sm12>
440 <v-layout class="right">
441 <v-btn @click="submit" round dark :loading="loading" class="add-button">Add</v-btn>
442 </v-layout>
443 </v-flex>
444 </v-layout>
445 </v-form>
446 </v-flex>
447 </v-flex>
448 </v-layout>
449 </v-container>
450 </v-card>
451 </v-dialog>
452 <v-snackbar
453 :timeout="timeout"
454 :top="y === 'top'"
455 :right="x === 'right'"
456 :vertical="mode === 'vertical'"
457 v-model="snackbar"
458 :color="color"
459 >{{ text }}</v-snackbar>
460 <div class="loader" v-if="showLoader">
461 <v-progress-circular indeterminate color="white"></v-progress-circular>
462 </div>
463 </v-container>
464 </template>
465
466 <script>
467 import http from "@/Services/http.js";
468 import moment from "moment";
469 import countryList from "@/script/country.js";
470 import parent from "@/script/parents.js";
471
472 export default {
473 data: () => ({
474 showNext: false,
475 snackbar: false,
476 y: "top",
477 x: "right",
478 role: "",
479 mode: "",
480 append: "",
481 timeout: 3000,
482 text: "",
483 show: true,
484 color: "",
485 showSearch: false,
486 showLoader: false,
487 loading: false,
488 editLoading: false,
489 date: null,
490 search: "",
491 menu: false,
492 menu1: false,
493 editStudentDialog: false,
494 profileStudentDialog: false,
495 addAnnoucementDialog: false,
496 valid: true,
497 addclass: [],
498 addSection: [],
499 pagination: {
500 rowsPerPage: 10
501 },
502 imageData: {},
503 imageName: "",
504 imageUrl: "",
505 imageFile: "",
506 editImageName: "",
507 editImageUrl: "",
508 courseRules: [v => !!v || " Course Name is required"],
509 classRules: [v => !!v || " Class Name is required"],
510 sectionRules: [v => !!v || "Section Name is required"],
511 errorMessages: "",
512 headers: [
513 {
514 text: "Image",
515 value: "attachementUrl",
516 sortable: false,
517 align: "center"
518 },
519 {
520 text: "Discussion Type",
521 value: "discussionType",
522 sortable: false,
523 align: "center"
524 },
525 { text: "Action", value: "", sortable: false, align: "center" }
526 ],
527 courseData: [],
528 editedIndex: -1,
529 addAnnoucement: {
530 select: ""
531 },
532 selectAnnoucement: {},
533 editedItem: {},
534 annoucementData: []
535 }),
536 methods: {
537 getCourses(selectCourseId) {
538 this.showLoader = true;
539 http()
540 .get("/getCourseesList", {
541 params: {
542 classId: selectCourseId
543 }
544 })
545 .then(response => {
546 this.courseData = response.data.data;
547 this.showLoader = false;
548 })
549 .catch(err => {
550 console.log("err====>", err);
551 this.showLoader = false;
552 });
553 },
554 getAnnoucementes() {
555 this.showLoader = true;
556 http()
557 .get("/getAnnoucementesList", {
558 params: {
559 courseId: this.selectAnnoucement.courseId
560 }
561 })
562 .then(response => {
563 this.annoucementData = response.data.data;
564 this.showLoader = false;
565 })
566 .catch(err => {
567 console.log("err====>", err);
568 this.showLoader = false;
569 });
570 },
571 // getSections(_id) {
572 // var token = this.$store.state.token;
573 // this.showLoader = true;
574 // http()
575 // .get(
576 // "/getSectionsList",
577 // { params: { classId: _id } },
578 // {
579 // headers: { Authorization: "Bearer " + token }
580 // }
581 // )
582 // .then(response => {
583 // this.addSection = response.data.data;
584 // this.showLoader = false;
585 // })
586 // .catch(err => {
587 // this.showLoader = false;
588 // });
589 // },
590 pickFile() {
591 this.$refs.image.click();
592 },
593 pickEditFile() {
594 this.$refs.editDataImage.click();
595 },
596 dates: function(date) {
597 return moment(date).format("MMMM DD, YYYY");
598 return date;
599 },
600 onFilePicked(e) {
601 // console.log(e)
602 const files = e.target.files;
603 this.imageData.upload = e.target.files[0];
604 if (files[0] !== undefined) {
605 this.imageName = files[0].name;
606 if (this.imageName.lastIndexOf(".") <= 0) {
607 return;
608 }
609 const fr = new FileReader();
610 fr.readAsDataURL(files[0]);
611 fr.addEventListener("load", () => {
612 this.imageUrl = fr.result;
613 this.imageFile = files[0]; // this is an image file that can be sent to server...
614 this.imageData.imageUrl = URL.createObjectURL(this.imageFile);
615 });
616 } else {
617 this.imageName = "";
618 this.imageFile = "";
619 this.imageUrl = "";
620 }
621 },
622 onEditFilePicked(e) {
623 console.log(e);
624 const files = e.target.files;
625 if (files[0] !== undefined) {
626 this.editImageName = files[0].name;
627 console.log("this.editImageName", this.editImageName);
628
629 if (this.editImageName.lastIndexOf(".") <= 0) {
630 return;
631 }
632 const fr = new FileReader();
633 fr.readAsDataURL(files[0]);
634 fr.addEventListener("load", () => {
635 this.editImageUrl = fr.result;
636 this.editiImageFile = files[0]; // this is an image file that can be sent to server...
637 });
638 } else {
639 this.editImageName = "";
640 this.editiImageFile = "";
641 }
642 },
643 editItem(item) {
644 this.editedIndex = this.courseData.indexOf(item);
645 this.editedItem = Object.assign({}, item);
646 this.editStudentDialog = true;
647 },
648 profile(item) {
649 this.editedIndex = this.courseData.indexOf(item);
650 this.editedItem = Object.assign({}, item);
651 this.profileStudentDialog = true;
652 },
653 deleteItem(item) {
654 let deleteAnnoucement = {
655 annoucementId: item._id
656 };
657 http()
658 .delete(
659 "/deleteAnnoucement",
660 confirm("Are you sure you want to delete this?") && {
661 params: deleteAnnoucement
662 }
663 )
664 .then(response => {
665 this.snackbar = true;
666 this.text = response.data.message;
667 this.color = "green";
668 this.getAnnoucementes();
669 })
670 .catch(error => {
671 this.snackbar = true;
672 this.text = error.response.data.message;
673 this.color = "error";
674 });
675 },
676 close() {
677 this.editStudentDialog = false;
678 },
679 closeStudentProfile() {
680 this.profileStudentDialog = false;
681 },
682 submit() {
683 if (this.$refs.form.validate()) {
684 let addCourse = {
685 classId: this.addAnnoucement.select,
686 sectionId: this.addAnnoucement.selectSection,
687 discussionType: this.addAnnoucement.discussionType,
688 courseId: this.addAnnoucement.coursrName
689 };
690 if (this.imageUrl) {
691 var str = this.imageUrl;
692 const [baseUrl, imageUrl] = str.split(/,/);
693 addCourse.upload = imageUrl;
694 }
695 this.loading = true;
696 http()
697 .post("/createAnnoucement", addCourse)
698 .then(response => {
699 this.snackbar = true;
700 this.text = "New Annoucement added successfully";
701 this.color = "green";
702 this.addAnnoucementDialog = false;
703 this.clear();
704 this.loading = false;
705 })
706 .catch(error => {
707 this.snackbar = true;
708 this.text = error.response.data.message;
709 this.color = "error";
710 this.loading = false;
711 });
712 }
713 },
714 clear() {
715 this.$refs.form.reset();
716 this.imageUrl = "";
717 },
718 save() {
719 let editAnnoucement = {
720 annoucementId: this.editedItem._id,
721 discussionType: this.editedItem.discussionType,
722 classId: this.editedItem.select,
723 courseId: this.editedItem.coursrName
724 };
725 if (this.editImageUrl) {
726 var str = this.editImageUrl;
727 const [baseUrl, editImageUrl] = str.split(/,/);
728 editAnnoucement.upload = editImageUrl;
729 }
730 this.editLoading = true;
731 http()
732 .put("/updateAnnoucement", editAnnoucement)
733 .then(response => {
734 this.snackbar = true;
735 this.text = response.data.message;
736 this.color = "green";
737 this.imageUrl = "";
738 this.getAnnoucementes();
739 this.close();
740 this.editLoading = false;
741 })
742 .catch(error => {
743 this.snackbar = true;
744 this.text = error.response.data.statusText;
745 this.color = "error";
746 this.editLoading = false;
747 });
748 },
749 displaySearch() {
750 this.show = false;
751 this.showSearch = true;
752 },
753 closeSearch() {
754 this.showSearch = false;
755 this.show = true;
756 this.search = "";
757 }
758 },
759 mounted() {
760 var token = this.$store.state.token;
761 http()
762 .get("/getClassesList", {
763 headers: { Authorization: "Bearer " + token }
764 })
765 .then(response => {
766 this.addclass = response.data.data;
767 })
768 .catch(error => {
769 this.showLoader = false;
770 if (error.response.status === 401) {
771 this.$router.replace({ path: "/" });
772 this.$store.dispatch("setToken", null);
773 this.$store.dispatch("Id", null);
774 this.$store.dispatch("Role", null);
775 }
776 });
777 }
778 };
779 </script>
780 <style scoped>
781 .active {
782 background-color: gray;
783 color: white !important;
784 }
785 .activebtn {
786 color: black !important;
787 }
788 </style>
src/pages/Authentication/Login.vue
1 <template> 1 <template>
2 <v-app id="login"> 2 <v-app id="login">
3 <v-content> 3 <v-content>
4 <v-container fluid fill-height> 4 <v-container fluid fill-height>
5 <v-snackbar 5 <v-snackbar
6 :timeout="timeout" 6 :timeout="timeout"
7 :top="y === 'top'" 7 :top="y === 'top'"
8 :right="x === 'right'" 8 :right="x === 'right'"
9 :vertical="mode === 'vertical'" 9 :vertical="mode === 'vertical'"
10 v-model="snackbar" 10 v-model="snackbar"
11 :color="color" 11 :color="color"
12 >{{ text }}</v-snackbar> 12 >{{ text }}</v-snackbar>
13 <v-layout align-center justify-center> 13 <v-layout align-center justify-center>
14 <v-flex xs12 sm10 md5 lg4> 14 <v-flex xs12 sm10 md5 lg4>
15 <img src="/static/icon.png" height="40" width="140" alt="logo" class="logo mx-auto mb-2" /> 15 <img
16 src="/static/icon.png"
17 height="40"
18 width="140"
19 alt="logo"
20 class="logo mx-auto mb-2"
21 />
16 <v-card class="elevation-1 px-2 py-3 card" style="background-color: #7852cc" dark> 22 <v-card class="elevation-1 px-2 py-3 card" style="background-color: #7852cc" dark>
17 <img 23 <img
18 src="/static/intrackIllustration.png" 24 src="/static/intrackIllustration.png"
19 class="mx-auto logoSchool" 25 class="mx-auto logoSchool"
20 style="display:block" 26 style="display:block"
21 width="280" 27 width="280"
22 /> 28 />
23 <v-card-text align-center justify-center> 29 <v-card-text align-center justify-center>
24 <v-toolbar-title class="text-xs-center subheadline">SCHOOL LOGIN</v-toolbar-title> 30 <v-toolbar-title class="text-xs-center subheadline">SCHOOL LOGIN</v-toolbar-title>
25 <v-flex xs12 sm12 md12 lg12> 31 <v-flex xs12 sm12 md12 lg12>
26 <v-form ref="form" v-model="valid" lazy-validation> 32 <v-form ref="form" v-model="valid" lazy-validation>
27 <label class="title">Email</label> 33 <label class="title">Email</label>
28 <v-text-field 34 <v-text-field
29 style="padding: 0px; margin: 0px;" 35 style="padding: 0px; margin: 0px;"
30 v-model.trim="userLogincredentials.email" 36 v-model.trim="userLogincredentials.email"
31 :rules="nameRules" 37 :rules="nameRules"
32 placeholder="Enter your email" 38 placeholder="Enter your email"
33 required 39 required
34 ></v-text-field> 40 ></v-text-field>
35 <label class="title">Password</label> 41 <label class="title">Password</label>
36 <v-text-field 42 <v-text-field
37 style="padding: 0px; margin: 0px;" 43 style="padding: 0px; margin: 0px;"
38 :rules="[rules.required]" 44 :rules="[rules.required]"
39 v-model.trim="userLogincredentials.password" 45 v-model.trim="userLogincredentials.password"
40 :append-icon="e1 ? 'visibility_off' : 'visibility'" 46 :append-icon="e1 ? 'visibility_off' : 'visibility'"
41 :append-icon-cb="() => (e1 = !e1)" 47 :append-icon-cb="() => (e1 = !e1)"
42 :type="e1 ? 'password' : 'text'" 48 :type="e1 ? 'password' : 'text'"
43 name="input-10-1" 49 name="input-10-1"
44 placeholder="Enter Your password" 50 placeholder="Enter Your password"
45 @keyup.enter="login" 51 @keyup.enter="login"
46 ></v-text-field> 52 ></v-text-field>
47 </v-form> 53 </v-form>
48 <v-layout> 54 <v-layout>
49 <v-flex xs12 class="pa-0 ma-0"> 55 <v-flex xs12 class="pa-0 ma-0">
50 <h5 class="right mt-4"> 56 <h5 class="right mt-4">
51 <router-link class="link" to="/forgetpassword">Forgot password</router-link> 57 <router-link class="link" to="/forgetpassword">Forgot password</router-link>
52 </h5> 58 </h5>
53 </v-flex> 59 </v-flex>
54 </v-layout> 60 </v-layout>
55 </v-flex> 61 </v-flex>
56 </v-card-text> 62 </v-card-text>
57 <v-layout> 63 <v-layout>
58 <v-flex sm12> 64 <v-flex sm12>
59 <v-btn 65 <v-btn
60 style="margin: auto;display: block;background-color: #71d9ea; color: #0c0754;" 66 style="margin: auto;display: block;background-color: #71d9ea; color: #0c0754;"
61 dark 67 dark
62 flat 68 flat
63 @click="login" 69 @click="login"
64 :loading="loading" 70 :loading="loading"
65 >Login</v-btn> 71 >Login</v-btn>
66 </v-flex> 72 </v-flex>
67 </v-layout> 73 </v-layout>
68 <v-layout></v-layout> 74 <v-layout></v-layout>
69 </v-card> 75 </v-card>
70 </v-flex> 76 </v-flex>
71 </v-layout> 77 </v-layout>
72 </v-container> 78 </v-container>
73 </v-content> 79 </v-content>
74 </v-app> 80 </v-app>
75 </template> 81 </template>
76 82
77 <script> 83 <script>
78 import http from "@/Services/http.js"; 84 import http from "@/Services/http.js";
79 export default { 85 export default {
80 data() { 86 data() {
81 return { 87 return {
82 snackbar: false, 88 snackbar: false,
83 y: "top", 89 y: "top",
84 x: "right", 90 x: "right",
85 mode: "", 91 mode: "",
86 timeout: 3000, 92 timeout: 3000,
87 text: "", 93 text: "",
88 append: "", 94 append: "",
89 e1: true, 95 e1: true,
90 loading: false, 96 loading: false,
91 remember: false, 97 remember: false,
92 valid: false, 98 valid: false,
93 userLogincredentials: {}, 99 userLogincredentials: {},
94 nameRules: [v => !!v || "Username is required"], 100 nameRules: [v => !!v || "Username is required"],
95 password: "", 101 password: "",
96 email: "", 102 email: "",
97 rules: { 103 rules: {
98 required: value => !!value || "password is Required." 104 required: value => !!value || "password is Required."
99 } 105 }
100 }; 106 };
101 }, 107 },
102 methods: { 108 methods: {
103 login() { 109 login() {
104 this.loading = true; 110 if (this.$refs.form.validate()) {
105 var userdata = { 111 this.loading = true;
106 email: this.userLogincredentials.email, 112 var userdata = {
107 password: this.userLogincredentials.password 113 email: this.userLogincredentials.email,
108 }; 114 password: this.userLogincredentials.password
109 http() 115 };
110 .post("/schoolLogin", userdata) 116 http()
111 .then(response => { 117 .post("/schoolLogin", userdata)
112 // console.log("token",response.data.data); 118 .then(response => {
113 this.loading = false; 119 // console.log("token",response.data.data);
114 if (response.data.data.role === "ADMIN") {
115 this.$store.dispatch("setToken", response.data.data.token);
116 this.$store.dispatch("Id", response.data.data.id);
117 this.$store.dispatch("Role", response.data.data.role);
118 this.$router.push("/dashboard");
119 } else if (response.data.data.role === "SUPERADMIN") {
120 this.$store.dispatch("setSchoolRole", response.data.data.role);
121 this.$store.dispatch("setSchoolToken", response.data.data.token);
122 this.$router.push("/schooldashboard");
123 } else if (response.data.data.role === "TEACHER") {
124 // console.log("teacher", response.data.data.role);
125 this.$store.dispatch("setToken", response.data.data.token);
126 this.$store.dispatch("Id", response.data.data.id);
127 this.$store.dispatch("Role", response.data.data.role);
128 this.$router.push("/dashboard");
129 } else if (response.data.data.role === "LIBRARIAN") {
130 this.$store.dispatch("setToken", response.data.data.token);
131 this.$store.dispatch("Id", response.data.data.id);
132 this.$store.dispatch("Role", response.data.data.role);
133 this.$router.push("/dashboard");
134 } else if (response.data.data.role === "ACCOUNTANT") {
135 this.$store.dispatch("setToken", response.data.data.token);
136 this.$store.dispatch("Id", response.data.data.id);
137 this.$store.dispatch("Role", response.data.data.role);
138 this.$router.push("/dashboard");
139 }
140 })
141 .catch(error => {
142 if (error) {
143 this.text = "Server appears to be offline";
144 this.snackbar = true;
145 this.loading = false; 120 this.loading = false;
146 } 121 if (response.data.data.role === "ADMIN") {
147 if (error.response.data.message) { 122 this.$store.dispatch("setToken", response.data.data.token);
148 this.text = error.response.data.message; 123 this.$store.dispatch("Id", response.data.data.id);
149 this.snackbar = true; 124 this.$store.dispatch("Role", response.data.data.role);
150 } 125 this.$router.push("/dashboard");
151 this.loading = false; 126 } else if (response.data.data.role === "SUPERADMIN") {
152 }); 127 this.$store.dispatch("setSchoolRole", response.data.data.role);
128 this.$store.dispatch("setSchoolToken", response.data.data.token);
129 this.$router.push("/schooldashboard");
130 } else if (response.data.data.role === "TEACHER") {
131 // console.log("teacher", response.data.data.role);
132 this.$store.dispatch("setToken", response.data.data.token);
133 this.$store.dispatch("Id", response.data.data.id);
134 this.$store.dispatch("Role", response.data.data.role);
135 this.$router.push("/dashboard");
136 } else if (response.data.data.role === "LIBRARIAN") {
137 this.$store.dispatch("setToken", response.data.data.token);
138 this.$store.dispatch("Id", response.data.data.id);
139 this.$store.dispatch("Role", response.data.data.role);
140 this.$router.push("/dashboard");
141 } else if (response.data.data.role === "ACCOUNTANT") {
142 this.$store.dispatch("setToken", response.data.data.token);
143 this.$store.dispatch("Id", response.data.data.id);
144 this.$store.dispatch("Role", response.data.data.role);
145 this.$router.push("/dashboard");
146 }
147 })
148 .catch(error => {
149 if (error.response.data.message) {
150 this.text = error.response.data.message;
151 this.snackbar = true;
152 this.loading = false;
153 } else {
154 this.text = "Server appears to be offline";
155 this.snackbar = true;
156 this.loading = false;
157 }
158 });
159 }
153 } 160 }
154 }, 161 },
155 mounted() { 162 mounted() {
156 if (this.$store.state.isUserLoggedIn == true) { 163 if (this.$store.state.isUserLoggedIn == true) {
157 this.$router.push("/dashboard"); 164 this.$router.push("/dashboard");
158 } else if (this.$store.state.isSchoolLoggedIn == true) { 165 } else if (this.$store.state.isSchoolLoggedIn == true) {
159 this.$router.push("/dashboard"); 166 this.$router.push("/dashboard");
160 } 167 }
161 }, 168 },
162 computed: { 169 computed: {
163 color() { 170 color() {
164 return this.loading ? "success" : "error"; 171 return this.loading ? "success" : "error";
165 } 172 }
166 } 173 }
167 }; 174 };
168 </script> 175 </script>
169 176
170 <style scoped lang="css"> 177 <style scoped lang="css">
171 #login { 178 #login {
172 width: 100%; 179 width: 100%;
173 position: absolute; 180 position: absolute;
174 top: 0; 181 top: 0;
175 left: 0; 182 left: 0;
176 content: ""; 183 content: "";
177 z-index: 0; 184 z-index: 0;
178 } 185 }
179 </style> 186 </style>
180 <style scoped> 187 <style scoped>
181 .schoolLogo { 188 .schoolLogo {
182 height: 60%; 189 height: 60%;
183 padding-left: 31%; 190 padding-left: 31%;
184 } 191 }
185 /* img { 192 /* img {
186 position: absolute; 193 position: absolute;
187 top: 13px; 194 top: 13px;
188 left: 8px; 195 left: 8px;
189 } */ 196 } */
190 .v-btn--large { 197 .v-btn--large {
191 padding: 0px 84px; 198 padding: 0px 84px;
192 } 199 }
src/pages/Course/course.vue
File was created 1 <template>
2 <v-container fluid class="body-color">
3 <!-- ****** EDITS COURSES DETAILS ****** -->
4 <v-dialog v-model="editStudentDialog" max-width="600px" scrollable>
5 <v-card flat class="card-style pa-2" dark>
6 <v-layout>
7 <v-flex xs12>
8 <label class="title text-xs-center">Edit Course</label>
9 <v-icon size="24" class="right" @click="editStudentDialog = false">cancel</v-icon>
10 </v-flex>
11 </v-layout>
12 <v-card-text>
13 <v-form ref="form">
14 <v-container fluid>
15 <v-layout>
16 <v-flex xs12 class="text-xs-center text-sm-center text-md-center text-lg-center">
17 <v-avatar size="100px" v-if="!editedItem.courseImageUrl && !editImageUrl">
18 <img src="/static/icon/user.png" />
19 </v-avatar>
20 <img
21 :src="editedItem.courseImageUrl"
22 v-else-if="editedItem.courseImageUrl && !editImageUrl"
23 height="150"
24 style="border-radius:50%; width:150px"
25 />
26 <img
27 v-if="editImageUrl"
28 :src="editImageUrl"
29 style="border-radius:50%; width:150px;height:150px"
30 />
31 <input
32 type="file"
33 style="display: none"
34 ref="editDataImage"
35 accept="image/*"
36 @change="onEditFilePicked"
37 />
38 </v-flex>
39 </v-layout>
40 <v-layout wrap>
41 <v-flex xs12 sm12>
42 <v-layout>
43 <v-flex xs4 sm5 class="pt-4 subheading">
44 <label class="right hidden-xs-only hidden-sm-only">Select Class:</label>
45 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Class:</label>
46 </v-flex>
47 <v-flex xs8 sm7 class="ml-3">
48 <v-select
49 :items="addclass"
50 label="Select Class"
51 v-model="editedItem.select"
52 item-text="classNum"
53 item-value="_id"
54 name="Select Class"
55 required
56 ></v-select>
57 </v-flex>
58 </v-layout>
59 <v-layout>
60 <v-flex xs4 sm5 class="pt-4 subheading">
61 <label class="right hidden-xs-only hidden-sm-only">Course Name:</label>
62 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Course:</label>
63 </v-flex>
64 <v-flex xs8 sm7 class="ml-3">
65 <v-text-field
66 v-model="editedItem.coursrName"
67 placeholder="fill your Course Name"
68 type="text"
69 required
70 ></v-text-field>
71 </v-flex>
72 </v-layout>
73 <v-layout>
74 <v-flex xs4 sm5 class="pt-4 subheading">
75 <label class="right hidden-xs-only hidden-sm-only">Upload Image:</label>
76 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Upload:</label>
77 </v-flex>
78 <v-flex xs8 sm7 class="ml-3">
79 <v-text-field
80 label="Select Image"
81 @click="pickEditFile"
82 v-model="editImageName"
83 append-icon="attach_file"
84 ></v-text-field>
85 </v-flex>
86 </v-layout>
87 </v-flex>
88 </v-layout>
89 <v-layout>
90 <v-flex xs12 sm12 class="px-0 mx-0">
91 <v-layout class="right">
92 <v-btn @click="save" round dark :loading="editLoading" class="add-button">Save</v-btn>
93 </v-layout>
94 </v-flex>
95 </v-layout>
96 </v-container>
97 </v-form>
98 </v-card-text>
99 </v-card>
100 </v-dialog>
101
102 <!-- ****** PROFILE VIEW STUDENTS DEATILS ****** -->
103
104 <v-dialog v-model="profileStudentDialog" max-width="600px" scrollable>
105 <v-card flat class="card-style pa-3" dark>
106 <v-layout>
107 <v-flex xs12>
108 <label class="title text-xs-center">View Course</label>
109 <v-icon size="24" class="right" @click="profileStudentDialog = false">cancel</v-icon>
110 </v-flex>
111 </v-layout>
112 <v-card-text>
113 <v-flex align-center justify-center layout text-xs-center class="mt-3">
114 <v-avatar size="100px">
115 <img src="/static/icon/user.png" v-if="!editedItem.courseImageUrl" />
116 <img :src="editedItem.courseImageUrl" v-else-if="editedItem.courseImageUrl" />
117 </v-avatar>
118 </v-flex>
119 <v-container grid-list-md>
120 <v-layout wrap>
121 <v-flex xs12>
122 <v-layout>
123 <v-flex xs6 sm6>
124 <h5 class="right my-1">
125 <b>Course :</b>
126 </h5>
127 </v-flex>
128 <v-flex sm6 xs6>
129 <h5 class="my-1 left">{{ editedItem.coursrName }}</h5>
130 </v-flex>
131 </v-layout>
132 </v-flex>
133 </v-layout>
134 </v-container>
135 </v-card-text>
136 </v-card>
137 </v-dialog>
138
139 <!-- ****** STUDENTS TABLE ****** -->
140 <v-toolbar color="transparent" flat>
141 <v-btn
142 fab
143 dark
144 class="open-dialog-button hidden-xl-only hidden-md-only hidden-lg-only"
145 small
146 @click="addCourseDialog = true"
147 >
148 <v-icon dark>add</v-icon>
149 </v-btn>
150 <v-btn
151 round
152 class="open-dialog-button hidden-sm-only hidden-xs-only"
153 dark
154 @click="addCourseDialog = true"
155 >
156 <v-icon class="white--text pr-1" size="20">add</v-icon>Add Course
157 </v-btn>
158 <v-card-actions class="hidden-xs-only hidden-sm-only">
159 <v-flex md13 lg12>
160 <v-layout>
161 <v-flex lg6 md6>
162 <v-select
163 :items="addclass"
164 label="Select Class"
165 v-model="selectStudents.select"
166 item-text="classNum"
167 item-value="_id"
168 name="Select Class"
169 :rules="classRules"
170 required
171 class="ml-2"
172 ></v-select>
173 </v-flex>
174 </v-layout>
175 </v-flex>
176 </v-card-actions>
177 <v-spacer></v-spacer>
178 <v-btn
179 @click="getCourses()"
180 round
181 dark
182 :loading="loading"
183 class="add-button hidden-xs-only hidden-sm-only"
184 >Find</v-btn>
185 <v-card-title class="body-1" v-show="show">
186 <v-btn icon large flat @click="displaySearch">
187 <v-avatar size="27">
188 <img src="/static/icon/search.png" alt="icon" />
189 </v-avatar>
190 </v-btn>
191 </v-card-title>
192 <v-flex xs8 sm7 lg2 md3 v-show="showSearch">
193 <v-layout>
194 <v-text-field v-model="search" label="Search" prepend-inner-icon="search" color="primary"></v-text-field>
195 <v-icon @click="closeSearch" color="error">close</v-icon>
196 </v-layout>
197 </v-flex>
198 </v-toolbar>
199 <v-card flat class="elevation-0 transparent">
200 <v-flex class="hidden-xl-only hidden-lg-only hidden-md-only">
201 <v-layout>
202 <!-- <v-flex xs4>
203 <label class="right mt-4">Select Class:</label>
204 </v-flex>-->
205 <v-flex xs12>
206 <v-select
207 :items="addclass"
208 label="Select Class"
209 v-model="selectStudents.select"
210 item-text="classNum"
211 item-value="_id"
212 name="Select Class"
213 :rules="classRules"
214 class="px-2"
215 ></v-select>
216 </v-flex>
217 </v-layout>
218 <v-layout>
219 <v-flex xs5 class="mx-auto mb-2">
220 <v-btn @click="getCourses()" block round dark :loading="loading" class="add-button">Find</v-btn>
221 </v-flex>
222 </v-layout>
223 </v-flex>
224 </v-card>
225 <v-data-table
226 :headers="headers"
227 :items="courseData"
228 :pagination.sync="pagination"
229 :search="search"
230 >
231 <template slot="items" slot-scope="props">
232 <tr class="tr">
233 <td class="text-xs-center td td-row">
234 <v-avatar size="40">
235 <img :src="props.item.courseImageUrl" v-if="props.item.courseImageUrl" />
236 <img src="/static/icon/user.png" v-else-if="!props.item.courseImageUrl" />
237 </v-avatar>
238 </td>
239 <td class="text-xs-center td td-row">{{ props.item.coursrName}}</td>
240 <td class="text-xs-center td td-row">
241 <span>
242 <v-tooltip top>
243 <img
244 slot="activator"
245 style="cursor:pointer; width:25px; height:25px; "
246 class="mr-3"
247 @click="profile(props.item)"
248 src="/static/icon/view.png"
249 />
250 <span>View</span>
251 </v-tooltip>
252 <v-tooltip top>
253 <img
254 slot="activator"
255 style="cursor:pointer; width:20px; height:18px; "
256 class="mr-3"
257 @click="editItem(props.item)"
258 src="/static/icon/edit.png"
259 />
260 <span>Edit</span>
261 </v-tooltip>
262 <v-tooltip top>
263 <img
264 slot="activator"
265 style="cursor:pointer; width:20px; height:20px; "
266 class="mr-3"
267 @click="deleteItem(props.item)"
268 src="/static/icon/delete.png"
269 />
270 <span>Delete</span>
271 </v-tooltip>
272 </span>
273 </td>
274 </tr>
275 </template>
276 <v-alert
277 slot="no-results"
278 :value="true"
279 color="error"
280 icon="warning"
281 >Your search for "{{ search }}" found no results.</v-alert>
282 </v-data-table>
283 <!-- ****** Add CourseS DETAILS****** -->
284 <v-dialog v-model="addCourseDialog" max-width="500">
285 <v-card flat class="card-style pa-2" dark>
286 <v-layout>
287 <v-flex xs12>
288 <label class="title text-xs-center">Add Course</label>
289 <v-icon size="24" class="right" @click="addCourseDialog = false">cancel</v-icon>
290 </v-flex>
291 </v-layout>
292 <v-container fluid>
293 <v-layout align-center>
294 <v-flex xs12>
295 <v-flex xs12 sm12>
296 <v-form ref="form" v-model="valid" lazy-validation>
297 <v-layout>
298 <v-flex
299 xs12
300 class="text-xs-center text-sm-center text-md-center text-lg-center"
301 >
302 <v-avatar size="100px">
303 <img src="/static/icon/user.png" v-if="!imageUrl" />
304 </v-avatar>
305 <input
306 type="file"
307 style="display: none"
308 ref="image"
309 accept="image/*"
310 @change="onFilePicked"
311 />
312 <img
313 :src="imageData.imageUrl"
314 height="150"
315 v-if="imageUrl"
316 style="border-radius:50%; width:200px"
317 />
318 </v-flex>
319 </v-layout>
320 <v-layout wrap>
321 <v-flex xs12 sm12>
322 <v-layout>
323 <v-flex x4 sm4 class="pt-4 subheading">
324 <label class="right hidden-xs-only hidden-sm-only">Select Class:</label>
325 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Class:</label>
326 </v-flex>
327 <v-flex xs8 sm8 class="ml-3">
328 <v-select
329 :items="addclass"
330 label="Select Class"
331 v-model="addCourses.select"
332 item-text="classNum"
333 item-value="_id"
334 name="Select Class"
335 :rules="classRules"
336 @change="getSections(addCourses.select)"
337 required
338 ></v-select>
339 </v-flex>
340 </v-layout>
341 </v-flex>
342 </v-layout>
343 <v-layout wrap>
344 <v-flex xs12 sm12>
345 <v-layout>
346 <v-flex xs4 sm4 class="pt-4 subheading">
347 <label class="right hidden-xs-only hidden-sm-only">Course Name:</label>
348 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Course:</label>
349 </v-flex>
350 <v-flex xs8 sm8 class="ml-3">
351 <v-text-field
352 v-model="addCourses.coursrName"
353 placeholder="fill your Course name"
354 type="text"
355 :rules="courseRules"
356 required
357 ></v-text-field>
358 </v-flex>
359 </v-layout>
360 </v-flex>
361 <v-flex xs12 sm12>
362 <v-layout>
363 <v-flex xs4 class="pt-4 subheading">
364 <label class="right hidden-xs-only hidden-sm-only">Upload Image:</label>
365 <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Upload :</label>
366 </v-flex>
367 <v-flex xs8 class="ml-3">
368 <v-text-field
369 label="Select Image"
370 @click="pickFile"
371 v-model="imageName"
372 append-icon="attach_file"
373 ></v-text-field>
374 </v-flex>
375 </v-layout>
376 </v-flex>
377 </v-layout>
378 <v-layout>
379 <v-flex xs12 sm12>
380 <v-layout class="right">
381 <v-btn @click="submit" round dark :loading="loading" class="add-button">Add</v-btn>
382 </v-layout>
383 </v-flex>
384 </v-layout>
385 </v-form>
386 </v-flex>
387 </v-flex>
388 </v-layout>
389 </v-container>
390 </v-card>
391 </v-dialog>
392 <v-snackbar
393 :timeout="timeout"
394 :top="y === 'top'"
395 :right="x === 'right'"
396 :vertical="mode === 'vertical'"
397 v-model="snackbar"
398 :color="color"
399 >{{ text }}</v-snackbar>
400 <div class="loader" v-if="showLoader">
401 <v-progress-circular indeterminate color="white"></v-progress-circular>
402 </div>
403 </v-container>
404 </template>
405
406 <script>
407 import http from "@/Services/http.js";
408 import moment from "moment";
409 import countryList from "@/script/country.js";
410 import parent from "@/script/parents.js";
411
412 export default {
413 data: () => ({
414 showNext: false,
415 snackbar: false,
416 y: "top",
417 x: "right",
418 role: "",
419 mode: "",
420 append: "",
421 timeout: 3000,
422 text: "",
423 show: true,
424 color: "",
425 showSearch: false,
426 showLoader: false,
427 loading: false,
428 editLoading: false,
429 date: null,
430 search: "",
431 menu: false,
432 menu1: false,
433 editStudentDialog: false,
434 profileStudentDialog: false,
435 addCourseDialog: false,
436 valid: true,
437 addclass: [],
438 addSection: [],
439 pagination: {
440 rowsPerPage: 10
441 },
442 imageData: {},
443 imageName: "",
444 imageUrl: "",
445 imageFile: "",
446 editImageName: "",
447 editImageUrl: "",
448 courseRules: [v => !!v || " Course Name is required"],
449 classRules: [v => !!v || " Class Name is required"],
450 sectionRules: [v => !!v || " Section Name is required"],
451 errorMessages: "",
452 headers: [
453 {
454 text: "Image",
455 value: "courseImageUrl",
456 sortable: false,
457 align: "center"
458 },
459 {
460 text: "Course",
461 value: "course",
462 sortable: false,
463 align: "center"
464 },
465 { text: "Action", value: "", sortable: false, align: "center" }
466 ],
467 courseData: [],
468 editedIndex: -1,
469 addCourses: {},
470 selectStudents: {
471 select: "",
472 selectSection: ""
473 },
474 editedItem: {}
475 }),
476 methods: {
477 getCourses() {
478 this.showLoader = true;
479 http()
480 .get("/getCourseesList", {
481 params: {
482 classId: this.selectStudents.select
483 }
484 })
485 .then(response => {
486 this.courseData = response.data.data;
487 this.showLoader = false;
488 })
489 .catch(err => {
490 console.log("err====>", err);
491 this.showLoader = false;
492 });
493 },
494 getSections(_id) {
495 var token = this.$store.state.token;
496 this.showLoader = true;
497 http()
498 .get(
499 "/getSectionsList",
500 { params: { classId: _id } },
501 {
502 headers: { Authorization: "Bearer " + token }
503 }
504 )
505 .then(response => {
506 this.addSection = response.data.data;
507 this.showLoader = false;
508 })
509 .catch(err => {
510 this.showLoader = false;
511 });
512 },
513 pickFile() {
514 this.$refs.image.click();
515 },
516 pickEditFile() {
517 this.$refs.editDataImage.click();
518 },
519 dates: function(date) {
520 return moment(date).format("MMMM DD, YYYY");
521 return date;
522 },
523 onFilePicked(e) {
524 // console.log(e)
525 const files = e.target.files;
526 this.imageData.upload = e.target.files[0];
527 if (files[0] !== undefined) {
528 this.imageName = files[0].name;
529 if (this.imageName.lastIndexOf(".") <= 0) {
530 return;
531 }
532 const fr = new FileReader();
533 fr.readAsDataURL(files[0]);
534 fr.addEventListener("load", () => {
535 this.imageUrl = fr.result;
536 this.imageFile = files[0]; // this is an image file that can be sent to server...
537 this.imageData.imageUrl = URL.createObjectURL(this.imageFile);
538 });
539 } else {
540 this.imageName = "";
541 this.imageFile = "";
542 this.imageUrl = "";
543 }
544 },
545 onEditFilePicked(e) {
546 console.log(e);
547 const files = e.target.files;
548 if (files[0] !== undefined) {
549 this.editImageName = files[0].name;
550 console.log("this.editImageName", this.editImageName);
551
552 if (this.editImageName.lastIndexOf(".") <= 0) {
553 return;
554 }
555 const fr = new FileReader();
556 fr.readAsDataURL(files[0]);
557 fr.addEventListener("load", () => {
558 this.editImageUrl = fr.result;
559 this.editiImageFile = files[0]; // this is an image file that can be sent to server...
560 });
561 } else {
562 this.editImageName = "";
563 this.editiImageFile = "";
564 }
565 },
566 editItem(item) {
567 this.editedIndex = this.courseData.indexOf(item);
568 this.editedItem = Object.assign({}, item);
569 this.editStudentDialog = true;
570 },
571 profile(item) {
572 this.editedIndex = this.courseData.indexOf(item);
573 this.editedItem = Object.assign({}, item);
574 this.profileStudentDialog = true;
575 },
576 deleteItem(item) {
577 let deleteCourse = {
578 courseId: item._id
579 };
580 http()
581 .delete(
582 "/deleteCourse",
583 confirm("Are you sure you want to delete this?") && {
584 params: deleteCourse
585 }
586 )
587 .then(response => {
588 this.snackbar = true;
589 this.text = response.data.message;
590 this.color = "green";
591 this.getCourses();
592 })
593 .catch(error => {
594 this.snackbar = true;
595 this.text = error.response.data.message;
596 this.color = "error";
597 });
598 },
599 close() {
600 this.editStudentDialog = false;
601 },
602 closeStudentProfile() {
603 this.profileStudentDialog = false;
604 },
605 submit() {
606 if (this.$refs.form.validate()) {
607 let addCourse = {
608 classId: this.addCourses.select,
609 sectionId: this.addCourses.selectSection,
610 coursrName: this.addCourses.coursrName
611 };
612 if (this.imageUrl) {
613 var str = this.imageUrl;
614 const [baseUrl, imageUrl] = str.split(/,/);
615 addCourse.upload = imageUrl;
616 }
617 this.loading = true;
618 http()
619 .post("/createCourse", addCourse)
620 .then(response => {
621 this.snackbar = true;
622 this.text = "New Course added successfully";
623 this.color = "green";
624 this.addCourseDialog = false;
625 this.clear();
626 this.loading = false;
627 })
628 .catch(error => {
629 this.snackbar = true;
630 this.text = error.response.data.message;
631 this.color = "error";
632 this.loading = false;
633 });
634 }
635 },
636 clear() {
637 this.$refs.form.reset();
638 this.imageUrl = "";
639 },
640 save() {
641 let editCourse = {
642 courseId: this.editedItem._id,
643 coursrName: this.editedItem.coursrName,
644 classId: this.editedItem.select
645 };
646 if (this.editImageUrl) {
647 var str = this.editImageUrl;
648 const [baseUrl, editImageUrl] = str.split(/,/);
649 editCourse.upload = editImageUrl;
650 }
651 this.editLoading = true;
652 http()
653 .put("/updateCourse", editCourse)
654 .then(response => {
655 this.snackbar = true;
656 this.text = response.data.message;
657 this.color = "green";
658 this.imageUrl = "";
659 this.getCourses();
660 this.close();
661 this.editLoading = false;
662 })
663 .catch(error => {
664 this.snackbar = true;
665 this.text = error.response.data.statusText;
666 this.color = "error";
667 this.editLoading = false;
668 });
669 },
670 displaySearch() {
671 this.show = false;
672 this.showSearch = true;
673 },
674 closeSearch() {
675 this.showSearch = false;
676 this.show = true;
677 this.search = "";
678 }
679 },
680 mounted() {
681 var token = this.$store.state.token;
682 http()
683 .get("/getClassesList", {
684 headers: { Authorization: "Bearer " + token }
685 })
686 .then(response => {
687 this.addclass = response.data.data;
688 })
689 .catch(error => {
690 this.showLoader = false;
691 if (error.response.status === 401) {
692 this.$router.replace({ path: "/" });
693 this.$store.dispatch("setToken", null);
694 this.$store.dispatch("Id", null);
695 this.$store.dispatch("Role", null);
696 }
697 });
698 }
699 };
700 </script>
701 <style scoped>
702 .active {
703 background-color: gray;
704 color: white !important;
705 }
706 .activebtn {
707 color: black !important;
708 }
709 </style>
src/pages/Course/enrollStudents.vue
File was created 1 <template>
2 <v-container fluid class="body-color">
3 <!-- ****** STUDENTS TABLE ****** -->
4 <v-toolbar color="transparent" flat>
5 <v-spacer></v-spacer>
6 <v-flex xs12 sm4 md2>
7 <v-select
8 small
9 :items="addclass"
10 label="Select Class"
11 v-model="getReport.classId"
12 item-text="classNum"
13 item-value="_id"
14 name="Select Class"
15 @change="getCourses(getReport.classId)"
16 class="mr-2"
17 required
18 ></v-select>
19 </v-flex>
20 <v-flex xs12 sm4 md2>
21 <v-select
22 :items="courseData"
23 label="Select Course"
24 v-model="getReport.courseId"
25 item-text="coursrName"
26 item-value="_id"
27 required
28 class="ml-2"
29 @change="getStudentTable(getReport.courseId)"
30 ></v-select>
31 </v-flex>
32 <v-card-title class="body-1" v-show="show">
33 <v-btn icon large flat @click="displaySearch">
34 <v-avatar size="27">
35 <img src="/static/icon/search.png" alt="icon" />
36 </v-avatar>
37 </v-btn>
38 </v-card-title>
39 <v-flex xs8 sm8 md3 lg2 v-show="showSearch">
40 <v-layout>
41 <v-text-field v-model="search" label="Search" prepend-inner-icon="search" color="primary"></v-text-field>
42 <v-icon @click="closeSearch" color="error">close</v-icon>
43 </v-layout>
44 </v-flex>
45 </v-toolbar>
46 <v-data-table
47 :headers="headers"
48 :items="studentsData"
49 :pagination.sync="pagination"
50 :search="search"
51 select-all
52 v-model="selected"
53 item-key="name"
54 >
55 <template slot="items" slot-scope="props">
56 <tr class="tr" :active="props.selected" @click="props.selected = !props.selected">
57 <td class="text-xs-center td td-row">
58 <v-checkbox
59 :input-value="props.selected"
60 @change="selectParticularStudent(props.item._id)"
61 primary
62 hide-details
63 ></v-checkbox>
64 </td>
65 <td class="text-xs-center td td-row">
66 <v-avatar size="40">
67 <img :src="props.item.profilePicUrl" v-if="props.item.profilePicUrl" />
68 <img src="/static/icon/user.png" v-else-if="!props.item.profilePicUrl" />
69 </v-avatar>
70 </td>
71 <td class="text-xs-center td td-row">{{ props.item.name}}</td>
72 <td class="text-xs-center td td-row">{{ props.item.fatherCellNo}}</td>
73 <td class="text-xs-center td td-row">{{ props.item.email }}</td>
74 </tr>
75 </template>
76 <template slot="headers" slot-scope="props">
77 <tr>
78 <th>
79 <v-checkbox
80 :input-value="props.all"
81 :indeterminate="props.indeterminate"
82 primary
83 hide-details
84 @click.native="toggleAll"
85 ></v-checkbox>
86 </th>
87 <th
88 v-for="header in props.headers"
89 :key="header.text"
90 :class="['column sortable', pagination.descending ? 'desc' : 'asc', header.value === pagination.sortBy ? 'active' : '']"
91 @click="changeSort(header.value)"
92 >
93 <v-icon small>arrow_upward</v-icon>
94 {{ header.text }}
95 </th>
96 </tr>
97 </template>
98 <v-alert
99 slot="no-results"
100 :value="true"
101 color="error"
102 icon="warning"
103 >Your search for "{{ search }}" found no results.</v-alert>
104 </v-data-table>
105 <v-snackbar
106 :timeout="timeout"
107 :top="y === 'top'"
108 :right="x === 'right'"
109 :vertical="mode === 'vertical'"
110 v-model="snackbar"
111 color="success"
112 >{{ text }}</v-snackbar>
113 <div class="loader" v-if="showLoader">
114 <v-progress-circular indeterminate color="white"></v-progress-circular>
115 </div>
116 </v-container>
117 </template>
118
119 <script>
120 import http from "@/Services/http.js";
121 import moment from "moment";
122
123 export default {
124 data: () => ({
125 snackbar: false,
126 y: "top",
127 x: "right",
128 mode: "",
129 timeout: 3000,
130 text: "",
131 show: true,
132 showSearch: false,
133 showLoader: false,
134 loading: false,
135 date: null,
136 search: "",
137 addclass: [],
138 pagination: {
139 rowsPerPage: 10
140 },
141 headers: [
142 {
143 text: "Profile Pic",
144 value: "profilprofilePicUrlePicUrl",
145 sortable: false,
146 align: "center"
147 },
148 { text: "Name", value: "name", sortable: false, align: "center" },
149 {
150 text: "Mobile No",
151 value: "fatherCellNo",
152 sortable: false,
153 align: "center"
154 },
155 { text: "Email", value: "email", sortable: false, align: "center" }
156 // { text: "Action", value: "", sortable: false, align: "center" }
157 ],
158 token: "",
159 selectStudents: {
160 select: "",
161 selectSection: ""
162 },
163
164 role: "",
165 schoolRole: "",
166 menu: false,
167 valid: true,
168
169 getReport: {},
170 studentsData: [],
171 courseData: [],
172 addSection: [],
173 selected: [],
174 SectionName: ["A", "B", "C", "D", "E", "F"],
175 classRules: [v => !!v || "Class is required"],
176 sectionRules: [v => !!v || "Class is required"],
177 studentRules: [v => !!v || "Student is required"],
178 dataValid: [v => !!v || "Date is required"]
179 }),
180 methods: {
181 save(date) {
182 this.$refs.menu.save(date);
183 },
184 getAllClass() {
185 http()
186 .get("/getClassesList", {
187 headers: { Authorization: "Bearer " + this.token }
188 })
189 .then(response => {
190 this.addclass = response.data.data;
191 })
192 .catch(error => {
193 // console.log("err====>", err);
194 // this.$router.replace({ path: "/" });
195 });
196 },
197 getCourses(classId) {
198 this.showLoader = true;
199 http()
200 .get("/getCourseesList", {
201 params: {
202 classId: classId
203 }
204 })
205 .then(response => {
206 this.courseData = response.data.data;
207 this.showLoader = false;
208 })
209 .catch(err => {
210 console.log("err====>", err);
211 this.showLoader = false;
212 });
213 },
214 getStudents() {
215 this.showLoader = true;
216 http()
217 .get("/getStudentsList", {
218 params: {
219 classId: this.getReport.classId
220 }
221 })
222 .then(response => {
223 this.studentsData = response.data.data;
224 this.showLoader = false;
225 // this.addStudentAttendenceDialog = false;
226 var attendence = "";
227 for (let i = 0; i < this.studentsData.length; i++) {
228 this.studentsData[i].attendence = true;
229 }
230 })
231 .catch(error => {
232 console.log("err====>", error);
233 this.showLoader = false;
234 });
235 },
236 getStudentTable(id) {
237 console.log("id", this.getReport.courseId);
238 this.getStudents();
239 },
240 update() {
241 var studentsAttendence = [];
242 for (var j = 0; j < this.studentsData.length; j++) {
243 studentsAttendence.push({
244 studentId: this.studentsData[j]._id,
245 isPresent: this.studentsData[j].attendence
246 });
247 }
248 if (this.$refs.form.validate()) {
249 let attendanceData = {
250 sectionId: this.getReport.sectionId,
251 date: this.date,
252 students: studentsAttendence
253 };
254 http()
255 .put("/updateAttendance", attendanceData)
256 .then(response => {
257 this.snackbar = true;
258 this.text = response.data.message;
259 this.addStudentAttendenceDialog = false;
260 })
261 .catch(error => {
262 this.snackbar = true;
263 this.text = error.response.data.message;
264 });
265 }
266 },
267 toggleAll() {
268 if (this.selected.length) this.selected = [];
269 else this.selected = this.studentsData.slice();
270 console.log("this.selected", this.selected);
271 console.log("selected====", selected);
272 let selectedStudentsArray = [];
273 selectedStudentsArray.push(selected.id);
274 var payload = {
275 courseId: this.getReport.courseId,
276 enrollStudents: selectedStudentsArray
277 };
278 http()
279 .put("/enrollStudents", payload)
280 .then(response => {
281 this.snackbar = true;
282 this.text = response.data.message;
283 })
284 .catch(error => {
285 this.snackbar = true;
286 this.text = error.response.data.message;
287 });
288 },
289 selectParticularStudent(selected) {
290 console.log("selected====", selected);
291 let selectedStudentsArray = [];
292 selectedStudentsArray.push(selected);
293 var payload = {
294 courseId: this.getReport.courseId,
295 enrollStudents: selectedStudentsArray
296 };
297 http()
298 .put("/enrollStudents", payload)
299 .then(response => {
300 this.snackbar = true;
301 this.text = response.data.message;
302 })
303 .catch(error => {
304 this.snackbar = true;
305 this.text = error.response.data.message;
306 });
307 },
308 changeSort(column) {
309 if (this.pagination.sortBy === column) {
310 this.pagination.descending = !this.pagination.descending;
311 } else {
312 this.pagination.sortBy = column;
313 this.pagination.descending = false;
314 }
315 },
316 displaySearch() {
317 this.show = false;
318 this.showSearch = true;
319 },
320 closeSearch() {
321 this.showSearch = false;
322 this.show = true;
323 this.search = "";
324 }
325 },
326 mounted() {
327 // this.getStudentList();
328 this.token = this.$store.state.token;
329 this.role = this.$store.state.role;
330 this.getAllClass();
331 }
332 };
333 </script>
src/pages/Dashboard/dashboard.vue
1 <template> 1 <template>
2 <v-app id="pages-dasboard"> 2 <v-app id="pages-dasboard">
3 <!-- ****** VIEW PROFIL NOTICE BOARD ****** --> 3 <!-- ****** VIEW PROFIL NOTICE BOARD ****** -->
4 <!-- <v-dialog v-model="dialogNotice" max-width="940px" scrollable> 4 <!-- <v-dialog v-model="dialogNotice" max-width="940px" scrollable>
5 <v-card> 5 <v-card>
6 <v-toolbar color="grey lighten-2" flat> 6 <v-toolbar color="grey lighten-2" flat>
7 <v-spacer></v-spacer> 7 <v-spacer></v-spacer>
8 <v-toolbar-title> 8 <v-toolbar-title>
9 <h3>Notice Board</h3> 9 <h3>Notice Board</h3>
10 </v-toolbar-title> 10 </v-toolbar-title>
11 <v-spacer></v-spacer> 11 <v-spacer></v-spacer>
12 <v-icon @click="closeNotice">close</v-icon> 12 <v-icon @click="closeNotice">close</v-icon>
13 </v-toolbar> 13 </v-toolbar>
14 <v-card-text> 14 <v-card-text>
15 <v-layout> 15 <v-layout>
16 <v-flex align-center justify-center layout text-xs-center class="mt-2"> 16 <v-flex align-center justify-center layout text-xs-center class="mt-2">
17 <img src="/static/icon/user.png" width="70px" v-if="!notice.eventImageUrl" /> 17 <img src="/static/icon/user.png" width="70px" v-if="!notice.eventImageUrl" />
18 <img :src="notice.eventImageUrl" width="280px" v-else-if="notice.eventImageUrl" /> 18 <img :src="notice.eventImageUrl" width="280px" v-else-if="notice.eventImageUrl" />
19 </v-flex> 19 </v-flex>
20 </v-layout> 20 </v-layout>
21 <v-container grid-list-md> 21 <v-container grid-list-md>
22 <v-layout wrap> 22 <v-layout wrap>
23 <v-flex> 23 <v-flex>
24 <v-layout> 24 <v-layout>
25 <v-flex xs5 sm6> 25 <v-flex xs5 sm6>
26 <h5 class="right my-1"> 26 <h5 class="right my-1">
27 <b>Title:</b> 27 <b>Title:</b>
28 </h5> 28 </h5>
29 </v-flex> 29 </v-flex>
30 <v-flex sm6 xs8> 30 <v-flex sm6 xs8>
31 <h5 class="my-1">{{ notice.title }}</h5> 31 <h5 class="my-1">{{ notice.title }}</h5>
32 </v-flex> 32 </v-flex>
33 </v-layout> 33 </v-layout>
34 <v-layout> 34 <v-layout>
35 <v-flex xs5 sm6> 35 <v-flex xs5 sm6>
36 <h5 class="right my-1"> 36 <h5 class="right my-1">
37 <b>Description:</b> 37 <b>Description:</b>
38 </h5> 38 </h5>
39 </v-flex> 39 </v-flex>
40 <v-flex sm6 xs8> 40 <v-flex sm6 xs8>
41 <h5 class="my-1">{{ notice.description }}</h5> 41 <h5 class="my-1">{{ notice.description }}</h5>
42 </v-flex> 42 </v-flex>
43 </v-layout> 43 </v-layout>
44 </v-flex> 44 </v-flex>
45 </v-layout> 45 </v-layout>
46 </v-container> 46 </v-container>
47 </v-card-text> 47 </v-card-text>
48 </v-card> 48 </v-card>
49 </v-dialog>--> 49 </v-dialog>-->
50 <!-- <v-container fluid grid-list-xl> --> 50 <!-- <v-container fluid grid-list-xl> -->
51 <v-layout wrap> 51 <v-layout wrap>
52 <v-flex xs12> 52 <v-flex xs12>
53 <v-layout wrap row> 53 <v-layout wrap row>
54 <!-- ***** Total Students ***** --> 54 <!-- ***** Total Students ***** -->
55 <v-flex xs12 sm12 md9> 55 <v-flex xs12 sm12 md9>
56 <v-container fluid grid-list-xl> 56 <v-container fluid grid-list-xl>
57 <v-flex xs12 sm12 md12> 57 <v-flex xs12 sm12 md12>
58 <v-layout wrap class> 58 <v-layout wrap class>
59 <v-flex xs12 sm12 md3> 59 <v-flex xs12 sm12 md3>
60 <router-link :to="{ name:'Students' }"> 60 <router-link :to="{ name:'Students' }">
61 <v-card class="card pink-bgcolor"> 61 <v-card class="card pink-bgcolor">
62 <v-card-title primary-title class="titleCard white--text py-3">Students</v-card-title> 62 <v-card-title primary-title class="titleCard white--text py-3">Students</v-card-title>
63 <img src="/static/icon/student.png" class="ml-2" width="40" alt="icons" /> 63 <img src="/static/icon/student.png" class="ml-2" width="40" alt="icons" />
64 <v-card-title class="headline py-1 white--text">{{ students.length }}</v-card-title> 64 <v-card-title class="headline py-1 white--text">{{ students.length }}</v-card-title>
65 </v-card> 65 </v-card>
66 </router-link> 66 </router-link>
67 </v-flex> 67 </v-flex>
68 <!-- ***** Total Teachers***** --> 68 <!-- ***** Total Teachers***** -->
69 <v-flex xs12 sm12 md3> 69 <v-flex xs12 sm12 md3>
70 <router-link :to="{ name:'Teachers' }"> 70 <router-link :to="{ name:'Teachers' }">
71 <v-card flat class="card elevation-2 firozi-bgcolor"> 71 <v-card flat class="card elevation-2 firozi-bgcolor">
72 <v-card-title primary-title class="titleCard white--text py-3">Teachers</v-card-title> 72 <v-card-title primary-title class="titleCard white--text py-3">Teachers</v-card-title>
73 <img src="/static/icon/teacher.png" class="ml-2" width="40" alt="icons" /> 73 <img src="/static/icon/teacher.png" class="ml-2" width="40" alt="icons" />
74 74
75 <v-card-title class="headline py-1 white--text">{{ teachers.length }}</v-card-title> 75 <v-card-title class="headline py-1 white--text">{{ teachers.length }}</v-card-title>
76 </v-card> 76 </v-card>
77 </router-link> 77 </router-link>
78 </v-flex> 78 </v-flex>
79 <!-- ***** Total Parents ***** --> 79 <!-- ***** Total Parents ***** -->
80 <v-flex xs12 sm12 md3> 80 <v-flex xs12 sm12 md3>
81 <router-link :to="{ name:'Parents' }"> 81 <router-link :to="{ name:'Parents' }">
82 <v-card flat class="card yellow darken-3"> 82 <v-card flat class="card yellow darken-3">
83 <v-card-title primary-title class="titleCard white--text py-3">Parents</v-card-title> 83 <v-card-title primary-title class="titleCard white--text py-3">Parents</v-card-title>
84 <img src="/static/icon/parents.png" class="ml-3" width="40px" alt="icons" /> 84 <img src="/static/icon/parents.png" class="ml-3" width="40px" alt="icons" />
85 <v-card-title class="headline py-1 white--text">{{ parents.length }}</v-card-title> 85 <v-card-title class="headline py-1 white--text">{{ parents.length }}</v-card-title>
86 </v-card> 86 </v-card>
87 </router-link> 87 </router-link>
88 </v-flex> 88 </v-flex>
89 <!-- ***** Total Class***** --> 89 <!-- ***** Total Class***** -->
90 <v-flex xs12 sm12 md3> 90 <v-flex xs12 sm12 md3>
91 <router-link :to="{ name:'Class' }"> 91 <router-link :to="{ name:'Class' }">
92 <v-card flat class="card darkBlue-bgcolor"> 92 <v-card flat class="card darkBlue-bgcolor">
93 <v-card-title primary-title class="titleCard white--text py-3">Class</v-card-title> 93 <v-card-title primary-title class="titleCard white--text py-3">Class</v-card-title>
94 <img src="/static/icon/class.png" width="40" alt="icons" class="ml-2" /> 94 <img src="/static/icon/class.png" width="40" alt="icons" class="ml-2" />
95 <v-card-title class="headline py-1 white--text">{{ classes.length }}</v-card-title> 95 <v-card-title class="headline py-1 white--text">{{ classes.length }}</v-card-title>
96 </v-card> 96 </v-card>
97 </router-link> 97 </router-link>
98 </v-flex> 98 </v-flex>
99 </v-layout> 99 </v-layout>
100 </v-flex> 100 </v-flex>
101 <v-layout> 101 <v-layout>
102 <v-flex xs12> 102 <v-flex xs12>
103 <v-card class="card mt-2 account-Card"> 103 <v-card class="card mt-2 account-Card">
104 <h4> 104 <h4>
105 <b>Account</b> 105 <b>Account</b>
106 </h4> 106 </h4>
107 <v-layout wrap> 107 <v-layout wrap>
108 <v-flex xs12 sm12 md3> 108 <v-flex xs12 sm12 md3>
109 <v-list two-line> 109 <v-list two-line>
110 <template> 110 <template>
111 <v-list-tile> 111 <v-list-tile>
112 <v-list-tile-avatar> 112 <v-list-tile-avatar>
113 <v-icon class="account-circle darkBlue-color">panorama_fish_eye</v-icon> 113 <v-icon class="account-circle darkBlue-color">panorama_fish_eye</v-icon>
114 </v-list-tile-avatar> 114 </v-list-tile-avatar>
115 <v-list-tile-content> 115 <v-list-tile-content>
116 <v-list-tile-title class="mt-2"> 116 <v-list-tile-title class="mt-2">
117 <p class="subheading font-color">Fees</p> 117 <p class="subheading font-color">Fees</p>
118 </v-list-tile-title> 118 </v-list-tile-title>
119 <v-list-tile-title>Rs. {{ feeData.totalFees }}</v-list-tile-title> 119 <v-list-tile-title>Rs. {{ feeData.totalFees }}</v-list-tile-title>
120 </v-list-tile-content> 120 </v-list-tile-content>
121 </v-list-tile> 121 </v-list-tile>
122 <v-list-tile> 122 <v-list-tile>
123 <v-list-tile-avatar> 123 <v-list-tile-avatar>
124 <v-icon class="account-circle yellowDark-color">panorama_fish_eye</v-icon> 124 <v-icon class="account-circle yellowDark-color">panorama_fish_eye</v-icon>
125 </v-list-tile-avatar> 125 </v-list-tile-avatar>
126 <v-list-tile-content> 126 <v-list-tile-content>
127 <v-list-tile-title class="mt-2"> 127 <v-list-tile-title class="mt-2">
128 <p class="subheading font-color">Collection</p> 128 <p class="subheading font-color">Collection</p>
129 </v-list-tile-title> 129 </v-list-tile-title>
130 <v-list-tile-title>Rs. {{ feeData.totalCollection }}</v-list-tile-title> 130 <v-list-tile-title>Rs. {{ feeData.totalCollection }}</v-list-tile-title>
131 </v-list-tile-content> 131 </v-list-tile-content>
132 </v-list-tile> 132 </v-list-tile>
133 <v-list-tile> 133 <v-list-tile>
134 <v-list-tile-avatar> 134 <v-list-tile-avatar>
135 <v-icon class="account-circle pink-color">panorama_fish_eye</v-icon> 135 <v-icon class="account-circle pink-color">panorama_fish_eye</v-icon>
136 </v-list-tile-avatar> 136 </v-list-tile-avatar>
137 <v-list-tile-content> 137 <v-list-tile-content>
138 <v-list-tile-title class="mt-2"> 138 <v-list-tile-title class="mt-2">
139 <p class="subheading font-color">Expences</p> 139 <p class="subheading font-color">Expences</p>
140 </v-list-tile-title> 140 </v-list-tile-title>
141 <v-list-tile-title>Rs. {{ expenseData.sum }}</v-list-tile-title> 141 <v-list-tile-title>Rs. {{ expenseData.sum }}</v-list-tile-title>
142 </v-list-tile-content> 142 </v-list-tile-content>
143 </v-list-tile> 143 </v-list-tile>
144 </template> 144 </template>
145 </v-list> 145 </v-list>
146 </v-flex> 146 </v-flex>
147 <v-flex xs12 sm12 md9 lg9> 147 <v-flex xs12 sm12 md9 lg9>
148 <div id="chart"> 148 <div id="chart">
149 <div v-if="this.series"> 149 <div v-if="this.series">
150 <apexchart 150 <apexchart
151 type="bar" 151 type="bar"
152 height="250" 152 height="250"
153 style="max-width: 800px !important" 153 style="max-width: 800px !important"
154 :options="chartOptions" 154 :options="chartOptions"
155 :series="series" 155 :series="series"
156 v-show="true" 156 v-show="true"
157 ></apexchart> 157 ></apexchart>
158 </div> 158 </div>
159 </div> 159 </div>
160 </v-flex> 160 </v-flex>
161 </v-layout> 161 </v-layout>
162 </v-card> 162 </v-card>
163 </v-flex> 163 </v-flex>
164 </v-layout> 164 </v-layout>
165 <v-card class="mt-2 card"> 165 <v-card class="mt-2 card">
166 <!-- <full-calendar 166 <!-- <full-calendar
167 ref="calendar" 167 ref="calendar"
168 defaultView="month" 168 defaultView="month"
169 droppable="false" 169 droppable="false"
170 :events="events" 170 :events="events"
171 :config="config" 171 :config="config"
172 ></full-calendar>--> 172 ></full-calendar>-->
173 <h4 class="pa-3"> 173 <h4 class="pa-3">
174 <b>Notice</b> 174 <b>Notice</b>
175 </h4> 175 </h4>
176 176
177 <v-data-table 177 <v-data-table
178 :items="noticeData" 178 :items="noticeData"
179 class="elevation-0" 179 class="elevation-0"
180 flat 180 flat
181 hide-actions 181 hide-actions
182 hide-headers 182 hide-headers
183 style="border-spacing: 0 !important;" 183 style="border-spacing: 0 !important;"
184 > 184 >
185 <template 185 <template
186 slot="items" 186 slot="items"
187 slot-scope="props" 187 slot-scope="props"
188 v-if="props.index < 5" 188 v-if="props.index < 5"
189 style="border-spacing: 0 !important;" 189 style="border-spacing: 0 !important;"
190 > 190 >
191 <tr class="td-notice"> 191 <tr class="td-notice">
192 <td class="grey--text" style="width:18px">{{ props.index + 1}}</td> 192 <td class="grey--text" style="width:18px">{{ props.index + 1}}</td>
193 <td> 193 <td>
194 <span class="grey--text caption">{{ date(props.item.created) }}</span> 194 <span class="grey--text caption">{{ date(props.item.created) }}</span>
195 <br /> 195 <br />
196 <span class="body-2">{{ props.item.title}}</span> 196 <span class="body-2">{{ props.item.title}}</span>
197 </td> 197 </td>
198 <td class="noticeDecritpion grey--text mt-2">{{ props.item.description}}</td> 198 <td class="noticeDecritpion grey--text mt-2">{{ props.item.description}}</td>
199 199
200 <td class="text-xs-center"> 200 <td class="text-xs-center">
201 <span> 201 <span>
202 <v-tooltip top> 202 <v-tooltip top>
203 <img 203 <img
204 slot="activator" 204 slot="activator"
205 style="cursor:pointer; width:25px; height:25px; " 205 style="cursor:pointer; width:25px; height:25px; "
206 @click="profile" 206 @click="profile"
207 src="/static/icon/view.png" 207 src="/static/icon/view.png"
208 /> 208 />
209 <span>View</span> 209 <span>View</span>
210 </v-tooltip> 210 </v-tooltip>
211 </span> 211 </span>
212 </td> 212 </td>
213 </tr> 213 </tr>
214 </template> 214 </template>
215 </v-data-table> 215 </v-data-table>
216 </v-card> 216 </v-card>
217 </v-container> 217 </v-container>
218 </v-flex> 218 </v-flex>
219 <v-flex xs12 sm12 md3> 219 <v-flex xs12 sm12 md3>
220 <v-card height="100%" class="elevation-0 mt-3 profileDasboard"> 220 <v-card height="100%" class="elevation-0 mt-3 profileDasboard">
221 <v-card-text> 221 <v-card-text>
222 <h4 class="text-xs-center py-3"> 222 <h4 class="text-xs-center py-3">
223 <b>Profile</b> 223 <b>Profile</b>
224 </h4> 224 </h4>
225 <v-flex xs12 class="py-3"> 225 <v-flex xs12 class="py-3">
226 <v-layout wrap> 226 <v-layout wrap>
227 <v-flex xs12 sm12 md4> 227 <v-flex xs12 sm12 md4>
228 <img src="/static/icon/user.png" v-if="!userData.schoolLogoUrl" width="80" /> 228 <img src="/static/icon/user.png" v-if="!userData.schoolLogoUrl" width="80" />
229 <img 229 <img
230 :src="userData.schoolLogoUrl" 230 :src="userData.schoolLogoUrl"
231 v-else-if="userData.schoolLogoUrl" 231 v-else-if="userData.schoolLogoUrl"
232 width="80" 232 width="80"
233 /> 233 />
234 </v-flex> 234 </v-flex>
235 <v-flex xs12 sm12 md6> 235 <v-flex xs12 sm12 md6>
236 <p class="mb-0 body-1"> 236 <p class="mb-0 body-1">
237 <i>{{ userData.name }}</i> 237 <i>{{ userData.name }}</i>
238 </p> 238 </p>
239 <p class="mb-0 caption grey--text">{{ userData.email }}</p> 239 <p class="mb-0 caption grey--text">{{ userData.email }}</p>
240 <p class="mb-0 caption grey--text">{{ userData.mobile }}</p> 240 <p class="mb-0 caption grey--text">{{ userData.mobile }}</p>
241 <address class="caption grey--text mb-3">{{ userData.address }}</address> 241 <address class="caption grey--text mb-3">{{ userData.address }}</address>
242 </v-flex> 242 </v-flex>
243 </v-layout> 243 </v-layout>
244 </v-flex> 244 </v-flex>
245 <hr /> 245 <hr />
246 <h4 class="text-xs-center py-3"> 246 <h4 class="text-xs-center py-3">
247 <b>Calender</b> 247 <b>Calender</b>
248 </h4> 248 </h4>
249 <vue-event-calendar :events="demoEvents"></vue-event-calendar> 249 <vue-event-calendar :events="demoEvents"></vue-event-calendar>
250 </v-card-text> 250 </v-card-text>
251 </v-card> 251 </v-card>
252 </v-flex> 252 </v-flex>
253 </v-layout> 253 </v-layout>
254 </v-flex> 254 </v-flex>
255 </v-layout> 255 </v-layout>
256 <v-dialog v-model="dialog" max-width="500"> 256 <v-dialog v-model="dialog" max-width="500">
257 <v-card color="grey lighten-4" flat> 257 <v-card color="grey lighten-4" flat>
258 <v-toolbar dark color="fixcolors"> 258 <v-toolbar dark color="fixcolors">
259 <v-spacer></v-spacer> 259 <v-spacer></v-spacer>
260 <v-btn icon @click="dialog= false"> 260 <v-btn icon @click="dialog= false">
261 <v-icon>close</v-icon> 261 <v-icon>close</v-icon>
262 </v-btn> 262 </v-btn>
263 </v-toolbar> 263 </v-toolbar>
264 <v-flex class="py-4"> 264 <v-flex class="py-4">
265 <v-list-tile> 265 <v-list-tile>
266 <v-list-tile-action> 266 <v-list-tile-action>
267 <v-icon>edit</v-icon> 267 <v-icon>edit</v-icon>
268 </v-list-tile-action> 268 </v-list-tile-action>
269 <v-list-tile-content> 269 <v-list-tile-content>
270 <v-list-tile-title>{{ selected.title }}</v-list-tile-title> 270 <v-list-tile-title>{{ selected.title }}</v-list-tile-title>
271 </v-list-tile-content> 271 </v-list-tile-content>
272 </v-list-tile> 272 </v-list-tile>
273 <v-list-tile> 273 <v-list-tile>
274 <v-list-tile-action> 274 <v-list-tile-action>
275 <v-icon>access_time</v-icon> 275 <v-icon>access_time</v-icon>
276 </v-list-tile-action> 276 </v-list-tile-action>
277 <v-list-tile-content> 277 <v-list-tile-content>
278 <v-list-tile-title>{{ date(selected.start)}}</v-list-tile-title> 278 <v-list-tile-title>{{ date(selected.start)}}</v-list-tile-title>
279 </v-list-tile-content> 279 </v-list-tile-content>
280 </v-list-tile> 280 </v-list-tile>
281 </v-flex> 281 </v-flex>
282 </v-card> 282 </v-card>
283 </v-dialog> 283 </v-dialog>
284 <div class="loader" v-if="showLoader"> 284 <div class="loader" v-if="showLoader">
285 <v-progress-circular indeterminate color="white"></v-progress-circular> 285 <v-progress-circular indeterminate color="white"></v-progress-circular>
286 </div> 286 </div>
287 </v-app> 287 </v-app>
288 </template> 288 </template>
289 289
290 <script> 290 <script>
291 import http from "@/Services/http.js"; 291 import http from "@/Services/http.js";
292 import moment from "moment"; 292 import moment from "moment";
293 // import { FunctionalCalendar } from "vue-functional-calendar"; 293 // import { FunctionalCalendar } from "vue-functional-calendar";
294 294
295 export default { 295 export default {
296 components: { 296 components: {
297 // FunctionalCalendar 297 // FunctionalCalendar
298 }, 298 },
299 data() { 299 data() {
300 return { 300 return {
301 // data: { 301 // data: {
302 // clieckedToday: false 302 // clieckedToday: false
303 // }, 303 // },
304 // markedDates: ["16/4/2019", "18/4/2019", "20/4/2019", "21/4/2019"], 304 // markedDates: ["16/4/2019", "18/4/2019", "20/4/2019", "21/4/2019"],
305 // calendarData: {}, 305 // calendarData: {},
306 // calendar: {}, 306 // calendar: {},
307 demoEvents: [ 307 demoEvents: [
308 { 308 {
309 date: "2020/01/10", // Required 309 date: "2020/01/10", // Required
310 title: "Foo" // Required 310 title: "Foo" // Required
311 }, 311 },
312 { 312 {
313 date: "2020/01/12", 313 date: "2020/01/12",
314 title: "Bar", 314 title: "Bar",
315 desc: "description", 315 desc: "description",
316 customClass: "disabled highlight" // Custom classes to an calendar cell 316 customClass: "disabled highlight" // Custom classes to an calendar cell
317 } 317 }
318 ], 318 ],
319 319
320 showLoader: false, 320 showLoader: false,
321 calendarData: {}, 321 calendarData: {},
322 dialog: false, 322 dialog: false,
323 dialogNotice: false, 323 dialogNotice: false,
324 HolidaysList: [], 324 HolidaysList: [],
325 EventsList: [], 325 EventsList: [],
326 events: [], 326 events: [],
327 config: { 327 config: {
328 eventClick: event => { 328 eventClick: event => {
329 this.selected = event; 329 this.selected = event;
330 this.dialog = true; 330 this.dialog = true;
331 } 331 }
332 }, 332 },
333 selected: {}, 333 selected: {},
334 barGraph: [], 334 barGraph: [],
335 // notice: {}, 335 // notice: {},
336 userData: {}, 336 userData: {},
337 dated: new Date(2018, 0, 9), 337 dated: new Date(2018, 0, 9),
338 userList: [], 338 userList: [],
339 sectionList: [], 339 sectionList: [],
340 students: "", 340 students: "",
341 parents: "", 341 parents: "",
342 teachers: "", 342 teachers: "",
343 classes: "", 343 classes: "",
344 noticeData: [], 344 noticeData: [],
345 expenseData: [], 345 expenseData: [],
346 feeData: [], 346 feeData: [],
347 collectionData: [], 347 collectionData: [],
348 348
349 attrs: [ 349 attrs: [
350 { 350 {
351 key: "today", 351 key: "today",
352 highlight: true, 352 highlight: true,
353 dates: new Date() 353 dates: new Date()
354 } 354 }
355 ], 355 ],
356 drawer: true, 356 drawer: true,
357 items: [ 357 items: [
358 { title: "Home", icon: "dashboard" }, 358 { title: "Home", icon: "dashboard" },
359 { title: "About", icon: "question_answer" } 359 { title: "About", icon: "question_answer" }
360 ], 360 ],
361 right: null, 361 right: null,
362 362
363 series: [ 363 series: [
364 { 364 {
365 name: "Total", 365 name: "Total",
366 data: [] 366 data: []
367 } 367 }
368 ], 368 ],
369 chartOptions: { 369 chartOptions: {
370 chart: { 370 chart: {
371 type: "bar", 371 type: "bar",
372 height: 150, 372 height: 150,
373 stacked: true 373 stacked: true
374 // animations: { 374 // animations: {
375 // enabled: true, 375 // enabled: true,
376 // easing: "easeinout", 376 // easing: "easeinout",
377 // speed: 1200, 377 // speed: 1200,
378 // animateGradually: { 378 // animateGradually: {
379 // enabled: true, 379 // enabled: true,
380 // delay: 450 380 // delay: 450
381 // }, 381 // },
382 // dynamicAnimation: { 382 // dynamicAnimation: {
383 // enabled: true, 383 // enabled: true,
384 // speed: 450 384 // speed: 450
385 // } 385 // }
386 // } 386 // }
387 }, 387 },
388 plotOptions: { 388 plotOptions: {
389 bar: { 389 bar: {
390 horizontal: false, 390 horizontal: false,
391 columnWidth: "25%", 391 columnWidth: "25%",
392 // endingShape: "rounded", 392 // endingShape: "rounded",
393 distributed: true 393 distributed: true
394 } 394 }
395 }, 395 },
396 responsive: [ 396 responsive: [
397 { 397 {
398 breakpoint: 480, 398 breakpoint: 480,
399 options: { 399 options: {
400 legend: { 400 legend: {
401 position: "bottom", 401 position: "bottom",
402 offsetX: -10, 402 offsetX: -10,
403 offsetY: 0 403 offsetY: 0
404 } 404 }
405 } 405 }
406 } 406 }
407 ], 407 ],
408 legend: { 408 legend: {
409 show: false 409 show: false
410 }, 410 },
411 colors: ["#7852cc", "#f9a825", "#ff8a89"], 411 colors: ["#7852cc", "#f9a825", "#ff8a89"],
412 dataLabels: { 412 dataLabels: {
413 enabled: false 413 enabled: false
414 }, 414 },
415 stroke: { 415 stroke: {
416 show: true, 416 show: true,
417 width: 2, 417 width: 2,
418 colors: ["transparent"] 418 colors: ["transparent"]
419 }, 419 },
420 xaxis: { 420 xaxis: {
421 categories: ["Fee", "Collections", "Expences"] 421 categories: ["Fee", "Collections", "Expences"]
422 }, 422 },
423 yaxis: { 423 yaxis: {
424 title: { 424 title: {
425 text: "" 425 text: ""
426 } 426 }
427 }, 427 },
428 fill: { 428 fill: {
429 opacity: 1 429 opacity: 1
430 }, 430 },
431 tooltip: { 431 tooltip: {
432 y: { 432 y: {
433 formatter: function(val, opts) { 433 formatter: function(val, opts) {
434 // console.log("opts",opts.w.config.xaxis.categories) 434 // console.log("opts",opts.w.config.xaxis.categories)
435 return "" + val + " "; 435 return "" + val + " ";
436 } 436 }
437 } 437 }
438 } 438 }
439 } 439 }
440 }; 440 };
441 }, 441 },
442 mounted() { 442 mounted() {
443 // = this.$store.state.schoolToken; 443 // = this.$store.state.schoolToken;
444 // console.log("this.$store.state.role", this.token); 444 // console.log("this.$store.state.role", this.token);
445 if (this.$store.state.role === "ADMIN") { 445 if (this.$store.state.role === "ADMIN") {
446 this.token = this.$store.state.token; 446 this.token = this.$store.state.token;
447 } else if (this.$store.state.schoolRole === "SUPERADMIN") { 447 } else if (this.$store.state.schoolRole === "SUPERADMIN") {
448 this.token = this.$store.state.schoolToken; 448 this.token = this.$store.state.schoolToken;
449 } else if (this.$store.state.role === "TEACHER") { 449 } else if (this.$store.state.role === "TEACHER") {
450 this.token = this.$store.state.token; 450 this.token = this.$store.state.token;
451 } else if (this.$store.state.role === "ACCOUNTANT") { 451 } else if (this.$store.state.role === "ACCOUNTANT") {
452 this.token = this.$store.state.token; 452 this.token = this.$store.state.token;
453 } else if (this.$store.state.role === "LIBRARIAN") { 453 } else if (this.$store.state.role === "LIBRARIAN") {
454 this.token = this.$store.state.token; 454 this.token = this.$store.state.token;
455 } 455 }
456 // console.log("role", this.$store.state.schoolRole,"tt",this.$store.state.schoolToken); 456 // console.log("role", this.$store.state.schoolRole,"tt",this.$store.state.schoolToken);
457 // this.getData(); 457 // this.getData();
458 this.getStudents(); 458 this.getStudents();
459 this.getTeachers(); 459 this.getTeachers();
460 this.getParents(); 460 this.getParents();
461 this.getClasses(); 461 this.getClasses();
462 this.getNoticeData(); 462 this.getNoticeData();
463 this.getUserData(); 463 this.getUserData();
464 this.getFeesAndCollectionsData(); 464 this.getFeesAndCollectionsData();
465 this.getExpensesData(); 465 this.getExpensesData();
466 // this.getUsersList(); 466 // this.getUsersList();
467 }, 467 },
468 methods: { 468 methods: {
469 closeNotice() { 469 closeNotice() {
470 this.dialogNotice = false; 470 this.dialogNotice = false;
471 }, 471 },
472 profile() { 472 profile() {
473 // this.editedIndex = this.desserts.indexOf(item); 473 // this.editedIndex = this.desserts.indexOf(item);
474 // this.notice = Object.assign({}, item); 474 // this.notice = Object.assign({}, item);
475 // this.dialogNotice = true; 475 // this.dialogNotice = true;
476 this.$router.push({ name: "NoticeBoard" }); 476 this.$router.push({ name: "NoticeBoard" });
477 }, 477 },
478 date: function(date) { 478 date: function(date) {
479 return moment(date).format("MMMM DD, YYYY HH:mm"); 479 return moment(date).format("MMMM DD, YYYY HH:mm");
480 }, 480 },
481 refreshEvents() { 481 refreshEvents() {
482 this.$refs.calendar.$emit("refetch-events"); 482 this.$refs.calendar.$emit("refetch-events");
483 }, 483 },
484 removeEvent() { 484 removeEvent() {
485 this.$refs.calendar.$emit("remove-event", this.selected); 485 this.$refs.calendar.$emit("remove-event", this.selected);
486 this.selected = {}; 486 this.selected = {};
487 }, 487 },
488 eventSelected(event) { 488 eventSelected(event) {
489 this.selected = event; 489 this.selected = event;
490 console.log("this.selected", this.selected); 490 console.log("this.selected", this.selected);
491 }, 491 },
492 // eventDropStart: function(event) { 492 // eventDropStart: function(event) {
493 // event.editable = false; 493 // event.editable = false;
494 // }, 494 // },
495 eventCreated(...test) { 495 eventCreated(...test) {
496 console.log(test); 496 console.log(test);
497 }, 497 },
498 getStudents() { 498 getStudents() {
499 http() 499 http()
500 .get("/getStudentsList", { 500 .get("/getStudentsList", {
501 headers: { 501 headers: {
502 Authorization: "Bearer " + this.token 502 Authorization: "Bearer " + this.token
503 } 503 }
504 }) 504 })
505 .then(response => { 505 .then(response => {
506 this.students = response.data.data; 506 this.students = response.data.data;
507 this.showLoader = false; 507 this.showLoader = false;
508 }) 508 })
509 .catch(error => { 509 .catch(error => {
510 // console.log("err====>", err); 510 // console.log("err====>", err);
511 this.showLoader = false; 511 this.showLoader = false;
512 // if (error.response.status === 401) { 512 if (error.response.status === 401) {
513 // this.$router.replace({ path: "/" }); 513 this.$router.replace({ path: "/" });
514 // this.$store.dispatch("setToken", null); 514 this.$store.dispatch("setToken", null);
515 // this.$store.dispatch("Id", null); 515 this.$store.dispatch("Id", null);
516 // } 516 }
517 }); 517 });
518 }, 518 },
519 getParents() { 519 getParents() {
520 http() 520 http()
521 .get("/getParentsList", { 521 .get("/getParentsList", {
522 headers: { 522 headers: {
523 Authorization: "Bearer " + this.token 523 Authorization: "Bearer " + this.token
524 } 524 }
525 }) 525 })
526 .then(response => { 526 .then(response => {
527 this.parents = response.data.data; 527 this.parents = response.data.data;
528 this.showLoader = false; 528 this.showLoader = false;
529 }) 529 })
530 .catch(error => { 530 .catch(error => {
531 // console.log("err====>", err); 531 // console.log("err====>", err);
532 this.showLoader = false; 532 this.showLoader = false;
533 // if (error.response.status === 401) {
534 // this.$router.replace({ path: "/" });
535 // this.$store.dispatch("setToken", null);
536 // this.$store.dispatch("Id", null);
537 // }
538 }); 533 });
539 }, 534 },
540 getTeachers() { 535 getTeachers() {
541 http() 536 http()
542 .get("/getTeachersList", { 537 .get("/getTeachersList", {
543 headers: { 538 headers: {
544 Authorization: "Bearer " + this.token 539 Authorization: "Bearer " + this.token
545 } 540 }
546 }) 541 })
547 .then(response => { 542 .then(response => {
548 this.teachers = response.data.data; 543 this.teachers = response.data.data;
549 this.showLoader = false; 544 this.showLoader = false;
550 }) 545 })
551 .catch(error => { 546 .catch(error => {
552 // console.log("err====>", err); 547 // console.log("err====>", err);
553 this.showLoader = false; 548 this.showLoader = false;
554 // if (error.response.status === 401) {
555 // this.$router.replace({ path: "/" });
556 // this.$store.dispatch("setToken", null);
557 // this.$store.dispatch("Id", null);
558 // }
559 }); 549 });
560 }, 550 },
561 getClasses() { 551 getClasses() {
562 http() 552 http()
563 .get("/getClassesList", { 553 .get("/getClassesList", {
564 headers: { 554 headers: {
565 Authorization: "Bearer " + this.token 555 Authorization: "Bearer " + this.token
566 } 556 }
567 }) 557 })
568 .then(response => { 558 .then(response => {
569 this.classes = response.data.data; 559 this.classes = response.data.data;
570 this.showLoader = false; 560 this.showLoader = false;
571 }) 561 })
572 .catch(error => { 562 .catch(error => {
573 this.showLoader = false; 563 this.showLoader = false;
574 // if (error.response.status === 401) {
575 // this.$router.replace({ path: "/" });
576 // this.$store.dispatch("setToken", null);
577 // this.$store.dispatch("Id", null);
578 // this.$store.dispatch("Role", null);
579 // }
580 }); 564 });
581 }, 565 },
582 getNoticeData() { 566 getNoticeData() {
583 this.showLoader = true; 567 this.showLoader = true;
584 http() 568 http()
585 .get("/getEventsList", { 569 .get("/getEventsList", {
586 headers: { 570 headers: {
587 Authorization: "Bearer " + this.token 571 Authorization: "Bearer " + this.token
588 } 572 }
589 }) 573 })
590 .then(response => { 574 .then(response => {
591 this.noticeData = response.data.data; 575 this.noticeData = response.data.data;
592 this.showLoader = false; 576 this.showLoader = false;
593 }) 577 })
594 .catch(error => { 578 .catch(error => {
595 this.showLoader = false; 579 this.showLoader = false;
596 // if (error.response.status === 401) {
597 // this.$router.replace({ path: "/" });
598 // this.$store.dispatch("setToken", null);
599 // this.$store.dispatch("Id", null);
600 // }
601 }); 580 });
602 }, 581 },
603 getUserData() { 582 getUserData() {
604 // this.showLoader = true; 583 // this.showLoader = true;
605 http() 584 http()
606 .get("/getParticularUserDetail", { 585 .get("/getParticularUserDetail", {
607 headers: { 586 headers: {
608 Authorization: "Bearer " + this.token 587 Authorization: "Bearer " + this.token
609 } 588 }
610 }) 589 })
611 .then(response => { 590 .then(response => {
612 this.userData = response.data.data; 591 this.userData = response.data.data;
613 this.showLoader = false; 592 this.showLoader = false;
614 }) 593 })
615 .catch(error => { 594 .catch(error => {
616 this.showLoader = false; 595 this.showLoader = false;
617 // if (error.response.status === 401) {
618 // this.$router.replace({ path: "/" });
619 // this.$store.dispatch("setToken", null);
620 // this.$store.dispatch("Id", null);
621 // }
622 }); 596 });
623 }, 597 },
624 598
625 getFeesAndCollectionsData() { 599 getFeesAndCollectionsData() {
626 http() 600 http()
627 .get("/getTotalFeesAndCollections", { 601 .get("/getTotalFeesAndCollections", {
628 headers: { 602 headers: {
629 Authorization: "Bearer " + this.token 603 Authorization: "Bearer " + this.token
630 } 604 }
631 }) 605 })
632 .then(response => { 606 .then(response => {
633 this.feeData = response.data.data; 607 this.feeData = response.data.data;
634 // this.collectionData = response.data.data; 608 // this.collectionData = response.data.data;
635 this.series[0].data[0] = this.feeData.totalFees; 609 this.series[0].data[0] = this.feeData.totalFees;
636 this.series[0].data[1] = this.feeData.totalCollection; 610 this.series[0].data[1] = this.feeData.totalCollection;
637 console.log("this.series====", this.series); 611 console.log("this.series====", this.series);
638 612
639 this.showLoader = false; 613 this.showLoader = false;
640 }) 614 })
641 .catch(error => { 615 .catch(error => {
642 this.showLoader = false; 616 this.showLoader = false;
643 }); 617 });
644 }, 618 },
645 getExpensesData() { 619 getExpensesData() {
646 http() 620 http()
647 .get("/getTotalExpenses", { 621 .get("/getTotalExpenses", {
648 headers: { 622 headers: {
649 Authorization: "Bearer " + this.token 623 Authorization: "Bearer " + this.token
650 } 624 }
651 }) 625 })
652 .then(response => { 626 .then(response => {
653 this.expenseData = response.data.data; 627 this.expenseData = response.data.data;
654 // var array = response.data.data.sum; 628 // var array = response.data.data.sum;
655 this.series[0].data[2] = this.expenseData.sum; 629 this.series[0].data[2] = this.expenseData.sum;
656 // this.series = [ 630 // this.series = [
657 // { 631 // {
658 // name: "Total", 632 // name: "Total",
659 // data: array 633 // data: array
660 // } 634 // }
661 // ]; 635 // ];
662 // console.log("this.series====", this.series); 636 // console.log("this.series====", this.series);
663 this.showLoader = false; 637 this.showLoader = false;
664 }) 638 })
665 .catch(error => { 639 .catch(error => {
666 this.showLoader = false; 640 this.showLoader = false;
667 }); 641 });
668 } 642 }
669 } 643 }
670 }; 644 };
671 </script> 645 </script>
672 646
673 <style scoped> 647 <style scoped>
674 @import "fullcalendar/dist/fullcalendar.css"; 648 @import "fullcalendar/dist/fullcalendar.css";
675 </style> 649 </style>
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 Print 8 Print
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> 22 <v-flex xs12 sm12>
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-layout> 26 <v-layout>
27 <v-flex xs12 sm12 md12 style="text-align:center"> 27 <v-flex xs12 sm12 md12 style="text-align:center">
28 <!-- <img :src="userData.schoolLogoUrl" width="140" alt="logo" /> --> 28 <!-- <img :src="userData.schoolLogoUrl" width="140" alt="logo" /> -->
29 <v-avatar> 29 <v-avatar>
30 <img :src="userData.schoolLogoUrl" v-if="userData.schoolLogoUrl" /> 30 <img :src="userData.schoolLogoUrl" v-if="userData.schoolLogoUrl" />
31 <img 31 <img
32 src="/static/schoolIcons/INTRACK_White.png" 32 src="/static/schoolIcons/INTRACK_White.png"
33 v-else-if="!userData.schoolLogoUrl" 33 v-else-if="!userData.schoolLogoUrl"
34 /> 34 />
35 </v-avatar> 35 </v-avatar>
36 <p 36 <p
37 style=" 37 style="
38 font-size: 20px !important; 38 font-size: 20px !important;
39 font-weight: 500; 39 font-weight: 500;
40 line-height: 2 !important; 40 line-height: 2 !important;
41 letter-spacing: 0.02em !important;" 41 letter-spacing: 0.02em !important;"
42 >{{ userData.name }}</p> 42 >{{ userData.name }}</p>
43 <p style="margin-bottom: 16px;">{{ userData.address }}</p> 43 <p style="margin-bottom: 16px;">{{ userData.address }}</p>
44 </v-flex> 44 </v-flex>
45 </v-layout> 45 </v-layout>
46 <v-layout wrap> 46 <v-layout wrap>
47 <v-flex xs12 sm12 md3> 47 <v-flex xs12 sm12 md3>
48 <v-card 48 <v-card
49 style=" 49 style="
50 margin:auto 4px; 50 margin:auto 4px;
51 padding:20px; 51 padding:20px;
52 background-color: #fff; 52 background-color: #fff;
53 border-color: #fff; 53 border-color: #fff;
54 color: rgba(0,0,0,0.87); 54 color: rgba(0,0,0,0.87);
55 border: 1px solid rgb(226, 231, 235); 55 border: 1px solid rgb(226, 231, 235);
56 -webkit-box-shadow:inherit !important; 56 -webkit-box-shadow:inherit !important;
57 box-shadow: inherit !important;" 57 box-shadow: inherit !important;"
58 > 58 >
59 <v-layout> 59 <v-layout>
60 <v-flex xs12 style="text-align: center;"> 60 <v-flex xs12 style="text-align: center;">
61 <v-avatar size="80"> 61 <v-avatar size="80">
62 <img src="/static/icon/user.png" v-if="!markData[0].studentId.profilePicUrl" /> 62 <img src="/static/icon/user.png" v-if="!markData[0].studentId.profilePicUrl" />
63 <img 63 <img
64 :src="markData[0].studentId.profilePicUrl" 64 :src="markData[0].studentId.profilePicUrl"
65 v-else-if="markData[0].studentId.profilePicUrl" 65 v-else-if="markData[0].studentId.profilePicUrl"
66 /> 66 />
67 </v-avatar> 67 </v-avatar>
68 </v-flex> 68 </v-flex>
69 </v-layout> 69 </v-layout>
70 <v-layout> 70 <v-layout>
71 <v-flex xs12 style="text-align: center;"> 71 <v-flex xs12 style="text-align: center;">
72 <h4 style="margin: 4px 0px;font-weight: 400;">{{ markData[0].studentId.name }}</h4> 72 <h4 style="margin: 4px 0px;font-weight: 400;">{{ markData[0].studentId.name }}</h4>
73 <p style="color: #999;">Student</p> 73 <p style="color: #999;">Student</p>
74 </v-flex> 74 </v-flex>
75 </v-layout> 75 </v-layout>
76 <v-layout 76 <v-layout
77 style=" 77 style="
78 margin-bottom: -1px; 78 margin-bottom: -1px;
79 border: 1px solid #ddd; 79 border: 1px solid #ddd;
80 margin: 0px; 80 margin: 0px;
81 padding: 4px; 81 padding: 4px;
82 color: #707478; 82 color: #707478;
83 font-size: 16px;" 83 font-size: 16px;"
84 > 84 >
85 <v-flex xs6 sm6> 85 <v-flex xs6 sm6>
86 <p style="float:left;margin: 4px 0px;"> 86 <p style="float:left;margin: 4px 0px;">
87 <b>Class</b> 87 <b>Class</b>
88 </p> 88 </p>
89 </v-flex> 89 </v-flex>
90 <v-flex sm6 xs6> 90 <v-flex sm6 xs6>
91 <p style="float:right;margin: 4px 0px;">{{ markData[0].classId.classNum }}</p> 91 <p style="float:right;margin: 4px 0px;">{{ markData[0].classId.classNum }}</p>
92 </v-flex> 92 </v-flex>
93 </v-layout> 93 </v-layout>
94 <v-layout 94 <v-layout
95 style=" 95 style="
96 margin-bottom: -1px; 96 margin-bottom: -1px;
97 border: 1px solid #ddd; 97 border: 1px solid #ddd;
98 margin: 0px; 98 margin: 0px;
99 padding: 4px; 99 padding: 4px;
100 color: #707478; 100 color: #707478;
101 font-size: 16px;" 101 font-size: 16px;"
102 > 102 >
103 <v-flex xs6 sm6> 103 <v-flex xs6 sm6>
104 <p style="float:left;margin: 4px 0px;"> 104 <p style="float:left;margin: 4px 0px;">
105 <b>Section</b> 105 <b>Section</b>
106 </p> 106 </p>
107 </v-flex> 107 </v-flex>
108 <v-flex sm6 xs6> 108 <v-flex sm6 xs6>
109 <p style="float:right;margin: 4px 0px;">{{ markData[0].sectionId.name }}</p> 109 <p style="float:right;margin: 4px 0px;">{{ markData[0].sectionId.name }}</p>
110 </v-flex> 110 </v-flex>
111 </v-layout> 111 </v-layout>
112 <v-layout 112 <v-layout
113 style=" 113 style="
114 margin-bottom: -1px; 114 margin-bottom: -1px;
115 border: 1px solid #ddd; 115 border: 1px solid #ddd;
116 margin: 0px; 116 margin: 0px;
117 padding: 4px; 117 padding: 4px;
118 color: #707478; 118 color: #707478;
119 font-size: 16px;" 119 font-size: 16px;"
120 > 120 >
121 <v-flex xs6 sm6> 121 <v-flex xs6 sm6>
122 <p style="float:left;margin: 4px 0px;"> 122 <p style="float:left;margin: 4px 0px;">
123 <b>Roll No</b> 123 <b>Roll No</b>
124 </p> 124 </p>
125 </v-flex> 125 </v-flex>
126 <v-flex sm6 xs6> 126 <v-flex sm6 xs6>
127 <p style="float:right;margin: 4px 0px;">{{ markData[0].studentId.rollNo }}</p> 127 <p style="float:right;margin: 4px 0px;">{{ markData[0].studentId.rollNo }}</p>
128 </v-flex> 128 </v-flex>
129 </v-layout> 129 </v-layout>
130 </v-card> 130 </v-card>
131 </v-flex> 131 </v-flex>
132 <v-flex xs12 sm12 md9 v-show="showMark"> 132 <v-flex xs12 sm12 md9 v-show="showMark">
133 <v-card 133 <v-card
134 style=" margin:auto 14px; 134 style=" margin:auto 14px;
135 padding:0px 0px; 135 padding:0px 0px;
136 background-color: #fff; 136 background-color: #fff;
137 border: 1px solid lightgrey; 137 border: 1px solid lightgrey;
138 color: rgba(0,0,0,0.87); 138 color: rgba(0,0,0,0.87);
139 overflow: auto; 139 overflow: auto;
140 display: block; 140 display: block;
141 border: 1px solid rgb(226, 231, 235); 141 border: 1px solid rgb(226, 231, 235);
142 -webkit-box-shadow:inherit !important; 142 -webkit-box-shadow:inherit !important;
143 box-shadow: inherit !important;" 143 box-shadow: inherit !important;"
144 > 144 >
145 <div> 145 <div>
146 <table 146 <table
147 v-for="(value, id) in filterData" 147 v-for="(value, id) in filterData"
148 :key="id" 148 :key="id"
149 class="mb-5 tableRsponsive feeTypeTable subheading" 149 class="mb-5 tableRsponsive feeTypeTable subheading"
150 style="border: 1px solid black; 150 style="border: 1px solid black;
151 border-collapse: collapse;!important 151 border-collapse: collapse;!important
152 table-layout: auto !important; 152 table-layout: auto !important;
153 width: 100% !important;" 153 width: 100% !important;"
154 > 154 >
155 <thead style="border: 1px solid transparent !important;"> 155 <thead style="border: 1px solid transparent !important;">
156 <td 156 <td
157 colspan="4" 157 colspan="4"
158 style="text-align: inherit !important; 158 style="text-align: inherit !important;
159 border-right: inherit; 159 border-right: inherit;
160 border-top: inherit; 160 border-top: inherit;
161 padding:8px;" 161 padding:8px;"
162 >{{value[0].examId.examName}}</td> 162 >{{value[0].examId.examName}}</td>
163 <tr style="border: 1px solid lightgrey !important;"> 163 <tr style="border: 1px solid lightgrey !important;">
164 <td 164 <td
165 rowspan="2" 165 rowspan="2"
166 style="border: 1px solid lightgrey !important;;padding:4px; text-align: left;" 166 style="border: 1px solid lightgrey !important;;padding:4px; text-align: left;"
167 >Subject</td> 167 >Subject</td>
168 <template v-for="(studentData,ind) in value"> 168 <template v-for="(studentData,ind) in value">
169 <td 169 <td
170 v-if="ind == 0" 170 v-if="ind == 0"
171 colspan="2" 171 colspan="2"
172 v-for="studentMark in studentData.studentsMarks" 172 v-for="studentMark in studentData.studentsMarks"
173 style="border: 1px solid lightgrey !important;padding:10px; text-align: left;" 173 style="border: 1px solid lightgrey !important;padding:10px; text-align: left;"
174 >{{studentMark.markDistributionId.distributionType}}</td> 174 >{{studentMark.markDistributionId.distributionType}}</td>
175 <td 175 <td
176 v-if="ind == 0" 176 v-if="ind == 0"
177 style="border: 1px solid lightgrey !important text-align: left;" 177 style="border: 1px solid lightgrey !important text-align: left;"
178 >Total Marks</td> 178 >Total Marks</td>
179 </template> 179 </template>
180 </tr> 180 </tr>
181 <tr 181 <tr
182 v-for="(subject, ind) in value" 182 v-for="(subject, ind) in value"
183 v-if="ind == 0" 183 v-if="ind == 0"
184 style="border: 1px solid lightgrey !important;" 184 style="border: 1px solid lightgrey !important;"
185 > 185 >
186 <template v-for="(exam, i) in subject.studentsMarks"> 186 <template v-for="(exam, i) in subject.studentsMarks">
187 <td 187 <td
188 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;" 188 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;"
189 >Marks</td> 189 >Marks</td>
190 <td 190 <td
191 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;" 191 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;"
192 >Highest Marks</td> 192 >Highest Marks</td>
193 </template> 193 </template>
194 </tr> 194 </tr>
195 </thead> 195 </thead>
196 <tbody style="border: 1px solid lightgrey !important;"> 196 <tbody style="border: 1px solid lightgrey !important;">
197 <tr 197 <tr
198 v-for="subject in value" 198 v-for="subject in value"
199 style="border: 1px solid lightgrey !important;" 199 style="border: 1px solid lightgrey !important;"
200 class="tr" 200 class="tr"
201 > 201 >
202 <td 202 <td
203 style="border: 1px solid lightgrey !important;padding: 4px;" 203 style="border: 1px solid lightgrey !important;padding: 4px;"
204 >{{subject.subjectName}}</td> 204 >{{subject.subjectName}}</td>
205 <template v-for="(exam, i) in subject.studentsMarks"> 205 <template v-for="(exam, i) in subject.studentsMarks">
206 <td 206 <td
207 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;" 207 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;"
208 >{{exam.marksScored}}</td> 208 >{{exam.marksScored}}</td>
209 <td 209 <td
210 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;" 210 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;"
211 >{{exam.markDistributionId.markValue}}</td> 211 >{{exam.markDistributionId.markValue}}</td>
212 </template> 212 </template>
213 <td 213 <td
214 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;" 214 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;"
215 >{{subject.totalMarks}}</td> 215 >{{subject.totalMarks}}</td>
216 </tr> 216 </tr>
217 </tbody> 217 </tbody>
218 </table> 218 </table>
219 </div> 219 </div>
220 </v-card> 220 </v-card>
221 </v-flex> 221 </v-flex>
222 <!-- ****** TABLE GRADE MARK ****** --> 222 <!-- ****** TABLE GRADE MARK ****** -->
223 <v-flex xs12 sm12 md8 v-show="showGrade"> 223 <v-flex xs12 sm12 md8 v-show="showGrade">
224 <v-card 224 <v-card
225 v-for="(value, id, index) in filterData" 225 v-for="(value, id, index) in filterData"
226 :key="index" 226 :key="index"
227 flat 227 flat
228 style="border: 1px solid lightgrey;margin-bottom:14px;" 228 style="border: 1px solid lightgrey;margin-bottom:14px;"
229 > 229 >
230 <v-card-title class="subheading">{{value[0].examId.examName}}</v-card-title> 230 <v-card-title class="subheading">{{value[0].examId.examName}}</v-card-title>
231 <table 231 <table
232 class="mb-5 tableRsponsive feeTypeTable" 232 class="mb-5 tableRsponsive feeTypeTable"
233 style="border: 1px solid lightgrey; 233 style="border: 1px solid lightgrey;
234 border-collapse: collapse;!important 234 border-collapse: collapse;!important
235 table-layout: auto !important; 235 table-layout: auto !important;
236 width: 100% !important;" 236 width: 100% !important;"
237 > 237 >
238 <thead style="border: 1px solid lightgrey !important;"> 238 <thead style="border: 1px solid lightgrey !important;">
239 <tr 239 <tr
240 class="info white--text" 240 class="info white--text"
241 style="border: 1px solid lightgrey !important;padding:4px;" 241 style="border: 1px solid lightgrey !important;padding:4px;"
242 > 242 >
243 <td style="border: 1px solid lightgrey !important;padding: 4px;">Subject</td> 243 <td style="border: 1px solid lightgrey !important;padding: 4px;">Subject</td>
244 <td style="border: 1px solid lightgrey !important;padding: 4px;">Grade</td> 244 <td style="border: 1px solid lightgrey !important;padding: 4px;">Grade</td>
245 </tr> 245 </tr>
246 </thead> 246 </thead>
247 <tbody style="border: 1px solid lightgrey !important;"> 247 <tbody style="border: 1px solid lightgrey !important;">
248 <tr v-for="subject in value" style="border: 1px solid lightgrey !important;"> 248 <tr v-for="subject in value" style="border: 1px solid lightgrey !important;">
249 <td 249 <td
250 style="border: 1px solid lightgrey !important;padding: 4px;" 250 style="border: 1px solid lightgrey !important;padding: 4px;"
251 >{{ subject.subjectName }}</td> 251 >{{ subject.subjectName }}</td>
252 <td 252 <td
253 style="border: 1px solid lightgrey !important;padding: 4px;" 253 style="border: 1px solid lightgrey !important;padding: 4px;"
254 >{{ subject.grade }}</td> 254 >{{ subject.grade }}</td>
255 </tr> 255 </tr>
256 </tbody> 256 </tbody>
257 </table> 257 </table>
258 </v-card> 258 </v-card>
259 <v-card v-if="markData == ''"> 259 <v-card v-if="markData.length == 0">
260 <v-layout> 260 <v-layout>
261 <v-flex xs12> 261 <v-flex xs12>
262 <h5 class="text-xs-center pa-3">No Data Found</h5> 262 <h5 class="text-xs-center pa-3">No Data Found</h5>
263 </v-flex> 263 </v-flex>
264 </v-layout> 264 </v-layout>
265 </v-card> 265 </v-card>
266 </v-flex> 266 </v-flex>
267 </v-layout> 267 </v-layout>
268 </v-flex> 268 </v-flex>
269 </v-flex> 269 </v-flex>
270 <!-- print Me --> 270 <!-- print Me -->
271 <v-flex xs12 sm12 id="printMe" v-show="hideViewMark"> 271 <v-flex xs12 sm12 id="printMe" v-show="hideViewMark">
272 <!-- <v-layout wrap> --> 272 <!-- <v-layout wrap> -->
273 <!-- ****** TABLE DATA MARK ****** --> 273 <!-- ****** TABLE DATA MARK ****** -->
274 <v-flex xs12 sm12 md12> 274 <v-flex xs12 sm12 md12>
275 <v-layout> 275 <v-layout>
276 <v-flex xs12 sm12 md12 style="text-align:center"> 276 <v-flex xs12 sm12 md12 style="text-align:center">
277 <!-- <img :src="userData.schoolLogoUrl" width="140" alt="logo" /> --> 277 <!-- <img :src="userData.schoolLogoUrl" width="140" alt="logo" /> -->
278 <v-avatar> 278 <v-avatar>
279 <img :src="userData.schoolLogoUrl" v-if="userData.schoolLogoUrl" /> 279 <img :src="userData.schoolLogoUrl" v-if="userData.schoolLogoUrl" />
280 <img 280 <img
281 src="/static/schoolIcons/INTRACK_White.png" 281 src="/static/schoolIcons/INTRACK_White.png"
282 v-else-if="!userData.schoolLogoUrl" 282 v-else-if="!userData.schoolLogoUrl"
283 /> 283 />
284 </v-avatar> 284 </v-avatar>
285 <p 285 <p
286 style=" 286 style="
287 font-size: 20px !important; 287 font-size: 20px !important;
288 font-weight: 500; 288 font-weight: 500;
289 line-height: 2 !important; 289 line-height: 2 !important;
290 letter-spacing: 0.02em !important;" 290 letter-spacing: 0.02em !important;"
291 >{{ userData.name }}</p> 291 >{{ userData.name }}</p>
292 <p style="margin-bottom: 16px;">{{ userData.address }}</p> 292 <p style="margin-bottom: 16px;">{{ userData.address }}</p>
293 </v-flex> 293 </v-flex>
294 </v-layout> 294 </v-layout>
295 <v-layout wrap> 295 <v-layout wrap>
296 <v-flex xs3 sm3 md3> 296 <v-flex xs3 sm3 md3>
297 <v-card 297 <v-card
298 style=" 298 style="
299 margin:auto 4px; 299 margin:auto 4px;
300 padding:20px; 300 padding:20px;
301 background-color: #fff; 301 background-color: #fff;
302 border-color: #fff; 302 border-color: #fff;
303 color: rgba(0,0,0,0.87); 303 color: rgba(0,0,0,0.87);
304 border: 1px solid rgb(226, 231, 235); 304 border: 1px solid rgb(226, 231, 235);
305 -webkit-box-shadow:inherit !important; 305 -webkit-box-shadow:inherit !important;
306 box-shadow: inherit !important;" 306 box-shadow: inherit !important;"
307 > 307 >
308 <v-layout> 308 <v-layout>
309 <v-flex xs12 style="text-align: center;"> 309 <v-flex xs12 style="text-align: center;">
310 <v-avatar size="80"> 310 <v-avatar size="80">
311 <img src="/static/icon/user.png" v-if="!markData[0].studentId.profilePicUrl" /> 311 <img src="/static/icon/user.png" v-if="!markData[0].studentId.profilePicUrl" />
312 <img 312 <img
313 :src="markData[0].studentId.profilePicUrl" 313 :src="markData[0].studentId.profilePicUrl"
314 v-else-if="markData[0].studentId.profilePicUrl" 314 v-else-if="markData[0].studentId.profilePicUrl"
315 /> 315 />
316 </v-avatar> 316 </v-avatar>
317 </v-flex> 317 </v-flex>
318 </v-layout> 318 </v-layout>
319 <v-layout> 319 <v-layout>
320 <v-flex xs12 style="text-align: center;"> 320 <v-flex xs12 style="text-align: center;">
321 <h4 style="margin: 4px 0px;font-weight: 400;">{{ markData[0].studentId.name }}</h4> 321 <h4 style="margin: 4px 0px;font-weight: 400;">{{ markData[0].studentId.name }}</h4>
322 <p style="color: #999;margin-bottom: 16px;">Student</p> 322 <p style="color: #999;margin-bottom: 16px;">Student</p>
323 </v-flex> 323 </v-flex>
324 </v-layout> 324 </v-layout>
325 <v-layout 325 <v-layout
326 style=" 326 style="
327 margin-bottom: -1px; 327 margin-bottom: -1px;
328 border: 1px solid #ddd; 328 border: 1px solid #ddd;
329 margin: 0px; 329 margin: 0px;
330 padding: 4px; 330 padding: 4px;
331 color: #707478; 331 color: #707478;
332 font-size: 16px;" 332 font-size: 16px;"
333 > 333 >
334 <v-flex xs6 sm6> 334 <v-flex xs6 sm6>
335 <p style="float:left;margin: 4px 0px;"> 335 <p style="float:left;margin: 4px 0px;">
336 <b>Class</b> 336 <b>Class</b>
337 </p> 337 </p>
338 </v-flex> 338 </v-flex>
339 <v-flex sm6 xs6> 339 <v-flex sm6 xs6>
340 <p style="float:right;margin: 4px 0px;">{{ markData[0].classId.classNum }}</p> 340 <p style="float:right;margin: 4px 0px;">{{ markData[0].classId.classNum }}</p>
341 </v-flex> 341 </v-flex>
342 </v-layout> 342 </v-layout>
343 <v-layout 343 <v-layout
344 style=" 344 style="
345 margin-bottom: -1px; 345 margin-bottom: -1px;
346 border: 1px solid #ddd; 346 border: 1px solid #ddd;
347 margin: 0px; 347 margin: 0px;
348 padding: 4px; 348 padding: 4px;
349 color: #707478; 349 color: #707478;
350 font-size: 16px;" 350 font-size: 16px;"
351 > 351 >
352 <v-flex xs6 sm6> 352 <v-flex xs6 sm6>
353 <p style="float:left;margin: 4px 0px;"> 353 <p style="float:left;margin: 4px 0px;">
354 <b>Section</b> 354 <b>Section</b>
355 </p> 355 </p>
356 </v-flex> 356 </v-flex>
357 <v-flex sm6 xs6> 357 <v-flex sm6 xs6>
358 <p style="float:right;margin: 4px 0px;">{{ markData[0].sectionId.name }}</p> 358 <p style="float:right;margin: 4px 0px;">{{ markData[0].sectionId.name }}</p>
359 </v-flex> 359 </v-flex>
360 </v-layout> 360 </v-layout>
361 <v-layout 361 <v-layout
362 style=" 362 style="
363 margin-bottom: -1px; 363 margin-bottom: -1px;
364 border: 1px solid #ddd; 364 border: 1px solid #ddd;
365 margin: 0px; 365 margin: 0px;
366 padding: 4px; 366 padding: 4px;
367 color: #707478; 367 color: #707478;
368 font-size: 16px;" 368 font-size: 16px;"
369 > 369 >
370 <v-flex xs6 sm6> 370 <v-flex xs6 sm6>
371 <p style="float:left;margin: 4px 0px;"> 371 <p style="float:left;margin: 4px 0px;">
372 <b>Roll No</b> 372 <b>Roll No</b>
373 </p> 373 </p>
374 </v-flex> 374 </v-flex>
375 <v-flex sm6 xs6> 375 <v-flex sm6 xs6>
376 <p style="float:right;margin: 4px 0px;">{{ markData[0].studentId.rollNo }}</p> 376 <p style="float:right;margin: 4px 0px;">{{ markData[0].studentId.rollNo }}</p>
377 </v-flex> 377 </v-flex>
378 </v-layout> 378 </v-layout>
379 </v-card> 379 </v-card>
380 </v-flex> 380 </v-flex>
381 <v-flex xs9 sm9 md9 v-show="showMark"> 381 <v-flex xs9 sm9 md9 v-show="showMark">
382 <v-card 382 <v-card
383 style=" margin:auto 14px; 383 style=" margin:auto 14px;
384 padding:20px 0px; 384 padding:20px 0px;
385 background-color: #fff; 385 background-color: #fff;
386 border: 1px solid lightgrey; 386 border: 1px solid lightgrey;
387 color: rgba(0,0,0,0.87); 387 color: rgba(0,0,0,0.87);
388 border: 1px solid rgb(226, 231, 235); 388 border: 1px solid rgb(226, 231, 235);
389 -webkit-box-shadow:inherit !important; 389 -webkit-box-shadow:inherit !important;
390 box-shadow: inherit !important;" 390 box-shadow: inherit !important;"
391 > 391 >
392 <div> 392 <div>
393 <table 393 <table
394 v-for="(value, id) in filterData" 394 v-for="(value, id) in filterData"
395 :key="id" 395 :key="id"
396 class="mb-5 tableRsponsive feeTypeTable subheading" 396 class="mb-5 tableRsponsive feeTypeTable subheading"
397 style="border: 1px solid black; 397 style="border: 1px solid black;
398 border-collapse: collapse;!important 398 border-collapse: collapse;!important
399 table-layout: auto !important; 399 table-layout: auto !important;
400 width: 100% !important;" 400 width: 100% !important;"
401 > 401 >
402 <thead style="border: 1px solid transparent !important;"> 402 <thead style="border: 1px solid transparent !important;">
403 <td 403 <td
404 colspan="4" 404 colspan="4"
405 style="text-align: inherit !important; 405 style="text-align: inherit !important;
406 border-right: inherit; 406 border-right: inherit;
407 border-top: inherit; 407 border-top: inherit;
408 padding:14px;" 408 padding:14px;"
409 >{{value[0].examId.examName}}</td> 409 >{{value[0].examId.examName}}</td>
410 <tr style="border: 1px solid lightgrey !important;"> 410 <tr style="border: 1px solid lightgrey !important;">
411 <td 411 <td
412 rowspan="2" 412 rowspan="2"
413 style="border: 1px solid lightgrey !important;;padding:4px; text-align: left;" 413 style="border: 1px solid lightgrey !important;;padding:4px; text-align: left;"
414 >Subject</td> 414 >Subject</td>
415 <template v-for="(studentData,ind) in value"> 415 <template v-for="(studentData,ind) in value">
416 <td 416 <td
417 v-if="ind == 0" 417 v-if="ind == 0"
418 colspan="2" 418 colspan="2"
419 v-for="studentMark in studentData.studentsMarks" 419 v-for="studentMark in studentData.studentsMarks"
420 style="border: 1px solid lightgrey !important;padding:10px; text-align: left;" 420 style="border: 1px solid lightgrey !important;padding:10px; text-align: left;"
421 >{{studentMark.markDistributionId.distributionType}}</td> 421 >{{studentMark.markDistributionId.distributionType}}</td>
422 <td 422 <td
423 v-if="ind == 0" 423 v-if="ind == 0"
424 style="border: 1px solid lightgrey !important text-align: left;" 424 style="border: 1px solid lightgrey !important text-align: left;"
425 >Total Marks</td> 425 >Total Marks</td>
426 </template> 426 </template>
427 </tr> 427 </tr>
428 <tr 428 <tr
429 v-for="(subject, ind) in value" 429 v-for="(subject, ind) in value"
430 v-if="ind == 0" 430 v-if="ind == 0"
431 style="border: 1px solid lightgrey !important;" 431 style="border: 1px solid lightgrey !important;"
432 > 432 >
433 <template v-for="(exam, i) in subject.studentsMarks"> 433 <template v-for="(exam, i) in subject.studentsMarks">
434 <td 434 <td
435 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;" 435 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;"
436 >Marks</td> 436 >Marks</td>
437 <td 437 <td
438 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;" 438 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;"
439 >Highest Marks</td> 439 >Highest Marks</td>
440 </template> 440 </template>
441 </tr> 441 </tr>
442 </thead> 442 </thead>
443 <tbody style="border: 1px solid lightgrey !important;"> 443 <tbody style="border: 1px solid lightgrey !important;">
444 <tr 444 <tr
445 v-for="subject in value" 445 v-for="subject in value"
446 style="border: 1px solid lightgrey !important;" 446 style="border: 1px solid lightgrey !important;"
447 class="tr" 447 class="tr"
448 > 448 >
449 <td 449 <td
450 style="border: 1px solid lightgrey !important;padding: 4px;" 450 style="border: 1px solid lightgrey !important;padding: 4px;"
451 >{{subject.subjectName}}</td> 451 >{{subject.subjectName}}</td>
452 <template v-for="(exam, i) in subject.studentsMarks"> 452 <template v-for="(exam, i) in subject.studentsMarks">
453 <td 453 <td
454 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;" 454 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;"
455 >{{exam.marksScored}}</td> 455 >{{exam.marksScored}}</td>
456 <td 456 <td
457 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;" 457 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;"
458 >{{exam.markDistributionId.markValue}}</td> 458 >{{exam.markDistributionId.markValue}}</td>
459 </template> 459 </template>
460 <td 460 <td
461 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;" 461 style="border: 1px solid lightgrey !important;padding: 4px; text-align: left;"
462 >{{subject.totalMarks}}</td> 462 >{{subject.totalMarks}}</td>
463 </tr> 463 </tr>
464 </tbody> 464 </tbody>
465 </table> 465 </table>
466 </div> 466 </div>
467 </v-card> 467 </v-card>
468 </v-flex> 468 </v-flex>
469 <!-- ****** TABLE GRADE MARK ****** --> 469 <!-- ****** TABLE GRADE MARK ****** -->
470 <v-flex xs9 sm9 md8 v-show="showGrade"> 470 <v-flex xs9 sm9 md8 v-show="showGrade">
471 <v-card 471 <v-card
472 v-for="(value, id, index) in filterData" 472 v-for="(value, id, index) in filterData"
473 :key="index" 473 :key="index"
474 flat 474 flat
475 style="border: 1px solid lightgrey;margin-bottom:14px;" 475 style="border: 1px solid lightgrey;margin-bottom:14px;"
476 > 476 >
477 <v-card-title class="subheading">{{value[0].examId.examName}}</v-card-title> 477 <v-card-title class="subheading">{{value[0].examId.examName}}</v-card-title>
478 <table 478 <table
479 class="mb-5 tableRsponsive feeTypeTable" 479 class="mb-5 tableRsponsive feeTypeTable"
480 style="border: 1px solid lightgrey; 480 style="border: 1px solid lightgrey;
481 border-collapse: collapse;!important 481 border-collapse: collapse;!important
482 table-layout: auto !important; 482 table-layout: auto !important;
483 width: 100% !important;" 483 width: 100% !important;"
484 > 484 >
485 <thead style="border: 1px solid lightgrey !important;"> 485 <thead style="border: 1px solid lightgrey !important;">
486 <tr 486 <tr
487 class="info white--text" 487 class="info white--text"
488 style="border: 1px solid lightgrey !important;padding:4px;" 488 style="border: 1px solid lightgrey !important;padding:4px;"
489 > 489 >
490 <td style="border: 1px solid lightgrey !important;padding: 4px;">Subject</td> 490 <td style="border: 1px solid lightgrey !important;padding: 4px;">Subject</td>
491 <td style="border: 1px solid lightgrey !important;padding: 4px;">Grade</td> 491 <td style="border: 1px solid lightgrey !important;padding: 4px;">Grade</td>
492 </tr> 492 </tr>
493 </thead> 493 </thead>
494 <tbody style="border: 1px solid lightgrey !important;"> 494 <tbody style="border: 1px solid lightgrey !important;">
495 <tr v-for="subject in value" style="border: 1px solid lightgrey !important;"> 495 <tr v-for="subject in value" style="border: 1px solid lightgrey !important;">
496 <td 496 <td
497 style="border: 1px solid lightgrey !important;padding: 4px;" 497 style="border: 1px solid lightgrey !important;padding: 4px;"
498 >{{ subject.subjectName }}</td> 498 >{{ subject.subjectName }}</td>
499 <td 499 <td
500 style="border: 1px solid lightgrey !important;padding: 4px;" 500 style="border: 1px solid lightgrey !important;padding: 4px;"
501 >{{ subject.grade }}</td> 501 >{{ subject.grade }}</td>
502 </tr> 502 </tr>
503 </tbody> 503 </tbody>
504 </table> 504 </table>
505 </v-card> 505 </v-card>
506 <v-card v-if="markData == ''"> 506 <v-card v-if="markData.length == 0">
507 <v-layout> 507 <v-layout>
508 <v-flex xs12> 508 <v-flex xs12>
509 <h5 class="text-xs-center pa-3">No Data Found</h5> 509 <h5 class="text-xs-center pa-3">No Data Found</h5>
510 </v-flex> 510 </v-flex>
511 </v-layout> 511 </v-layout>
512 </v-card> 512 </v-card>
513 </v-flex> 513 </v-flex>
514 </v-layout> 514 </v-layout>
515 </v-flex> 515 </v-flex>
516 </v-flex> 516 </v-flex>
517 </v-container> 517 </v-container>
518 <div class="loader" v-if="showLoader"> 518 <div class="loader" v-if="showLoader">
519 <v-progress-circular indeterminate color="white"></v-progress-circular> 519 <v-progress-circular indeterminate color="white"></v-progress-circular>
520 </div> 520 </div>
521 </v-app> 521 </v-app>
522 </template> 522 </template>
523 523
524 <script> 524 <script>
525 import http from "@/Services/http.js"; 525 import http from "@/Services/http.js";
526 import moment from "moment"; 526 import moment from "moment";
527 import _ from "underscore"; 527 import _ from "underscore";
528 528
529 export default { 529 export default {
530 data: () => ({ 530 data: () => ({
531 showLoader: true, 531 showLoader: true,
532 nameShow: false, 532 nameShow: false,
533 showMark: true, 533 showMark: true,
534 showGrade: false, 534 showGrade: false,
535 hideViewMark: false, 535 hideViewMark: false,
536 markData: [], 536 markData: [],
537 token: "", 537 token: "",
538 markDistributions: [], 538 markDistributions: [],
539 markParticularDistributionData: [], 539 markParticularDistributionData: [],
540 filterData: [], 540 filterData: [],
541 output: null, 541 output: null,
542 gradeAPlus: "A+", 542 gradeAPlus: "A+",
543 gradeA: "A", 543 gradeA: "A",
544 gradeBPlus: "B+", 544 gradeBPlus: "B+",
545 gradeB: "B", 545 gradeB: "B",
546 gradeCPlus: "C+", 546 gradeCPlus: "C+",
547 gradeC: "C", 547 gradeC: "C",
548 selectMarkList: "Mark", 548 selectMarkList: "Mark",
549 selectMark: ["Mark", "Grade"], 549 selectMark: ["Mark", "Grade"],
550 MarkData: "", 550 MarkData: "",
551 userData: {} 551 userData: {}
552 }), 552 }),
553 mounted() { 553 mounted() {
554 this.token = this.$store.state.token; 554 this.token = this.$store.state.token;
555 this.getMarkList(); 555 this.getMarkList();
556 this.getUserData(); 556 this.getUserData();
557 }, 557 },
558 methods: { 558 methods: {
559 getMarkList() { 559 getMarkList() {
560 this.showLoader = true; 560 this.showLoader = true;
561 http() 561 http()
562 .get("/getParticularMark", { 562 .get("/getParticularMark", {
563 params: { studentId: this.$route.params.markId }, 563 params: { studentId: this.$route.params.markId },
564 headers: { Authorization: "Bearer " + this.token } 564 headers: { Authorization: "Bearer " + this.token }
565 }) 565 })
566 .then(response => { 566 .then(response => {
567 this.markData = response.data.data; 567 this.markData = response.data.data;
568 let newData = response.data.data; 568 let newData = response.data.data;
569 // console.log("newData", newData); 569 // console.log("newData", newData);
570 for (var i = 0; i < newData.length; i++) { 570 for (var i = 0; i < newData.length; i++) {
571 newData[i].examination = newData[i].examId._id; 571 newData[i].examination = newData[i].examId._id;
572 } 572 }
573 this.filterData = _.groupBy(newData, ["examination"]); 573 this.filterData = _.groupBy(newData, ["examination"]);
574 // console.log("this.filterData", this.filterData); 574 // console.log("this.filterData", this.filterData);
575 for (let data in this.filterData) { 575 for (let data in this.filterData) {
576 for (let item in this.filterData[data]) { 576 for (let item in this.filterData[data]) {
577 var totalMarks = 0; 577 var totalMarks = 0;
578 for ( 578 for (
579 let i = 0; 579 let i = 0;
580 i < this.filterData[data][item].studentsMarks.length; 580 i < this.filterData[data][item].studentsMarks.length;
581 i++ 581 i++
582 ) { 582 ) {
583 // console.log("this.filterData[data][item].studentsMarks[i]",this.filterData[data][item].studentsMarks[i] 583 // console.log("this.filterData[data][item].studentsMarks[i]",this.filterData[data][item].studentsMarks[i]
584 // .marksScored) 584 // .marksScored)
585 totalMarks += this.filterData[data][item].studentsMarks[i] 585 totalMarks += this.filterData[data][item].studentsMarks[i]
586 .marksScored; 586 .marksScored;
587 } 587 }
588 this.filterData[data][item].totalMarks = totalMarks; 588 this.filterData[data][item].totalMarks = totalMarks;
589 589
590 if (totalMarks > 90) { 590 if (totalMarks > 90) {
591 this.filterData[data][item].grade = this.gradeAPlus; 591 this.filterData[data][item].grade = this.gradeAPlus;
592 } else if (totalMarks > 80 && totalMarks < 90) { 592 } else if (totalMarks > 80 && totalMarks < 90) {
593 this.filterData[data][item].grade = this.gradeA; 593 this.filterData[data][item].grade = this.gradeA;
594 } else if (totalMarks > 70 && totalMarks < 80) { 594 } else if (totalMarks > 70 && totalMarks < 80) {
595 this.filterData[data][item].grade = this.gradeBPlus; 595 this.filterData[data][item].grade = this.gradeBPlus;
596 } else if (totalMarks > 60 && totalMarks < 70) { 596 } else if (totalMarks > 60 && totalMarks < 70) {
597 this.filterData[data][item].grade = this.gradeB; 597 this.filterData[data][item].grade = this.gradeB;
598 } else if (totalMarks > 50 && totalMarks < 60) { 598 } else if (totalMarks > 50 && totalMarks < 60) {
599 this.filterData[data][item].grade = this.gradeCPlus; 599 this.filterData[data][item].grade = this.gradeCPlus;
600 } else if (totalMarks > 40 && totalMarks < 50) { 600 } else if (totalMarks > 40 && totalMarks < 50) {
601 this.filterData[data][item].grade = this.gradeC; 601 this.filterData[data][item].grade = this.gradeC;
602 } 602 }
603 } 603 }
604 } 604 }
605 this.showLoader = false; 605 this.showLoader = false;
606 }) 606 })
607 .catch(error => { 607 .catch(error => {
608 this.showLoader = false; 608 this.showLoader = false;
609 this.snackbar = true; 609 this.snackbar = true;
610 this.text = error.response.data.message; 610 this.text = error.response.data.message;
611 if (error.response.status === 401) { 611 if (error.response.status === 401) {
612 this.$router.replace({ path: "/" }); 612 this.$router.replace({ path: "/" });
613 this.$store.dispatch("setToken", null); 613 this.$store.dispatch("setToken", null);
614 this.$store.dispatch("Id", null); 614 this.$store.dispatch("Id", null);
615 } 615 }
616 }); 616 });
617 }, 617 },
618 print() { 618 print() {
619 // Pass the element id here 619 // Pass the element id here
620 this.$htmlToPaper("printMe"); 620 this.$htmlToPaper("printMe");
621 }, 621 },
622 getUserData() { 622 getUserData() {
623 http() 623 http()
624 .get("/getParticularUserDetail") 624 .get("/getParticularUserDetail")
625 .then(response => { 625 .then(response => {
626 this.userData = response.data.data; 626 this.userData = response.data.data;
627 }) 627 })
628 .catch(error => { 628 .catch(error => {
629 // if (error.response.status === 401) { 629 // if (error.response.status === 401) {
630 // this.$router.replace({ path: "/" }); 630 // this.$router.replace({ path: "/" });
631 // this.$store.dispatch("setToken", null); 631 // this.$store.dispatch("setToken", null);
632 // this.$store.dispatch("Id", null); 632 // this.$store.dispatch("Id", null);
633 // } 633 // }
634 }); 634 });
635 }, 635 },
636 selectMarkData(select) { 636 selectMarkData(select) {
637 if (select == "Mark") { 637 if (select == "Mark") {
638 this.showMark = true; 638 this.showMark = true;
639 this.showGrade = false; 639 this.showGrade = false;
640 } else if (select == "Grade") { 640 } else if (select == "Grade") {
641 this.showGrade = true; 641 this.showGrade = true;
642 this.showMark = false; 642 this.showMark = false;
643 } 643 }
644 } 644 }
645 } 645 }
646 }; 646 };
647 </script> 647 </script>
648 648
649 <style scoped> 649 <style scoped>
650 .add-button { 650 .add-button {
651 background: #feb83c !important; 651 background: #feb83c !important;
652 border-color: #feb83c !important; 652 border-color: #feb83c !important;
653 text-transform: none !important; 653 text-transform: none !important;
654 -webkit-box-shadow: none !important; 654 -webkit-box-shadow: none !important;
655 box-shadow: none !important; 655 box-shadow: none !important;
656 } 656 }
657 .card-styles { 657 .card-styles {
658 background: #7f62f8 !important; 658 background: #7f62f8 !important;
659 border-color: #7f62f8 !important; 659 border-color: #7f62f8 !important;
660 } 660 }
661 .open-dialog-button { 661 .open-dialog-button {
662 background: #827bfa !important; 662 background: #827bfa !important;
663 border-color: #827bfa !important; 663 border-color: #827bfa !important;
664 text-transform: none !important; 664 text-transform: none !important;
665 } 665 }
666 /* table { 666 /* table {
667 border-collapse: collapse; 667 border-collapse: collapse;
668 border: 1px solid #e2e7eb; 668 border: 1px solid #e2e7eb;
669 } 669 }
670 th, 670 th,
671 td { 671 td {
672 border: 1px solid #e2e7eb; 672 border: 1px solid #e2e7eb;
673 text-align: center; 673 text-align: center;
674 } 674 }
675 table.feeTypeTable { 675 table.feeTypeTable {
676 table-layout: auto !important; 676 table-layout: auto !important;
677 width: 100% !important; 677 width: 100% !important;
678 } */ 678 } */
679 .bg-sky { 679 .bg-sky {
680 background-color: #98b2cc !important; 680 background-color: #98b2cc !important;
681 } 681 }
682 .bg-sky-light { 682 .bg-sky-light {
683 background-color: #89a0b8; 683 background-color: #89a0b8;
684 } 684 }
685 .bg-purple { 685 .bg-purple {
686 background-color: #9583ac; 686 background-color: #9583ac;
687 } 687 }
688 .bg-skyDark { 688 .bg-skyDark {
689 background-color: #956785; 689 background-color: #956785;
690 } 690 }
691 .loader { 691 .loader {
692 width: 100%; 692 width: 100%;
693 height: 100%; 693 height: 100%;
694 position: fixed; 694 position: fixed;
695 top: 0; 695 top: 0;
696 left: 0; 696 left: 0;
697 text-align: center; 697 text-align: center;
698 background-color: rgba(0, 0, 0, 0.5); 698 background-color: rgba(0, 0, 0, 0.5);
699 z-index: 999; 699 z-index: 999;
700 } 700 }
701 /* .tr:nth-child(odd){background-color: #f2f2f2} */ 701 /* .tr:nth-child(odd){background-color: #f2f2f2} */
702 702
703 .loader > div { 703 .loader > div {
704 position: relative; 704 position: relative;
705 top: calc(50% - 16px); 705 top: calc(50% - 16px);
706 } 706 }
707 @media screen and (max-width: 380px) { 707 @media screen and (max-width: 380px) {
708 .tableRsponsive { 708 .tableRsponsive {
709 /* display: block; */ 709 /* display: block; */
710 position: relative; 710 position: relative;
711 overflow: scroll; 711 overflow: scroll;
712 } 712 }
713 } 713 }
714 </style> 714 </style>
src/pages/Parent/parents.vue
1 <template> 1 <template>
2 <v-container fluid class="body-color"> 2 <v-container fluid class="body-color">
3 <v-dialog v-model="editParentDilaog" max-width="600px" scrollable> 3 <v-dialog v-model="editParentDilaog" max-width="600px" scrollable>
4 <v-card flat class="card-style pa-2" dark> 4 <v-card flat class="card-style pa-2" dark>
5 <v-layout> 5 <v-layout>
6 <v-flex xs12> 6 <v-flex xs12>
7 <label class="title text-xs-center">Edit Parents Details</label> 7 <label class="title text-xs-center">Edit Parents Details</label>
8 <v-icon size="24" class="right" @click="editParentDilaog = false">cancel</v-icon> 8 <v-icon size="24" class="right" @click="editParentDilaog = false">cancel</v-icon>
9 </v-flex> 9 </v-flex>
10 </v-layout> 10 </v-layout>
11 <v-card-text class="hidden-xs-only hidden-sm-only"> 11 <v-card-text class="hidden-xs-only hidden-sm-only">
12 <v-form ref="editParentForm" v-model="validEditParent" lazy-validation> 12 <v-form ref="editParentForm" v-model="validEditParent" lazy-validation>
13 <v-flex xs12> 13 <v-flex xs12>
14 <v-layout> 14 <v-layout>
15 <v-flex xs3 sm4 class="pt-4 subheading"> 15 <v-flex xs3 sm4 class="pt-4 subheading">
16 <label class="right">Email ID:</label> 16 <label class="right">Email ID:</label>
17 </v-flex> 17 </v-flex>
18 <v-flex xs8 sm6 class="ml-3"> 18 <v-flex xs8 sm6 class="ml-3">
19 <v-text-field 19 <v-text-field
20 placeholder="fill your email" 20 placeholder="fill your email"
21 v-model="editedItem.email" 21 v-model="editedItem.email"
22 type="text" 22 type="text"
23 name="email" 23 name="email"
24 required 24 required
25 ></v-text-field> 25 ></v-text-field>
26 </v-flex> 26 </v-flex>
27 </v-layout> 27 </v-layout>
28 </v-flex> 28 </v-flex>
29 <v-flex xs12> 29 <v-flex xs12>
30 <v-layout> 30 <v-layout>
31 <v-flex xs3 sm4 class="pt-4 subheading"> 31 <v-flex xs3 sm4 class="pt-4 subheading">
32 <label class="right">Father Name:</label> 32 <label class="right">Father Name:</label>
33 </v-flex> 33 </v-flex>
34 <v-flex xs8 sm6 class="ml-3"> 34 <v-flex xs8 sm6 class="ml-3">
35 <v-text-field 35 <v-text-field
36 v-model="editedItem.fatherName" 36 v-model="editedItem.fatherName"
37 placeholder="fill your father Name" 37 placeholder="fill your father Name"
38 required 38 required
39 ></v-text-field> 39 ></v-text-field>
40 </v-flex> 40 </v-flex>
41 </v-layout> 41 </v-layout>
42 </v-flex> 42 </v-flex>
43 <v-flex xs12> 43 <v-flex xs12>
44 <v-layout> 44 <v-layout>
45 <v-flex xs3 sm4 class="pt-4 subheading"> 45 <v-flex xs3 sm4 class="pt-4 subheading">
46 <label class="right">Father Cell No:</label> 46 <label class="right">Father Cell No:</label>
47 </v-flex> 47 </v-flex>
48 <v-flex xs8 sm6 class="ml-3"> 48 <v-flex xs8 sm6 class="ml-3">
49 <v-text-field 49 <v-text-field
50 v-model="editedItem.fatherCellNo" 50 v-model="editedItem.fatherCellNo"
51 placeholder="fill your father Cell Number" 51 placeholder="fill your father Cell Number"
52 :rules="editFatherNoRule" 52 :rules="editFatherNoRule"
53 type="number" 53 type="number"
54 required 54 required
55 ></v-text-field> 55 ></v-text-field>
56 </v-flex> 56 </v-flex>
57 </v-layout> 57 </v-layout>
58 </v-flex> 58 </v-flex>
59 <v-flex xs12> 59 <v-flex xs12>
60 <v-layout> 60 <v-layout>
61 <v-flex xs3 sm4 class="pt-4 subheading"> 61 <v-flex xs3 sm4 class="pt-4 subheading">
62 <label class="right">Father Profession:</label> 62 <label class="right">Father Profession:</label>
63 </v-flex> 63 </v-flex>
64 <v-flex xs8 sm6 class="ml-3"> 64 <v-flex xs8 sm6 class="ml-3">
65 <v-text-field 65 <v-text-field
66 v-model="editedItem.fatherProfession" 66 v-model="editedItem.fatherProfession"
67 placeholder="fill your father Profession" 67 placeholder="fill your father Profession"
68 required 68 required
69 ></v-text-field> 69 ></v-text-field>
70 </v-flex> 70 </v-flex>
71 </v-layout> 71 </v-layout>
72 </v-flex> 72 </v-flex>
73 <v-flex xs12> 73 <v-flex xs12>
74 <v-layout> 74 <v-layout>
75 <v-flex xs3 sm4 class="pt-4 subheading"> 75 <v-flex xs3 sm4 class="pt-4 subheading">
76 <label class="right">Mother Name:</label> 76 <label class="right">Mother Name:</label>
77 </v-flex> 77 </v-flex>
78 <v-flex xs8 sm6 class="ml-3"> 78 <v-flex xs8 sm6 class="ml-3">
79 <v-text-field 79 <v-text-field
80 v-model="editedItem.motherName" 80 v-model="editedItem.motherName"
81 placeholder="fill your Mother Name" 81 placeholder="fill your Mother Name"
82 type="text" 82 type="text"
83 required 83 required
84 ></v-text-field> 84 ></v-text-field>
85 </v-flex> 85 </v-flex>
86 </v-layout> 86 </v-layout>
87 </v-flex> 87 </v-flex>
88 <v-flex xs12> 88 <v-flex xs12>
89 <v-layout> 89 <v-layout>
90 <v-flex xs3 sm4 class="pt-4 subheading"> 90 <v-flex xs3 sm4 class="pt-4 subheading">
91 <label class="right">Mother Cell No:</label> 91 <label class="right">Mother Cell No:</label>
92 </v-flex> 92 </v-flex>
93 <v-flex xs8 sm6 class="ml-3"> 93 <v-flex xs8 sm6 class="ml-3">
94 <v-text-field 94 <v-text-field
95 v-model="editedItem.motherCellNo" 95 v-model="editedItem.motherCellNo"
96 placeholder="fill your Mother Cell Number" 96 placeholder="fill your Mother Cell Number"
97 type="number" 97 type="number"
98 required 98 required
99 ></v-text-field> 99 ></v-text-field>
100 </v-flex> 100 </v-flex>
101 </v-layout> 101 </v-layout>
102 </v-flex> 102 </v-flex>
103 <v-flex xs12> 103 <v-flex xs12>
104 <v-layout> 104 <v-layout>
105 <v-flex xs3 sm4 class="pt-4 subheading"> 105 <v-flex xs3 sm4 class="pt-4 subheading">
106 <label class="right">Mother Profession:</label> 106 <label class="right">Mother Profession:</label>
107 </v-flex> 107 </v-flex>
108 <v-flex xs8 sm6 class="ml-3"> 108 <v-flex xs8 sm6 class="ml-3">
109 <v-text-field 109 <v-text-field
110 v-model="editedItem.motherProfession" 110 v-model="editedItem.motherProfession"
111 placeholder="fill your Mother Profession" 111 placeholder="fill your Mother Profession"
112 type="text" 112 type="text"
113 required 113 required
114 ></v-text-field> 114 ></v-text-field>
115 </v-flex> 115 </v-flex>
116 </v-layout> 116 </v-layout>
117 <v-layout> 117 <v-layout>
118 <v-flex xs4 class="pt-4 subheading"> 118 <v-flex xs4 class="pt-4 subheading">
119 <label class="right">Password:</label> 119 <label class="right">Password:</label>
120 </v-flex> 120 </v-flex>
121 <v-flex xs8 class="ml-3"> 121 <v-flex xs8 class="ml-3">
122 <v-text-field 122 <v-text-field
123 :append-icon="e1 ? 'visibility_off' : 'visibility'" 123 v-model="editedItem.password"
124 :append-icon-cb="() => (e1 = !e1)" 124 placeholder="Enter Password"
125 :type="e1 ? 'password' : 'text'" 125 type="text"
126 :rules="password"
127 placeholder="Enter Your Password"
128 required 126 required
129 ></v-text-field> 127 ></v-text-field>
130 </v-flex> 128 </v-flex>
131 </v-layout> 129 </v-layout>
132 </v-flex> 130 </v-flex>
133 <v-layout> 131 <v-layout>
134 <v-flex xs12 sm12> 132 <v-flex xs12 sm12>
135 <v-card-actions> 133 <v-card-actions>
136 <v-spacer></v-spacer> 134 <v-spacer></v-spacer>
137 <v-btn round dark @click="save" class="add-button">Save</v-btn> 135 <v-btn round dark @click="save" class="add-button">Save</v-btn>
138 <v-spacer></v-spacer> 136 <v-spacer></v-spacer>
139 </v-card-actions> 137 </v-card-actions>
140 </v-flex> 138 </v-flex>
141 </v-layout> 139 </v-layout>
142 </v-form> 140 </v-form>
143 </v-card-text> 141 </v-card-text>
144 <v-card-text style="height: 600px;" class="hidden-lg-only hidden-xl-only hidden-md-only"> 142 <v-card-text style="height: 600px;" class="hidden-lg-only hidden-xl-only hidden-md-only">
145 <v-flex xs12> 143 <v-flex xs12>
146 <v-layout wrap> 144 <v-layout wrap>
147 <v-flex xs12 class="pt-4 subheading"> 145 <v-flex xs12 class="pt-4 subheading">
148 <label>Email ID:</label> 146 <label>Email ID:</label>
149 </v-flex> 147 </v-flex>
150 <v-flex xs12> 148 <v-flex xs12>
151 <v-text-field 149 <v-text-field
152 placeholder="fill your email" 150 placeholder="fill your email"
153 v-model="editedItem.email" 151 v-model="editedItem.email"
154 type="text" 152 type="text"
155 name="email" 153 name="email"
156 required 154 required
157 ></v-text-field> 155 ></v-text-field>
158 </v-flex> 156 </v-flex>
159 </v-layout> 157 </v-layout>
160 </v-flex> 158 </v-flex>
161 <v-flex xs12> 159 <v-flex xs12>
162 <v-layout wrap> 160 <v-layout wrap>
163 <v-flex xs12 class="pt-4 subheading"> 161 <v-flex xs12 class="pt-4 subheading">
164 <label>Father Name:</label> 162 <label>Father Name:</label>
165 </v-flex> 163 </v-flex>
166 <v-flex xs12> 164 <v-flex xs12>
167 <v-text-field 165 <v-text-field
168 v-model="editedItem.fatherName" 166 v-model="editedItem.fatherName"
169 placeholder="fill your father Name" 167 placeholder="fill your father Name"
170 required 168 required
171 ></v-text-field> 169 ></v-text-field>
172 </v-flex> 170 </v-flex>
173 </v-layout> 171 </v-layout>
174 </v-flex> 172 </v-flex>
175 <v-flex xs12> 173 <v-flex xs12>
176 <v-layout wrap> 174 <v-layout wrap>
177 <v-flex xs12 class="pt-4 subheading"> 175 <v-flex xs12 class="pt-4 subheading">
178 <label>Father Cell No:</label> 176 <label>Father Cell No:</label>
179 </v-flex> 177 </v-flex>
180 <v-flex xs12> 178 <v-flex xs12>
181 <v-text-field 179 <v-text-field
182 v-model="editedItem.fatherCellNo" 180 v-model="editedItem.fatherCellNo"
183 placeholder="fill your father Cell Number" 181 placeholder="fill your father Cell Number"
184 type="number" 182 type="number"
185 required 183 required
186 ></v-text-field> 184 ></v-text-field>
187 </v-flex> 185 </v-flex>
188 </v-layout> 186 </v-layout>
189 </v-flex> 187 </v-flex>
190 <v-flex xs12> 188 <v-flex xs12>
191 <v-layout wrap> 189 <v-layout wrap>
192 <v-flex xs12 class="pt-4 subheading"> 190 <v-flex xs12 class="pt-4 subheading">
193 <label>Father Profession:</label> 191 <label>Father Profession:</label>
194 </v-flex> 192 </v-flex>
195 <v-flex xs12> 193 <v-flex xs12>
196 <v-text-field 194 <v-text-field
197 v-model="editedItem.fatherProfession" 195 v-model="editedItem.fatherProfession"
198 placeholder="fill your father Profession" 196 placeholder="fill your father Profession"
199 required 197 required
200 ></v-text-field> 198 ></v-text-field>
201 </v-flex> 199 </v-flex>
202 </v-layout> 200 </v-layout>
203 </v-flex> 201 </v-flex>
204 <v-flex xs12> 202 <v-flex xs12>
205 <v-layout wrap> 203 <v-layout wrap>
206 <v-flex xs12 class="pt-4 subheading"> 204 <v-flex xs12 class="pt-4 subheading">
207 <label>Mother Name:</label> 205 <label>Mother Name:</label>
208 </v-flex> 206 </v-flex>
209 <v-flex xs12> 207 <v-flex xs12>
210 <v-text-field 208 <v-text-field
211 v-model="editedItem.motherName" 209 v-model="editedItem.motherName"
212 placeholder="fill your Mother Name" 210 placeholder="fill your Mother Name"
213 type="text" 211 type="text"
214 required 212 required
215 ></v-text-field> 213 ></v-text-field>
216 </v-flex> 214 </v-flex>
217 </v-layout> 215 </v-layout>
218 </v-flex> 216 </v-flex>
219 <v-flex xs12> 217 <v-flex xs12>
220 <v-layout wrap> 218 <v-layout wrap>
221 <v-flex xs12 class="pt-4 subheading"> 219 <v-flex xs12 class="pt-4 subheading">
222 <label>Mother Cell No:</label> 220 <label>Mother Cell No:</label>
223 </v-flex> 221 </v-flex>
224 <v-flex xs12> 222 <v-flex xs12>
225 <v-text-field 223 <v-text-field
226 v-model="editedItem.motherCellNo" 224 v-model="editedItem.motherCellNo"
227 placeholder="fill your Mother Cell Number" 225 placeholder="fill your Mother Cell Number"
228 type="number" 226 type="number"
229 required 227 required
230 ></v-text-field> 228 ></v-text-field>
231 </v-flex> 229 </v-flex>
232 </v-layout> 230 </v-layout>
233 </v-flex> 231 </v-flex>
234 <v-flex xs12> 232 <v-flex xs12>
235 <v-layout wrap> 233 <v-layout wrap>
236 <v-flex xs12 class="pt-4 subheading"> 234 <v-flex xs12 class="pt-4 subheading">
237 <label>Mother Profession:</label> 235 <label>Mother Profession:</label>
238 </v-flex> 236 </v-flex>
239 <v-flex xs12> 237 <v-flex xs12>
240 <v-text-field 238 <v-text-field
241 v-model="editedItem.motherProfession" 239 v-model="editedItem.motherProfession"
242 placeholder="fill your Mother Profession" 240 placeholder="fill your Mother Profession"
243 type="text" 241 type="text"
244 required 242 required
245 ></v-text-field> 243 ></v-text-field>
246 </v-flex> 244 </v-flex>
247 <v-flex xs12 class="pt-4 subheading"> 245 <v-flex xs12 class="pt-4 subheading">
248 <label>Password:</label> 246 <label>Password:</label>
249 </v-flex> 247 </v-flex>
250 <v-flex xs12> 248 <v-flex xs12>
251 <v-text-field 249 <v-text-field
252 v-model="editedItem.password" 250 v-model="editedItem.password"
253 placeholder="Enter Password" 251 placeholder="Enter Password"
254 type="text" 252 type="text"
255 required 253 required
256 ></v-text-field> 254 ></v-text-field>
257 </v-flex> 255 </v-flex>
258 </v-layout> 256 </v-layout>
259 </v-flex> 257 </v-flex>
260 <v-layout> 258 <v-layout>
261 <v-flex xs12 sm12> 259 <v-flex xs12 sm12>
262 <v-card-actions> 260 <v-card-actions>
263 <v-spacer></v-spacer> 261 <v-spacer></v-spacer>
264 <v-btn round dark @click="save" class="add-button">Save</v-btn> 262 <v-btn round dark @click="save" class="add-button">Save</v-btn>
265 <v-spacer></v-spacer> 263 <v-spacer></v-spacer>
266 </v-card-actions> 264 </v-card-actions>
267 </v-flex> 265 </v-flex>
268 </v-layout> 266 </v-layout>
269 </v-card-text> 267 </v-card-text>
270 </v-card> 268 </v-card>
271 </v-dialog> 269 </v-dialog>
272 270
273 <!-- ****** PROFILE VIEW Parents DEATILS ****** --> 271 <!-- ****** PROFILE VIEW Parents DEATILS ****** -->
274 272
275 <v-dialog v-model="profileParentDialog" max-width="500px" scrollable> 273 <v-dialog v-model="profileParentDialog" max-width="500px" scrollable>
276 <v-card class="card-style pa-2" dark> 274 <v-card class="card-style pa-2" dark>
277 <v-layout> 275 <v-layout>
278 <v-flex xs12> 276 <v-flex xs12>
279 <label class="title text-xs-center">View Parent Details</label> 277 <label class="title text-xs-center">View Parent Details</label>
280 <v-icon size="24" class="right" @click="profileParentDialog = false">cancel</v-icon> 278 <v-icon size="24" class="right" @click="profileParentDialog = false">cancel</v-icon>
281 </v-flex> 279 </v-flex>
282 </v-layout> 280 </v-layout>
283 <v-flex align-center justify-center layout text-xs-center class="mt-3"> 281 <v-flex align-center justify-center layout text-xs-center class="mt-3">
284 <v-avatar size="100px"> 282 <v-avatar size="100px">
285 <img src="/static/icon/user.png" v-if="!editedItem.profilePicUrl" /> 283 <img src="/static/icon/user.png" v-if="!editedItem.profilePicUrl" />
286 <img :src="editedItem.profilePicUrl" v-else-if="editedItem.profilePicUrl" /> 284 <img :src="editedItem.profilePicUrl" v-else-if="editedItem.profilePicUrl" />
287 </v-avatar> 285 </v-avatar>
288 </v-flex> 286 </v-flex>
289 <v-container grid-list-md> 287 <v-container grid-list-md>
290 <v-layout wrap> 288 <v-layout wrap>
291 <v-flex xs12> 289 <v-flex xs12>
292 <v-layout> 290 <v-layout>
293 <v-flex xs12 sm12> 291 <v-flex xs12 sm12>
294 <v-layout> 292 <v-layout>
295 <v-flex xs6> 293 <v-flex xs6>
296 <h5 class="right my-1"> 294 <h5 class="right my-1">
297 <b>Email:</b> 295 <b>Email:</b>
298 </h5> 296 </h5>
299 </v-flex> 297 </v-flex>
300 <v-flex xs6> 298 <v-flex xs6>
301 <h5 class="my-1">{{ editedItem.email }}</h5> 299 <h5 class="my-1">{{ editedItem.email }}</h5>
302 </v-flex> 300 </v-flex>
303 </v-layout> 301 </v-layout>
304 </v-flex> 302 </v-flex>
305 </v-layout> 303 </v-layout>
306 <v-layout> 304 <v-layout>
307 <v-flex xs12> 305 <v-flex xs12>
308 <v-layout> 306 <v-layout>
309 <v-flex xs6> 307 <v-flex xs6>
310 <b> 308 <b>
311 <h5 class="right my-1"> 309 <h5 class="right my-1">
312 <b>Fahter Name:</b> 310 <b>Fahter Name:</b>
313 </h5> 311 </h5>
314 </b> 312 </b>
315 </v-flex> 313 </v-flex>
316 <v-flex xs6> 314 <v-flex xs6>
317 <h5 class="my-1">{{ editedItem.fatherName }}</h5> 315 <h5 class="my-1">{{ editedItem.fatherName }}</h5>
318 </v-flex> 316 </v-flex>
319 </v-layout> 317 </v-layout>
320 </v-flex> 318 </v-flex>
321 </v-layout> 319 </v-layout>
322 <v-layout> 320 <v-layout>
323 <v-flex xs12> 321 <v-flex xs12>
324 <v-layout> 322 <v-layout>
325 <v-flex xs6> 323 <v-flex xs6>
326 <b> 324 <b>
327 <h5 class="right my-1"> 325 <h5 class="right my-1">
328 <b>Mother Name:</b> 326 <b>Mother Name:</b>
329 </h5> 327 </h5>
330 </b> 328 </b>
331 </v-flex> 329 </v-flex>
332 <v-flex xs6> 330 <v-flex xs6>
333 <h5 class="my-1">{{ editedItem.motherName }}</h5> 331 <h5 class="my-1">{{ editedItem.motherName }}</h5>
334 </v-flex> 332 </v-flex>
335 </v-layout> 333 </v-layout>
336 </v-flex> 334 </v-flex>
337 </v-layout> 335 </v-layout>
338 <v-layout> 336 <v-layout>
339 <v-flex xs12> 337 <v-flex xs12>
340 <v-layout> 338 <v-layout>
341 <v-flex sm6 xs6> 339 <v-flex sm6 xs6>
342 <b> 340 <b>
343 <h5 class="right my-1"> 341 <h5 class="right my-1">
344 <b>Father Cell No:</b> 342 <b>Father Cell No:</b>
345 </h5> 343 </h5>
346 </b> 344 </b>
347 </v-flex> 345 </v-flex>
348 <v-flex sm6 xs6> 346 <v-flex sm6 xs6>
349 <h5 class="my-1">{{ editedItem.fatherCellNo }}</h5> 347 <h5 class="my-1">{{ editedItem.fatherCellNo }}</h5>
350 </v-flex> 348 </v-flex>
351 </v-layout> 349 </v-layout>
352 </v-flex> 350 </v-flex>
353 </v-layout> 351 </v-layout>
354 <v-layout> 352 <v-layout>
355 <v-flex xs12> 353 <v-flex xs12>
356 <v-layout> 354 <v-layout>
357 <v-flex xs6> 355 <v-flex xs6>
358 <b> 356 <b>
359 <h5 class="right my-1"> 357 <h5 class="right my-1">
360 <b>Mother Cell No:</b> 358 <b>Mother Cell No:</b>
361 </h5> 359 </h5>
362 </b> 360 </b>
363 </v-flex> 361 </v-flex>
364 <v-flex xs6> 362 <v-flex xs6>
365 <h5 class="my-1">{{ editedItem.motherCellNo }}</h5> 363 <h5 class="my-1">{{ editedItem.motherCellNo }}</h5>
366 </v-flex> 364 </v-flex>
367 </v-layout> 365 </v-layout>
368 </v-flex> 366 </v-flex>
369 </v-layout> 367 </v-layout>
370 <v-layout> 368 <v-layout>
371 <v-flex xs12> 369 <v-flex xs12>
372 <v-layout> 370 <v-layout>
373 <v-flex xs6> 371 <v-flex xs6>
374 <b> 372 <b>
375 <h5 class="right my-1 hidden-lg-only hidden-xl-only hidden-md-only"> 373 <h5 class="right my-1 hidden-lg-only hidden-xl-only hidden-md-only">
376 <b>FatherProfession:</b> 374 <b>FatherProfession:</b>
377 </h5> 375 </h5>
378 <h5 class="right my-1 hidden-sm-only hidden-xs-only"> 376 <h5 class="right my-1 hidden-sm-only hidden-xs-only">
379 <b>Father Profession:</b> 377 <b>Father Profession:</b>
380 </h5> 378 </h5>
381 </b> 379 </b>
382 </v-flex> 380 </v-flex>
383 <v-flex xs6> 381 <v-flex xs6>
384 <h5 class="my-1">{{ editedItem.fatherProfession }}</h5> 382 <h5 class="my-1">{{ editedItem.fatherProfession }}</h5>
385 </v-flex> 383 </v-flex>
386 </v-layout> 384 </v-layout>
387 </v-flex> 385 </v-flex>
388 </v-layout> 386 </v-layout>
389 <v-layout> 387 <v-layout>
390 <v-flex xs12> 388 <v-flex xs12>
391 <v-layout> 389 <v-layout>
392 <v-flex xs6> 390 <v-flex xs6>
393 <b> 391 <b>
394 <h5 class="right my-1 hidden-lg-only hidden-xl-only hidden-md-only"> 392 <h5 class="right my-1 hidden-lg-only hidden-xl-only hidden-md-only">
395 <b>MotherProfession:</b> 393 <b>MotherProfession:</b>
396 </h5> 394 </h5>
397 <h5 class="right my-1 hidden-sm-only hidden-xs-only"> 395 <h5 class="right my-1 hidden-sm-only hidden-xs-only">
398 <b>Mother Profession:</b> 396 <b>Mother Profession:</b>
399 </h5> 397 </h5>
400 </b> 398 </b>
401 </v-flex> 399 </v-flex>
402 <v-flex xs6> 400 <v-flex xs6>
403 <h5 class="my-1">{{ editedItem.motherProfession }}</h5> 401 <h5 class="my-1">{{ editedItem.motherProfession }}</h5>
404 </v-flex> 402 </v-flex>
405 </v-layout> 403 </v-layout>
406 <!-- <v-layout> 404 <!-- <v-layout>
407 <v-flex xs6> 405 <v-flex xs6>
408 <b> 406 <b>
409 <h5 class="right my-1 hidden-lg-only hidden-xl-only hidden-md-only"> 407 <h5 class="right my-1 hidden-lg-only hidden-xl-only hidden-md-only">
410 <b>Password:</b> 408 <b>Password:</b>
411 </h5> 409 </h5>
412 <h5 class="right my-1 hidden-sm-only hidden-xs-only"> 410 <h5 class="right my-1 hidden-sm-only hidden-xs-only">
413 <b>Password:</b> 411 <b>Password:</b>
414 </h5> 412 </h5>
415 </b> 413 </b>
416 </v-flex> 414 </v-flex>
417 <v-flex xs6> 415 <v-flex xs6>
418 <h5 class="my-1">{{ editedItem.password }}</h5> 416 <h5 class="my-1">{{ editedItem.password }}</h5>
419 </v-flex> 417 </v-flex>
420 </v-layout>--> 418 </v-layout>-->
421 </v-flex> 419 </v-flex>
422 </v-layout> 420 </v-layout>
423 </v-flex> 421 </v-flex>
424 </v-layout> 422 </v-layout>
425 </v-container> 423 </v-container>
426 </v-card> 424 </v-card>
427 </v-dialog> 425 </v-dialog>
428 <!-- ****** EXISTING-USERS Parents TABLE ****** --> 426 <!-- ****** EXISTING-USERS Parents TABLE ****** -->
429 <v-toolbar color="transparent" flat> 427 <v-toolbar color="transparent" flat>
430 <v-btn 428 <v-btn
431 fab 429 fab
432 dark 430 dark
433 class="open-dialog-button hidden-xl-only hidden-md-only hidden-lg-only" 431 class="open-dialog-button hidden-xl-only hidden-md-only hidden-lg-only"
434 small 432 small
435 @click="addParentDialog = true" 433 @click="addParentDialog = true"
436 > 434 >
437 <v-icon dark>add</v-icon> 435 <v-icon dark>add</v-icon>
438 </v-btn> 436 </v-btn>
439 <v-btn 437 <v-btn
440 v-if="role != 'TEACHER' " 438 v-if="role != 'TEACHER' "
441 round 439 round
442 class="open-dialog-button hidden-sm-only hidden-xs-only" 440 class="open-dialog-button hidden-sm-only hidden-xs-only"
443 dark 441 dark
444 @click="addParentDialog = true" 442 @click="addParentDialog = true"
445 > 443 >
446 <v-icon class="white--text pr-1" size="20">add</v-icon>Add Parent 444 <v-icon class="white--text pr-1" size="20">add</v-icon>Add Parent
447 </v-btn> 445 </v-btn>
448 <v-spacer></v-spacer> 446 <v-spacer></v-spacer>
449 <v-card-title class="body-1" v-show="show"> 447 <v-card-title class="body-1" v-show="show">
450 <v-btn icon large flat @click="displaySearch"> 448 <v-btn icon large flat @click="displaySearch">
451 <v-avatar size="27"> 449 <v-avatar size="27">
452 <img src="/static/icon/search.png" alt="icon" /> 450 <img src="/static/icon/search.png" alt="icon" />
453 </v-avatar> 451 </v-avatar>
454 </v-btn> 452 </v-btn>
455 </v-card-title> 453 </v-card-title>
456 <v-flex xs8 sm8 md2 lg2 v-show="showSearch"> 454 <v-flex xs8 sm8 md2 lg2 v-show="showSearch">
457 <v-layout> 455 <v-layout>
458 <v-text-field 456 <v-text-field
459 v-model="search" 457 v-model="search"
460 label="Search" 458 label="Search"
461 prepend-inner-icon="search" 459 prepend-inner-icon="search"
462 color="primary" 460 color="primary"
463 style="transition: 0.8s cubic-bezier(0.25, 0.8, 0.25, 1); !important" 461 style="transition: 0.8s cubic-bezier(0.25, 0.8, 0.25, 1); !important"
464 ></v-text-field> 462 ></v-text-field>
465 <v-icon @click="closeSearch" color="error">close</v-icon> 463 <v-icon @click="closeSearch" color="error">close</v-icon>
466 </v-layout> 464 </v-layout>
467 </v-flex> 465 </v-flex>
468 </v-toolbar> 466 </v-toolbar>
469 <v-data-table 467 <v-data-table
470 :headers="headers" 468 :headers="headers"
471 :items="parentsList" 469 :items="parentsList"
472 :pagination.sync="pagination" 470 :pagination.sync="pagination"
473 :search="search" 471 :search="search"
474 > 472 >
475 <template slot="items" slot-scope="props"> 473 <template slot="items" slot-scope="props">
476 <tr class="tr"> 474 <tr class="tr">
477 <td class="text-xs-center td td-row">{{ props.index + 1}}</td> 475 <td class="text-xs-center td td-row">{{ props.index + 1}}</td>
478 <td class="text-xs-center td td-row">{{ props.item.email }}</td> 476 <td class="text-xs-center td td-row">{{ props.item.email }}</td>
479 <td class="text-xs-center td td-row">{{ props.item.fatherName }}</td> 477 <td class="text-xs-center td td-row">{{ props.item.fatherName }}</td>
480 <td class="text-xs-center td td-row">{{ props.item.fatherCellNo }}</td> 478 <td class="text-xs-center td td-row">{{ props.item.fatherCellNo }}</td>
481 <td class="text-xs-center td td-row">{{ props.item.motherName }}</td> 479 <td class="text-xs-center td td-row">{{ props.item.motherName }}</td>
482 <td class="text-xs-center td td-row">{{ props.item.motherCellNo }}</td> 480 <td class="text-xs-center td td-row">{{ props.item.motherCellNo }}</td>
483 <td class="text-xs-center td td-row"> 481 <td class="text-xs-center td td-row">
484 <span> 482 <span>
485 <v-tooltip top> 483 <v-tooltip top>
486 <img 484 <img
487 slot="activator" 485 slot="activator"
488 style="cursor:pointer; width:25px; height:25px; " 486 style="cursor:pointer; width:25px; height:25px; "
489 class="mr-3" 487 class="mr-3"
490 @click="profile(props.item)" 488 @click="profile(props.item)"
491 src="/static/icon/view.png" 489 src="/static/icon/view.png"
492 /> 490 />
493 <span>View</span> 491 <span>View</span>
494 </v-tooltip> 492 </v-tooltip>
495 <v-tooltip top v-if="role != 'TEACHER' "> 493 <v-tooltip top v-if="role != 'TEACHER' ">
496 <img 494 <img
497 slot="activator" 495 slot="activator"
498 style="cursor:pointer; width:20px; height:18px; " 496 style="cursor:pointer; width:20px; height:18px; "
499 @click="editItem(props.item)" 497 @click="editItem(props.item)"
500 src="/static/icon/edit.png" 498 src="/static/icon/edit.png"
501 class="mr-3" 499 class="mr-3"
502 /> 500 />
503 <span>Edit</span> 501 <span>Edit</span>
504 </v-tooltip> 502 </v-tooltip>
505 </span> 503 </span>
506 </td> 504 </td>
507 </tr> 505 </tr>
508 </template> 506 </template>
509 <v-alert 507 <v-alert
510 slot="no-results" 508 slot="no-results"
511 :value="true" 509 :value="true"
512 color="error" 510 color="error"
513 icon="warning" 511 icon="warning"
514 >Your search for "{{ search }}" found no results.</v-alert> 512 >Your search for "{{ search }}" found no results.</v-alert>
515 </v-data-table> 513 </v-data-table>
516 514
517 <!-- ****** ADD PARENTS DETAILS****** --> 515 <!-- ****** ADD PARENTS DETAILS****** -->
518 <v-dialog v-model="addParentDialog" max-width="1100px"> 516 <v-dialog v-model="addParentDialog" max-width="1100px">
519 <v-card flat class="card-style pa-2" dark> 517 <v-card flat class="card-style pa-2" dark>
520 <v-layout> 518 <v-layout>
521 <v-flex xs12> 519 <v-flex xs12>
522 <label class="title text-xs-center">Add Parent</label> 520 <label class="title text-xs-center">Add Parent</label>
523 <v-icon size="24" class="right" @click="addParentDialog = false">cancel</v-icon> 521 <v-icon size="24" class="right" @click="addParentDialog = false">cancel</v-icon>
524 </v-flex> 522 </v-flex>
525 </v-layout> 523 </v-layout>
526 <v-container fluid fill-height> 524 <v-container fluid fill-height>
527 <v-layout align-center> 525 <v-layout align-center>
528 <v-flex xs12 sm12> 526 <v-flex xs12 sm12>
529 <v-form ref="parentForm" v-model="valid" lazy-validation> 527 <v-form ref="parentForm" v-model="valid" lazy-validation>
530 <v-container fluid class="hidden-xs-only hidden-sm-only"> 528 <v-container fluid class="hidden-xs-only hidden-sm-only">
531 <v-layout> 529 <v-layout>
532 <v-flex xs12 sm6> 530 <v-flex xs12 sm6>
533 <v-layout> 531 <v-layout>
534 <v-flex xs4 class="pt-4 subheading"> 532 <v-flex xs4 class="pt-4 subheading">
535 <label class="right">Father Cell No:</label> 533 <label class="right">Father Cell No:</label>
536 </v-flex> 534 </v-flex>
537 <v-flex xs8 class="ml-3"> 535 <v-flex xs8 class="ml-3">
538 <v-text-field 536 <v-text-field
539 v-model="parentData.fatherCellNo" 537 v-model="parentData.fatherCellNo"
540 placeholder="fill your father Cell Number" 538 placeholder="fill your father Cell Number"
541 type="number" 539 type="number"
542 :rules="fatheCellNoRules" 540 :rules="fatheCellNoRules"
543 counter="10" 541 counter="10"
544 required 542 required
545 ></v-text-field> 543 ></v-text-field>
546 </v-flex> 544 </v-flex>
547 </v-layout> 545 </v-layout>
548 </v-flex> 546 </v-flex>
549 <v-flex xs12 sm6> 547 <v-flex xs12 sm6>
550 <v-layout> 548 <v-layout>
551 <v-flex xs4 class="pt-4 subheading"> 549 <v-flex xs4 class="pt-4 subheading">
552 <label class="right">Parent Email Id:</label> 550 <label class="right">Parent Email Id:</label>
553 </v-flex> 551 </v-flex>
554 <v-flex xs8 class="ml-3"> 552 <v-flex xs8 class="ml-3">
555 <v-text-field 553 <v-text-field
556 placeholder="fill Parent email" 554 placeholder="fill Parent email"
557 v-model="parentData.email" 555 v-model="parentData.email"
558 type="text" 556 type="text"
559 required 557 required
560 ></v-text-field> 558 ></v-text-field>
561 </v-flex> 559 </v-flex>
562 </v-layout> 560 </v-layout>
563 </v-flex> 561 </v-flex>
564 </v-layout> 562 </v-layout>
565 <v-layout> 563 <v-layout>
566 <v-flex xs12 sm6> 564 <v-flex xs12 sm6>
567 <v-layout> 565 <v-layout>
568 <v-flex xs4 class="pt-4 subheading"> 566 <v-flex xs4 class="pt-4 subheading">
569 <label class="right">Father Name:</label> 567 <label class="right">Father Name:</label>
570 </v-flex> 568 </v-flex>
571 <v-flex xs8 class="ml-3"> 569 <v-flex xs8 class="ml-3">
572 <v-text-field 570 <v-text-field
573 v-model="parentData.fatherName" 571 v-model="parentData.fatherName"
574 placeholder="Fill your father Name" 572 placeholder="Fill your father Name"
575 required 573 required
576 ></v-text-field> 574 ></v-text-field>
577 </v-flex> 575 </v-flex>
578 </v-layout> 576 </v-layout>
579 </v-flex> 577 </v-flex>
580 <v-flex xs12 sm6> 578 <v-flex xs12 sm6>
581 <v-layout> 579 <v-layout>
582 <v-flex xs4 class="pt-4 subheading"> 580 <v-flex xs4 class="pt-4 subheading">
583 <label class="right">Father Profession:</label> 581 <label class="right">Father Profession:</label>
584 </v-flex> 582 </v-flex>
585 <v-flex xs8 class="ml-3"> 583 <v-flex xs8 class="ml-3">
586 <v-text-field 584 <v-text-field
587 v-model="parentData.fatherProfession" 585 v-model="parentData.fatherProfession"
588 placeholder="fill your father Profession" 586 placeholder="fill your father Profession"
589 required 587 required
590 ></v-text-field> 588 ></v-text-field>
591 </v-flex> 589 </v-flex>
592 </v-layout> 590 </v-layout>
593 </v-flex> 591 </v-flex>
594 </v-layout> 592 </v-layout>
595 <v-layout> 593 <v-layout>
596 <v-flex xs12 sm6> 594 <v-flex xs12 sm6>
597 <v-layout> 595 <v-layout>
598 <v-flex xs4 class="pt-4 subheading"> 596 <v-flex xs4 class="pt-4 subheading">
599 <label class="right">Mother Name:</label> 597 <label class="right">Mother Name:</label>
600 </v-flex> 598 </v-flex>
601 <v-flex xs8 class="ml-3"> 599 <v-flex xs8 class="ml-3">
602 <v-text-field 600 <v-text-field
603 v-model="parentData.motherName" 601 v-model="parentData.motherName"
604 placeholder="fill your Mother Name" 602 placeholder="fill your Mother Name"
605 type="text" 603 type="text"
606 required 604 required
607 ></v-text-field> 605 ></v-text-field>
608 </v-flex> 606 </v-flex>
609 </v-layout> 607 </v-layout>
610 </v-flex> 608 </v-flex>
611 <v-flex xs12 sm6> 609 <v-flex xs12 sm6>
612 <v-layout> 610 <v-layout>
613 <v-flex xs4 class="pt-4 subheading"> 611 <v-flex xs4 class="pt-4 subheading">
614 <label class="right">Mother Cell No:</label> 612 <label class="right">Mother Cell No:</label>
615 </v-flex> 613 </v-flex>
616 <v-flex xs8 class="ml-3"> 614 <v-flex xs8 class="ml-3">
617 <v-text-field 615 <v-text-field
618 v-model="parentData.motherCellNo" 616 v-model="parentData.motherCellNo"
619 placeholder="fill your Mother Cell Number" 617 placeholder="fill your Mother Cell Number"
620 counter="10" 618 counter="10"
621 type="number" 619 type="number"
622 required 620 required
623 ></v-text-field> 621 ></v-text-field>
624 </v-flex> 622 </v-flex>
625 </v-layout> 623 </v-layout>
626 </v-flex> 624 </v-flex>
627 </v-layout> 625 </v-layout>
628 <v-layout> 626 <v-layout>
629 <v-flex xs12 sm6> 627 <v-flex xs12 sm6>
630 <v-layout> 628 <v-layout>
631 <v-flex xs4 class="pt-4 subheading"> 629 <v-flex xs4 class="pt-4 subheading">
632 <label class="right">Mother Profession:</label> 630 <label class="right">Mother Profession:</label>
633 </v-flex> 631 </v-flex>
634 <v-flex xs8 class="ml-3"> 632 <v-flex xs8 class="ml-3">
635 <v-text-field 633 <v-text-field
636 v-model="parentData.motherProfession" 634 v-model="parentData.motherProfession"
637 placeholder="fill your Mother Profession" 635 placeholder="fill your Mother Profession"
638 type="text" 636 type="text"
639 required 637 required
640 ></v-text-field> 638 ></v-text-field>
641 </v-flex> 639 </v-flex>
642 </v-layout> 640 </v-layout>
643 </v-flex> 641 </v-flex>
644 <v-flex xs12 sm6> 642 <v-flex xs12 sm6>
645 <v-layout> 643 <v-layout>
646 <v-flex xs4 class="pt-4 subheading"> 644 <v-flex xs4 class="pt-4 subheading">
647 <label class="right">Password:</label> 645 <label class="right">Password:</label>
648 </v-flex> 646 </v-flex>
649 <v-flex xs8 class="ml-3"> 647 <v-flex xs8 class="ml-3">
650 <v-text-field 648 <v-text-field
651 v-model="parentData.password" 649 v-model="parentData.password"
652 :append-icon="e1 ? 'visibility_off' : 'visibility'" 650 :append-icon="e1 ? 'visibility_off' : 'visibility'"
653 :append-icon-cb="() => (e1 = !e1)" 651 :append-icon-cb="() => (e1 = !e1)"
654 :type="e1 ? 'password' : 'text'" 652 :type="e1 ? 'password' : 'text'"
655 :rules="password" 653 :rules="password"
656 placeholder="Enter Your Password" 654 placeholder="Enter Your Password"
657 required 655 required
658 ></v-text-field> 656 ></v-text-field>
659 </v-flex> 657 </v-flex>
660 </v-layout> 658 </v-layout>
661 </v-flex> 659 </v-flex>
662 </v-layout> 660 </v-layout>
663 <v-flex xs12 sm12> 661 <v-flex xs12 sm12>
664 <v-layout> 662 <v-layout>
665 <v-flex xs12 sm12> 663 <v-flex xs12 sm12>
666 <v-btn 664 <v-btn
667 class="right add-button" 665 class="right add-button"
668 @click="submitParentDetails" 666 @click="submitParentDetails"
669 round 667 round
670 dark 668 dark
671 :loading="loading" 669 :loading="loading"
672 v-show="showParent" 670 v-show="showParent"
673 >Add</v-btn> 671 >Add</v-btn>
674 <v-btn @click="clear" round dark class="clear-button right">Clear</v-btn> 672 <v-btn @click="clear" round dark class="clear-button right">Clear</v-btn>
675 </v-flex> 673 </v-flex>
676 </v-layout> 674 </v-layout>
677 </v-flex> 675 </v-flex>
678 </v-container> 676 </v-container>
679 <v-container fluid class="hidden-lg-only hidden-xl-only hidden-md-only"> 677 <v-container fluid class="hidden-lg-only hidden-xl-only hidden-md-only">
680 <v-layout wrap> 678 <v-layout wrap>
681 <v-flex xs12 sm6> 679 <v-flex xs12 sm6>
682 <v-layout wrap> 680 <v-layout wrap>
683 <v-flex xs12 class="pt-4 subheading"> 681 <v-flex xs12 class="pt-4 subheading">
684 <label>Father Cell No:</label> 682 <label>Father Cell No:</label>
685 </v-flex> 683 </v-flex>
686 <v-flex xs12> 684 <v-flex xs12>
687 <v-text-field 685 <v-text-field
688 v-model="parentData.fatherCellNo" 686 v-model="parentData.fatherCellNo"
689 :rules="fatheCellNoRules" 687 :rules="fatheCellNoRules"
690 counter="10" 688 counter="10"
691 placeholder="fill your father Cell Number" 689 placeholder="fill your father Cell Number"
692 type="number" 690 type="number"
693 required 691 required
694 ></v-text-field> 692 ></v-text-field>
695 </v-flex> 693 </v-flex>
696 </v-layout> 694 </v-layout>
697 </v-flex> 695 </v-flex>
698 <v-flex xs12 sm6> 696 <v-flex xs12 sm6>
699 <v-layout wrap> 697 <v-layout wrap>
700 <v-flex xs12 class="pt-4 subheading"> 698 <v-flex xs12 class="pt-4 subheading">
701 <label>Parent Email Id:</label> 699 <label>Parent Email Id:</label>
702 </v-flex> 700 </v-flex>
703 <v-flex xs12> 701 <v-flex xs12>
704 <v-text-field 702 <v-text-field
705 placeholder="fill Parent email" 703 placeholder="fill Parent email"
706 v-model="parentData.email" 704 v-model="parentData.email"
707 type="text" 705 type="text"
708 required 706 required
709 ></v-text-field> 707 ></v-text-field>
710 </v-flex> 708 </v-flex>
711 </v-layout> 709 </v-layout>
712 </v-flex> 710 </v-flex>
713 </v-layout> 711 </v-layout>
714 <v-layout wrap> 712 <v-layout wrap>
715 <v-flex xs12 sm6> 713 <v-flex xs12 sm6>
716 <v-layout wrap> 714 <v-layout wrap>
717 <v-flex xs12 class="pt-4 subheading"> 715 <v-flex xs12 class="pt-4 subheading">
718 <label>Father Name:</label> 716 <label>Father Name:</label>
719 </v-flex> 717 </v-flex>
720 <v-flex xs12> 718 <v-flex xs12>
721 <v-text-field 719 <v-text-field
722 v-model="parentData.fatherName" 720 v-model="parentData.fatherName"
723 placeholder="Fill your father Name" 721 placeholder="Fill your father Name"
724 required 722 required
725 ></v-text-field> 723 ></v-text-field>
726 </v-flex> 724 </v-flex>
727 </v-layout> 725 </v-layout>
728 </v-flex> 726 </v-flex>
729 <v-flex xs12 sm6> 727 <v-flex xs12 sm6>
730 <v-layout wrap> 728 <v-layout wrap>
731 <v-flex xs12 class="pt-4 subheading"> 729 <v-flex xs12 class="pt-4 subheading">
732 <label>Father Profession:</label> 730 <label>Father Profession:</label>
733 </v-flex> 731 </v-flex>
734 <v-flex xs12> 732 <v-flex xs12>
735 <v-text-field 733 <v-text-field
736 v-model="parentData.fatherProfession" 734 v-model="parentData.fatherProfession"
737 placeholder="fill your father Profession" 735 placeholder="fill your father Profession"
738 required 736 required
739 ></v-text-field> 737 ></v-text-field>
740 </v-flex> 738 </v-flex>
741 </v-layout> 739 </v-layout>
742 </v-flex> 740 </v-flex>
743 </v-layout> 741 </v-layout>
744 <v-layout wrap> 742 <v-layout wrap>
745 <v-flex xs12 sm6> 743 <v-flex xs12 sm6>
746 <v-layout wrap> 744 <v-layout wrap>
747 <v-flex xs12 class="pt-4 subheading"> 745 <v-flex xs12 class="pt-4 subheading">
748 <label>Mother Name:</label> 746 <label>Mother Name:</label>
749 </v-flex> 747 </v-flex>
750 <v-flex xs12> 748 <v-flex xs12>
751 <v-text-field 749 <v-text-field
752 v-model="parentData.motherName" 750 v-model="parentData.motherName"
753 placeholder="fill your Mother Name" 751 placeholder="fill your Mother Name"
754 type="text" 752 type="text"
755 required 753 required
756 ></v-text-field> 754 ></v-text-field>
757 </v-flex> 755 </v-flex>
758 </v-layout> 756 </v-layout>
759 </v-flex> 757 </v-flex>
760 <v-flex xs12 sm6> 758 <v-flex xs12 sm6>
761 <v-layout wrap> 759 <v-layout wrap>
762 <v-flex xs42 class="pt-4 subheading"> 760 <v-flex xs42 class="pt-4 subheading">
763 <label>Mother Cell No:</label> 761 <label>Mother Cell No:</label>
764 </v-flex> 762 </v-flex>
765 <v-flex xs12> 763 <v-flex xs12>
766 <v-text-field 764 <v-text-field
767 v-model="parentData.motherCellNo" 765 v-model="parentData.motherCellNo"
768 placeholder="fill your Mother Cell Number" 766 placeholder="fill your Mother Cell Number"
769 type="number" 767 type="number"
770 required 768 required
771 ></v-text-field> 769 ></v-text-field>
772 </v-flex> 770 </v-flex>
773 </v-layout> 771 </v-layout>
774 </v-flex> 772 </v-flex>
775 </v-layout> 773 </v-layout>
776 <v-layout wrap> 774 <v-layout wrap>
777 <v-flex xs12 sm6> 775 <v-flex xs12 sm6>
778 <v-layout wrap> 776 <v-layout wrap>
779 <v-flex xs12 class="pt-4 subheading"> 777 <v-flex xs12 class="pt-4 subheading">
780 <label>Mother Profession:</label> 778 <label>Mother Profession:</label>
781 </v-flex> 779 </v-flex>
782 <v-flex xs12> 780 <v-flex xs12>
783 <v-text-field 781 <v-text-field
784 v-model="parentData.motherProfession" 782 v-model="parentData.motherProfession"
785 placeholder="fill your Mother Profession" 783 placeholder="fill your Mother Profession"
786 type="text" 784 type="text"
787 required 785 required
788 ></v-text-field> 786 ></v-text-field>
789 </v-flex> 787 </v-flex>
790 </v-layout> 788 </v-layout>
791 </v-flex> 789 </v-flex>
792 </v-layout> 790 </v-layout>
793 <v-flex xs12 sm12> 791 <v-flex xs12 sm12>
794 <v-layout> 792 <v-layout>
795 <v-flex xs6 sm6 offset-sm1> 793 <v-flex xs6 sm6 offset-sm1>
796 <v-btn @click="clear" class="clear-button" round dark>clear</v-btn> 794 <v-btn @click="clear" class="clear-button" round dark>clear</v-btn>
797 </v-flex> 795 </v-flex>
798 <v-flex xs6 sm6> 796 <v-flex xs6 sm6>
799 <v-btn 797 <v-btn
800 class="add-button" 798 class="add-button"
801 @click="submitParentDetails" 799 @click="submitParentDetails"
802 round 800 round
803 dark 801 dark
804 :loading="loading" 802 :loading="loading"
805 v-show="showParent" 803 v-show="showParent"
806 >Add</v-btn> 804 >Add</v-btn>
807 </v-flex> 805 </v-flex>
808 </v-layout> 806 </v-layout>
809 </v-flex> 807 </v-flex>
810 </v-container> 808 </v-container>
811 </v-form> 809 </v-form>
812 </v-flex> 810 </v-flex>
813 </v-layout> 811 </v-layout>
814 </v-container> 812 </v-container>
815 </v-card> 813 </v-card>
816 </v-dialog> 814 </v-dialog>
817 <div class="loader" v-if="showLoader"> 815 <div class="loader" v-if="showLoader">
818 <v-progress-circular indeterminate color="white"></v-progress-circular> 816 <v-progress-circular indeterminate color="white"></v-progress-circular>
819 </div> 817 </div>
820 <v-snackbar 818 <v-snackbar
821 :timeout="timeout" 819 :timeout="timeout"
822 :top="y === 'top'" 820 :top="y === 'top'"
823 :right="x === 'right'" 821 :right="x === 'right'"
824 :vertical="mode === 'vertical'" 822 :vertical="mode === 'vertical'"
825 v-model="snackbar" 823 v-model="snackbar"
826 color="success" 824 color="success"
827 >{{ text }}</v-snackbar> 825 >{{ text }}</v-snackbar>
828 </v-container> 826 </v-container>
829 </template> 827 </template>
830 828
831 <script> 829 <script>
832 import http from "@/Services/http.js"; 830 import http from "@/Services/http.js";
833 import Util from "@/util"; 831 import Util from "@/util";
834 import moment from "moment"; 832 import moment from "moment";
835 833
836 export default { 834 export default {
837 data: () => ({ 835 data: () => ({
838 e1: true, 836 e1: true,
839 showParent: true, 837 showParent: true,
840 snackbar: false, 838 snackbar: false,
841 role: "", 839 role: "",
842 // TEACHER: "", 840 // TEACHER: "",
843 y: "top", 841 y: "top",
844 x: "right", 842 x: "right",
845 color: "", 843 color: "",
846 mode: "", 844 mode: "",
847 timeout: 3000, 845 timeout: 3000,
848 text: "", 846 text: "",
849 show: true, 847 show: true,
850 showSearch: false, 848 showSearch: false,
851 showLoader: false, 849 showLoader: false,
852 loading: false, 850 loading: false,
853 date: null, 851 date: null,
854 search: "", 852 search: "",
855 password: "", 853 password: "",
856 addParentDialog: false, 854 addParentDialog: false,
857 menu: false, 855 menu: false,
858 menu1: false, 856 menu1: false,
859 editParentDilaog: false, 857 editParentDilaog: false,
860 profileParentDialog: false, 858 profileParentDialog: false,
861 viewProfileParentDialog: false, 859 viewProfileParentDialog: false,
862 valid: true, 860 valid: true,
863 validEditParent: true, 861 validEditParent: true,
864 pagination: { 862 pagination: {
865 rowsPerPage: 10 863 rowsPerPage: 10
866 }, 864 },
867 fatherNameRules: [v => !!v || " Father Name is required"], 865 fatherNameRules: [v => !!v || " Father Name is required"],
868 fatheCellNoRules: [ 866 fatheCellNoRules: [
869 v => !!v || " father Cell Number is required", 867 v => !!v || " father Cell Number is required",
870 v => v <= 10000000000 || "Max 10 characters is required" 868 v => v <= 10000000000 || "Max 10 characters is required"
871 ], 869 ],
872 password: [ 870 password: [
873 v => !!v || "Password field is Required." 871 v => !!v || "Password field is Required."
874 // v => (/^(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})/).test(v) && v.length >= 8 || 'Min 8 characters lower case symbol required' 872 // v => (/^(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})/).test(v) && v.length >= 8 || 'Min 8 characters lower case symbol required'
875 ], 873 ],
876 editFatherNoRule: [ 874 editFatherNoRule: [
877 v => !!v || " father Cell Number is required", 875 v => !!v || " father Cell Number is required",
878 v => v <= 10000000000 || "Max 10 characters is required" 876 v => v <= 10000000000 || "Max 10 characters is required"
879 ], 877 ],
880 878
881 editfatherCellNo: [v => !!v || " Father Name is required"], 879 editfatherCellNo: [v => !!v || " Father Name is required"],
882 errorMessages: "", 880 errorMessages: "",
883 emailRules: [ 881 emailRules: [
884 v => !!v || "E-mail is required", 882 v => !!v || "E-mail is required",
885 v => 883 v =>
886 /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(v) || 884 /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(v) ||
887 "E-mail must be valid" 885 "E-mail must be valid"
888 ], 886 ],
889 headers: [ 887 headers: [
890 { 888 {
891 text: "No", 889 text: "No",
892 align: "center", 890 align: "center",
893 sortable: false, 891 sortable: false,
894 value: "No" 892 value: "No"
895 }, 893 },
896 { text: "Email", value: "email", sortable: false, align: "center" }, 894 { text: "Email", value: "email", sortable: false, align: "center" },
897 { 895 {
898 text: "Father Name", 896 text: "Father Name",
899 value: "fatherName", 897 value: "fatherName",
900 sortable: false, 898 sortable: false,
901 align: "center" 899 align: "center"
902 }, 900 },
903 { 901 {
904 text: "Father Cell No", 902 text: "Father Cell No",
905 value: "fatherName", 903 value: "fatherName",
906 sortable: false, 904 sortable: false,
907 align: "center" 905 align: "center"
908 }, 906 },
909 { 907 {
910 text: "Mother Name", 908 text: "Mother Name",
911 value: "motherName", 909 value: "motherName",
912 sortable: false, 910 sortable: false,
913 align: "center" 911 align: "center"
914 }, 912 },
915 { 913 {
916 text: "Mother Cell No", 914 text: "Mother Cell No",
917 value: "motherCellNo", 915 value: "motherCellNo",
918 sortable: false, 916 sortable: false,
919 align: "center" 917 align: "center"
920 }, 918 },
921 { text: "Action", value: "", sortable: false, align: "center" } 919 { text: "Action", value: "", sortable: false, align: "center" }
922 ], 920 ],
923 parentsList: [], 921 parentsList: [],
924 editedIndex: -1, 922 editedIndex: -1,
925 parentData: {}, 923 parentData: {},
926 max: 10, 924 max: 10,
927 editedItem: { 925 editedItem: {
928 fatherName: "", 926 fatherName: "",
929 fatherCellNo: "", 927 fatherCellNo: "",
930 motherName: "", 928 motherName: "",
931 motherCellNo: "", 929 motherCellNo: "",
932 email: "", 930 email: "",
933 password: "" 931 password: ""
934 } 932 }
935 }), 933 }),
936 watch: { 934 watch: {
937 menu(val) { 935 menu(val) {
938 val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); 936 val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR"));
939 }, 937 },
940 menu1(val) { 938 menu1(val) {
941 val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); 939 val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR"));
942 } 940 }
943 }, 941 },
944 methods: { 942 methods: {
945 editItem(item) { 943 editItem(item) {
946 this.editedIndex = this.parentsList.indexOf(item); 944 this.editedIndex = this.parentsList.indexOf(item);
947 this.editedItem = Object.assign({}, item); 945 this.editedItem = Object.assign({}, item);
948 this.editParentDilaog = true; 946 this.editParentDilaog = true;
949 }, 947 },
950 profile(item) { 948 profile(item) {
951 this.editedIndex = this.parentsList.indexOf(item); 949 this.editedIndex = this.parentsList.indexOf(item);
952 this.editedItem = Object.assign({}, item); 950 this.editedItem = Object.assign({}, item);
953 this.profileParentDialog = true; 951 this.profileParentDialog = true;
954 }, 952 },
955 close() { 953 close() {
956 this.editParentDilaog = false; 954 this.editParentDilaog = false;
957 }, 955 },
958 closeProfile() { 956 closeProfile() {
959 this.profileParentDialog = false; 957 this.profileParentDialog = false;
960 }, 958 },
961 clear() { 959 clear() {
962 this.$refs.parentForm.reset(); 960 this.$refs.parentForm.reset();
963 }, 961 },
964 save() { 962 save() {
965 if (this.$refs.editParentForm.validate()) { 963 if (this.$refs.editParentForm.validate()) {
966 this.editedItem.parentId = this.editedItem._id; 964 this.editedItem.parentId = this.editedItem._id;
967 http() 965 http()
968 .put("/updateParent", this.editedItem) 966 .put("/updateParent", this.editedItem)
969 .then(response => { 967 .then(response => {
970 this.snackbar = true; 968 this.snackbar = true;
971 this.color = "green"; 969 this.color = "green";
972 this.text = response.data.message; 970 this.text = response.data.message;
973 this.getParentDetails(); 971 this.getParentDetails();
974 this.close(); 972 this.close();
975 }) 973 })
976 .catch(error => { 974 .catch(error => {
977 this.snackbar = true; 975 this.snackbar = true;
978 this.color = "error"; 976 this.color = "error";
979 this.text = error.response.data.message; 977 this.text = error.response.data.message;
980 if (error.response.data.statusText) { 978 if (error.response.data.statusText) {
981 this.text = error.response.data.statusText; 979 this.text = error.response.data.statusText;
982 } 980 }
983 }); 981 });
984 } 982 }
985 }, 983 },
986 async submitParentDetails() { 984 async submitParentDetails() {
987 if (this.$refs.parentForm.validate()) { 985 if (this.$refs.parentForm.validate()) {
988 this.parentData.role = "PARENT"; 986 this.parentData.role = "PARENT";
989 this.loading = true; 987 this.loading = true;
990 await http() 988 await http()
991 .post("/createParent", this.parentData) 989 .post("/createParent", this.parentData)
992 .then(response => { 990 .then(response => {
993 this.parentId = response.data.data.id; 991 this.parentId = response.data.data.id;
994 this.snackbar = true; 992 this.snackbar = true;
995 this.color = "green"; 993 this.color = "green";
996 this.text = response.data.message; 994 this.text = response.data.message;
997 this.getParentDetails(); 995 this.getParentDetails();
998 this.clear(); 996 this.clear();
999 this.loading = false; 997 this.loading = false;
1000 this.addParentDialog = false; 998 this.addParentDialog = false;
1001 }) 999 })
1002 .catch(error => { 1000 .catch(error => {
1003 this.snackbar = true; 1001 this.snackbar = true;
1004 this.color = "error"; 1002 this.color = "error";
1005 this.text = error.response.data.message; 1003 this.text = error.response.data.message;
1006 if (error.response.data.statusText) { 1004 if (error.response.data.statusText) {
1007 this.text = error.response.data.statusText; 1005 this.text = error.response.data.statusText;
1008 } 1006 }
1009 this.loading = false; 1007 this.loading = false;
1010 }); 1008 });
1011 } 1009 }
1012 }, 1010 },
1013 getParentDetails() { 1011 getParentDetails() {
1014 http() 1012 http()
1015 .get("getParentsList", { 1013 .get("getParentsList", {
1016 headers: { 1014 headers: {
1017 Authorization: "Bearer " + this.$store.state.token 1015 Authorization: "Bearer " + this.$store.state.token
1018 } 1016 }
1019 }) 1017 })
1020 .then(response => { 1018 .then(response => {
1021 this.parentsList = response.data.data; 1019 this.parentsList = response.data.data;
1022 }) 1020 })
1023 .catch(error => { 1021 .catch(error => {
1024 // console.log("err====>", error.response.data.message); 1022 // console.log("err====>", error.response.data.message);
1025 this.showLoader = false; 1023 this.showLoader = false;
1026 if (error.response.status === 401) { 1024 if (error.response.status === 401) {
1027 this.$router.replace({ path: "/" }); 1025 this.$router.replace({ path: "/" });
1028 this.$store.dispatch("setToken", null); 1026 this.$store.dispatch("setToken", null);
1029 this.$store.dispatch("Id", null); 1027 this.$store.dispatch("Id", null);
1030 this.$store.dispatch("Role", null); 1028 this.$store.dispatch("Role", null);
1031 } 1029 }
1032 }); 1030 });
1033 }, 1031 },
1034 displaySearch() { 1032 displaySearch() {
1035 (this.show = false), (this.showSearch = true); 1033 (this.show = false), (this.showSearch = true);
1036 }, 1034 },
1037 closeSearch() { 1035 closeSearch() {
1038 this.showSearch = false; 1036 this.showSearch = false;
1039 this.show = true; 1037 this.show = true;
1040 this.search = ""; 1038 this.search = "";
1041 } 1039 }
1042 }, 1040 },
1043 mounted() { 1041 mounted() {
1044 this.getParentDetails(); 1042 this.getParentDetails();
1045 // console.log("role", this.$store.state.role); 1043 // console.log("role", this.$store.state.role);
1046 this.role = this.$store.state.role; 1044 this.role = this.$store.state.role;
1047 } 1045 }
1048 }; 1046 };
1049 </script> 1047 </script>
src/router/paths.js
1 export default [{ 1 export default [{
2 path: '*', 2 path: '*',
3 meta: { 3 meta: {
4 public: true, 4 public: true,
5 }, 5 },
6 redirect: { 6 redirect: {
7 path: '/404' 7 path: '/404'
8 } 8 }
9 }, 9 },
10 { 10 {
11 path: '/404', 11 path: '/404',
12 meta: { 12 meta: {
13 public: true, 13 public: true,
14 }, 14 },
15 name: 'NotFound', 15 name: 'NotFound',
16 component: () => 16 component: () =>
17 import ( 17 import (
18 /* webpackChunkName: "routes" */ 18 /* webpackChunkName: "routes" */
19 /* webpackMode: "lazy-once" */ 19 /* webpackMode: "lazy-once" */
20 `@/pages/NotFound/NotFound.vue` 20 `@/pages/NotFound/NotFound.vue`
21 ) 21 )
22 }, 22 },
23 { 23 {
24 path: '*', 24 path: '*',
25 meta: {}, 25 meta: {},
26 name: 'dashboardAdmin', 26 name: 'dashboardAdmin',
27 props: (route) => ({ type: route.query.type }), 27 props: (route) => ({ type: route.query.type }),
28 component: () => 28 component: () =>
29 import ( 29 import (
30 /* webpackChunkName: "routes" */ 30 /* webpackChunkName: "routes" */
31 /* webpackMode: "lazy-once" */ 31 /* webpackMode: "lazy-once" */
32 `@/pages/Dashboard/dashboard.vue` 32 `@/pages/Dashboard/dashboard.vue`
33 ) 33 )
34 }, 34 },
35 { 35 {
36 path: '/500', 36 path: '/500',
37 meta: { 37 meta: {
38 public: true, 38 public: true,
39 }, 39 },
40 name: 'ServerError', 40 name: 'ServerError',
41 component: () => 41 component: () =>
42 import ( 42 import (
43 /* webpackChunkName: "routes" */ 43 /* webpackChunkName: "routes" */
44 /* webpackMode: "lazy-once" */ 44 /* webpackMode: "lazy-once" */
45 `@/pages/NotFound/Error.vue` 45 `@/pages/NotFound/Error.vue`
46 ) 46 )
47 }, 47 },
48 { 48 {
49 path: '/changepassword', 49 path: '/changepassword',
50 meta: {}, 50 meta: {},
51 name: 'changepassword', 51 name: 'changepassword',
52 props: (route) => ({ type: route.query.type }), 52 props: (route) => ({ type: route.query.type }),
53 component: () => 53 component: () =>
54 import ( 54 import (
55 /* webpackChunkName: "routes" */ 55 /* webpackChunkName: "routes" */
56 /* webpackMode: "lazy-once" */ 56 /* webpackMode: "lazy-once" */
57 `@/pages/Authentication/changepassword.vue` 57 `@/pages/Authentication/changepassword.vue`
58 ) 58 )
59 }, 59 },
60 { 60 {
61 path: '/teachers', 61 path: '/teachers',
62 meta: { breadcrumb: false }, 62 meta: { breadcrumb: false },
63 name: 'Teachers', 63 name: 'Teachers',
64 component: () => 64 component: () =>
65 import ( 65 import (
66 /* webpackChunkName: "routes" */ 66 /* webpackChunkName: "routes" */
67 /* webpackMode: "lazy-once" */ 67 /* webpackMode: "lazy-once" */
68 `@/pages/Teachers/teachers.vue` 68 `@/pages/Teachers/teachers.vue`
69 ) 69 )
70 }, 70 },
71 { 71 {
72 path: '/', 72 path: '/',
73 meta: { 73 meta: {
74 public: true, 74 public: true,
75 }, 75 },
76 name: 'Login', 76 name: 'Login',
77 component: () => 77 component: () =>
78 import ( 78 import (
79 /* webpackChunkName: "routes" */ 79 /* webpackChunkName: "routes" */
80 /* webpackMode: "lazy-once" */ 80 /* webpackMode: "lazy-once" */
81 `@/pages/Authentication/Login.vue` 81 `@/pages/Authentication/Login.vue`
82 ) 82 )
83 }, 83 },
84 { 84 {
85 path: '/forgetpassword', 85 path: '/forgetpassword',
86 meta: { 86 meta: {
87 public: true, 87 public: true,
88 }, 88 },
89 name: 'forgetpassword', 89 name: 'forgetpassword',
90 component: () => 90 component: () =>
91 import ( 91 import (
92 /* webpackChunkName: "routes" */ 92 /* webpackChunkName: "routes" */
93 /* webpackMode: "lazy-once" */ 93 /* webpackMode: "lazy-once" */
94 `@/pages/Authentication/forgetpassword.vue` 94 `@/pages/Authentication/forgetpassword.vue`
95 ) 95 )
96 }, 96 },
97 { 97 {
98 path: '/students', 98 path: '/students',
99 meta: {}, 99 meta: {},
100 name: 'Students', 100 name: 'Students',
101 props: (route) => ({ type: route.query.type }), 101 props: (route) => ({ type: route.query.type }),
102 component: () => 102 component: () =>
103 import ( 103 import (
104 /* webpackChunkName: "routes" */ 104 /* webpackChunkName: "routes" */
105 /* webpackMode: "lazy-once" */ 105 /* webpackMode: "lazy-once" */
106 `@/pages/Students/students.vue` 106 `@/pages/Students/students.vue`
107 ) 107 )
108 }, 108 },
109 { 109 {
110 path: '/class', 110 path: '/class',
111 meta: {}, 111 meta: {},
112 name: 'Class', 112 name: 'Class',
113 props: (route) => ({ type: route.query.type }), 113 props: (route) => ({ type: route.query.type }),
114 component: () => 114 component: () =>
115 import ( 115 import (
116 /* webpackChunkName: "routes" */ 116 /* webpackChunkName: "routes" */
117 /* webpackMode: "lazy-once" */ 117 /* webpackMode: "lazy-once" */
118 `@/pages/Class/addclass.vue` 118 `@/pages/Class/addclass.vue`
119 ) 119 )
120 }, 120 },
121 { 121 {
122 path: '/section', 122 path: '/section',
123 meta: {}, 123 meta: {},
124 name: 'Section', 124 name: 'Section',
125 props: (route) => ({ type: route.query.type }), 125 props: (route) => ({ type: route.query.type }),
126 component: () => 126 component: () =>
127 import ( 127 import (
128 /* webpackChunkName: "routes" */ 128 /* webpackChunkName: "routes" */
129 /* webpackMode: "lazy-once" */ 129 /* webpackMode: "lazy-once" */
130 `@/pages/Section/section.vue` 130 `@/pages/Section/section.vue`
131 ) 131 )
132 }, 132 },
133 { 133 {
134 path: '/noticeBoard', 134 path: '/noticeBoard',
135 meta: {}, 135 meta: {},
136 name: 'Notice Board', 136 name: 'Notice Board',
137 props: (route) => ({ type: route.query.type }), 137 props: (route) => ({ type: route.query.type }),
138 component: () => 138 component: () =>
139 import ( 139 import (
140 /* webpackChunkName: "routes" */ 140 /* webpackChunkName: "routes" */
141 /* webpackMode: "lazy-once" */ 141 /* webpackMode: "lazy-once" */
142 `@/pages/NoticeBoard/noticeBoard.vue` 142 `@/pages/NoticeBoard/noticeBoard.vue`
143 ) 143 )
144 }, 144 },
145 { 145 {
146 path: '/news', 146 path: '/news',
147 meta: {}, 147 meta: {},
148 name: 'News', 148 name: 'News',
149 props: (route) => ({ type: route.query.type }), 149 props: (route) => ({ type: route.query.type }),
150 component: () => 150 component: () =>
151 import ( 151 import (
152 /* webpackChunkName: "routes" */ 152 /* webpackChunkName: "routes" */
153 /* webpackMode: "lazy-once" */ 153 /* webpackMode: "lazy-once" */
154 `@/pages/News/news.vue` 154 `@/pages/News/news.vue`
155 ) 155 )
156 }, 156 },
157 // { 157 // {
158 // path: '/reminder', 158 // path: '/reminder',
159 // meta: { }, 159 // meta: { },
160 // name: 'reminder', 160 // name: 'reminder',
161 // props: (route) => ({ type: route.query.type }), 161 // props: (route) => ({ type: route.query.type }),
162 // component: () => import( 162 // component: () => import(
163 // /* webpackChunkName: "routes" */ 163 // /* webpackChunkName: "routes" */
164 // /* webpackMode: "lazy-once" */ 164 // /* webpackMode: "lazy-once" */
165 // `@/pages/Reminder/reminder.vue` 165 // `@/pages/Reminder/reminder.vue`
166 // ) 166 // )
167 // }, 167 // },
168 { 168 {
169 path: '/timeTable', 169 path: '/timeTable',
170 meta: {}, 170 meta: {},
171 name: 'Time Table', 171 name: 'Time Table',
172 props: (route) => ({ type: route.query.type }), 172 props: (route) => ({ type: route.query.type }),
173 component: () => 173 component: () =>
174 import ( 174 import (
175 /* webpackChunkName: "routes" */ 175 /* webpackChunkName: "routes" */
176 /* webpackMode: "lazy-once" */ 176 /* webpackMode: "lazy-once" */
177 `@/pages/TimeTable/timeTable.vue` 177 `@/pages/TimeTable/timeTable.vue`
178 ) 178 )
179 }, 179 },
180 { 180 {
181 path: '/notification', 181 path: '/notification',
182 meta: {}, 182 meta: {},
183 name: 'Notification', 183 name: 'Notification',
184 props: (route) => ({ type: route.query.type }), 184 props: (route) => ({ type: route.query.type }),
185 component: () => 185 component: () =>
186 import ( 186 import (
187 /* webpackChunkName: "routes" */ 187 /* webpackChunkName: "routes" */
188 /* webpackMode: "lazy-once" */ 188 /* webpackMode: "lazy-once" */
189 `@/pages/Notification/notification.vue` 189 `@/pages/Notification/notification.vue`
190 ) 190 )
191 }, 191 },
192 { 192 {
193 path: '/parents', 193 path: '/parents',
194 meta: {}, 194 meta: {},
195 name: 'Parents', 195 name: 'Parents',
196 props: (route) => ({ type: route.query.type }), 196 props: (route) => ({ type: route.query.type }),
197 component: () => 197 component: () =>
198 import ( 198 import (
199 /* webpackChunkName: "routes" */ 199 /* webpackChunkName: "routes" */
200 /* webpackMode: "lazy-once" */ 200 /* webpackMode: "lazy-once" */
201 `@/pages/Parent/parents.vue` 201 `@/pages/Parent/parents.vue`
202 ) 202 )
203 }, 203 },
204 // { 204 // {
205 // path: '/subject', 205 // path: '/subject',
206 // meta: {}, 206 // meta: {},
207 // name: 'Subject', 207 // name: 'Subject',
208 // props: (route) => ({ type: route.query.type }), 208 // props: (route) => ({ type: route.query.type }),
209 // component: () => 209 // component: () =>
210 // import ( 210 // import (
211 // /* webpackChunkName: "routes" */ 211 // /* webpackChunkName: "routes" */
212 // /* webpackMode: "lazy-once" */ 212 // /* webpackMode: "lazy-once" */
213 // `@/pages/Subjects/subjects.vue` 213 // `@/pages/Subjects/subjects.vue`
214 // ) 214 // )
215 // }, 215 // },
216 { 216 {
217 path: '/dashboard', 217 path: '/dashboard',
218 meta: {}, 218 meta: {},
219 name: 'Dashboard', 219 name: 'Dashboard',
220 props: (route) => ({ type: route.query.type }), 220 props: (route) => ({ type: route.query.type }),
221 component: () => 221 component: () =>
222 import ( 222 import (
223 /* webpackChunkName: "routes" */ 223 /* webpackChunkName: "routes" */
224 /* webpackMode: "lazy-once" */ 224 /* webpackMode: "lazy-once" */
225 `@/pages/Dashboard/dashboard.vue` 225 `@/pages/Dashboard/dashboard.vue`
226 ) 226 )
227 }, 227 },
228 { 228 {
229 path: '/socialMedia', 229 path: '/socialMedia',
230 meta: {}, 230 meta: {},
231 name: 'Social Media', 231 name: 'Social Media',
232 props: (route) => ({ type: route.query.type }), 232 props: (route) => ({ type: route.query.type }),
233 component: () => 233 component: () =>
234 import ( 234 import (
235 /* webpackChunkName: "routes" */ 235 /* webpackChunkName: "routes" */
236 /* webpackMode: "lazy-once" */ 236 /* webpackMode: "lazy-once" */
237 `@/pages/socialMedia/socialMedia.vue` 237 `@/pages/socialMedia/socialMedia.vue`
238 ) 238 )
239 }, 239 },
240 { 240 {
241 path: '/gallery', 241 path: '/gallery',
242 meta: {}, 242 meta: {},
243 name: 'Gallery', 243 name: 'Gallery',
244 props: (route) => ({ type: route.query.type }), 244 props: (route) => ({ type: route.query.type }),
245 component: () => 245 component: () =>
246 import ( 246 import (
247 /* webpackChunkName: "routes" */ 247 /* webpackChunkName: "routes" */
248 /* webpackMode: "lazy-once" */ 248 /* webpackMode: "lazy-once" */
249 `@/pages/Gallery/gallery.vue` 249 `@/pages/Gallery/gallery.vue`
250 ) 250 )
251 }, 251 },
252 { 252 {
253 path: '/event', 253 path: '/event',
254 meta: {}, 254 meta: {},
255 name: 'Event', 255 name: 'Event',
256 props: (route) => ({ type: route.query.type }), 256 props: (route) => ({ type: route.query.type }),
257 component: () => 257 component: () =>
258 import ( 258 import (
259 /* webpackChunkName: "routes" */ 259 /* webpackChunkName: "routes" */
260 /* webpackMode: "lazy-once" */ 260 /* webpackMode: "lazy-once" */
261 `@/pages/Event/event.vue` 261 `@/pages/Event/event.vue`
262 ) 262 )
263 }, 263 },
264 { 264 {
265 path: '/holiday', 265 path: '/holiday',
266 meta: {}, 266 meta: {},
267 name: 'Holiday', 267 name: 'Holiday',
268 props: (route) => ({ type: route.query.type }), 268 props: (route) => ({ type: route.query.type }),
269 component: () => 269 component: () =>
270 import ( 270 import (
271 /* webpackChunkName: "routes" */ 271 /* webpackChunkName: "routes" */
272 /* webpackMode: "lazy-once" */ 272 /* webpackMode: "lazy-once" */
273 `@/pages/Holiday/holiday.vue` 273 `@/pages/Holiday/holiday.vue`
274 ) 274 )
275 }, 275 },
276 { 276 {
277 path: '/user', 277 path: '/user',
278 meta: {}, 278 meta: {},
279 name: 'User', 279 name: 'User',
280 props: (route) => ({ type: route.query.type }), 280 props: (route) => ({ type: route.query.type }),
281 component: () => 281 component: () =>
282 import ( 282 import (
283 /* webpackChunkName: "routes" */ 283 /* webpackChunkName: "routes" */
284 /* webpackMode: "lazy-once" */ 284 /* webpackMode: "lazy-once" */
285 `@/pages/User/user.vue` 285 `@/pages/User/user.vue`
286 ) 286 )
287 }, 287 },
288 { 288 {
289 path: '/AttendenceStudent', 289 path: '/AttendenceStudent',
290 meta: {}, 290 meta: {},
291 name: 'Student Attendence', 291 name: 'Student Attendence',
292 props: (route) => ({ type: route.query.type }), 292 props: (route) => ({ type: route.query.type }),
293 component: () => 293 component: () =>
294 import ( 294 import (
295 /* webpackChunkName: "routes" */ 295 /* webpackChunkName: "routes" */
296 /* webpackMode: "lazy-once" */ 296 /* webpackMode: "lazy-once" */
297 `@/pages/Attendence/studentAttendence.vue` 297 `@/pages/Attendence/studentAttendence.vue`
298 ) 298 )
299 }, 299 },
300 { 300 {
301 path: '/AttendenceTeacher', 301 path: '/AttendenceTeacher',
302 meta: {}, 302 meta: {},
303 name: 'Teacher Attendence', 303 name: 'Teacher Attendence',
304 props: (route) => ({ type: route.query.type }), 304 props: (route) => ({ type: route.query.type }),
305 component: () => 305 component: () =>
306 import ( 306 import (
307 /* webpackChunkName: "routes" */ 307 /* webpackChunkName: "routes" */
308 /* webpackMode: "lazy-once" */ 308 /* webpackMode: "lazy-once" */
309 `@/pages/Attendence/teacherAttendence.vue` 309 `@/pages/Attendence/teacherAttendence.vue`
310 ) 310 )
311 }, 311 },
312 { 312 {
313 path: '/salaryTemplate', 313 path: '/salaryTemplate',
314 meta: {}, 314 meta: {},
315 name: 'Salary Template', 315 name: 'Salary Template',
316 props: (route) => ({ type: route.query.type }), 316 props: (route) => ({ type: route.query.type }),
317 component: () => 317 component: () =>
318 import ( 318 import (
319 `@/pages/Payroll/salaryTemplate.vue` 319 `@/pages/Payroll/salaryTemplate.vue`
320 ) 320 )
321 }, 321 },
322 { 322 {
323 path: '/hourlyTemplate', 323 path: '/hourlyTemplate',
324 meta: {}, 324 meta: {},
325 name: 'Hourly Template', 325 name: 'Hourly Template',
326 props: (route) => ({ type: route.query.type }), 326 props: (route) => ({ type: route.query.type }),
327 component: () => 327 component: () =>
328 import ( 328 import (
329 `@/pages/Payroll/hourlyTemplate.vue` 329 `@/pages/Payroll/hourlyTemplate.vue`
330 ) 330 )
331 }, 331 },
332 { 332 {
333 path: '/manageSalary', 333 path: '/manageSalary',
334 meta: {}, 334 meta: {},
335 name: 'Manage Salary', 335 name: 'Manage Salary',
336 props: (route) => ({ type: route.query.type }), 336 props: (route) => ({ type: route.query.type }),
337 component: () => 337 component: () =>
338 import ( 338 import (
339 `@/pages/Payroll/manageSalary.vue` 339 `@/pages/Payroll/manageSalary.vue`
340 ) 340 )
341 }, 341 },
342 // { 342 // {
343 // path: '/makePayment', 343 // path: '/makePayment',
344 // meta: {}, 344 // meta: {},
345 // name: 'Make Payment', 345 // name: 'Make Payment',
346 // props: (route) => ({ type: route.query.type }), 346 // props: (route) => ({ type: route.query.type }),
347 // component: () => 347 // component: () =>
348 // import ( 348 // import (
349 // `@/pages/Payroll/makePayment.vue` 349 // `@/pages/Payroll/makePayment.vue`
350 // ) 350 // )
351 // }, 351 // },
352 { 352 {
353 path: '/AttendenceUser', 353 path: '/AttendenceUser',
354 meta: {}, 354 meta: {},
355 name: 'User Attendence', 355 name: 'User Attendence',
356 props: (route) => ({ type: route.query.type }), 356 props: (route) => ({ type: route.query.type }),
357 component: () => 357 component: () =>
358 import ( 358 import (
359 /* webpackChunkName: "routes" */ 359 /* webpackChunkName: "routes" */
360 /* webpackMode: "lazy-once" */ 360 /* webpackMode: "lazy-once" */
361 `@/pages/Attendence/userAttendence.vue` 361 `@/pages/Attendence/userAttendence.vue`
362 ) 362 )
363 }, 363 },
364 { 364 {
365 path: '/feeTypes', 365 path: '/feeTypes',
366 meta: {}, 366 meta: {},
367 name: 'Fee Types', 367 name: 'Fee Types',
368 props: (route) => ({ type: route.query.type }), 368 props: (route) => ({ type: route.query.type }),
369 component: () => 369 component: () =>
370 import ( 370 import (
371 /* webpackChunkName: "routes" */ 371 /* webpackChunkName: "routes" */
372 /* webpackMode: "lazy-once" */ 372 /* webpackMode: "lazy-once" */
373 `@/pages/Account/feeTypes.vue` 373 `@/pages/Account/feeTypes.vue`
374 ) 374 )
375 }, 375 },
376 { 376 {
377 path: '/invoice', 377 path: '/invoice',
378 meta: {}, 378 meta: {},
379 name: 'Invoice', 379 name: 'Invoice',
380 props: (route) => ({ type: route.query.type }), 380 props: (route) => ({ type: route.query.type }),
381 component: () => 381 component: () =>
382 import ( 382 import (
383 /* webpackChunkName: "routes" */ 383 /* webpackChunkName: "routes" */
384 /* webpackMode: "lazy-once" */ 384 /* webpackMode: "lazy-once" */
385 `@/pages/Account/invoice.vue` 385 `@/pages/Account/invoice.vue`
386 ) 386 )
387 }, 387 },
388 { 388 {
389 path: '/paymentHistory', 389 path: '/paymentHistory',
390 meta: {}, 390 meta: {},
391 name: 'Payment History', 391 name: 'Payment History',
392 props: (route) => ({ type: route.query.type }), 392 props: (route) => ({ type: route.query.type }),
393 component: () => 393 component: () =>
394 import ( 394 import (
395 /* webpackChunkName: "routes" */ 395 /* webpackChunkName: "routes" */
396 /* webpackMode: "lazy-once" */ 396 /* webpackMode: "lazy-once" */
397 `@/pages/Account/paymentHistory.vue` 397 `@/pages/Account/paymentHistory.vue`
398 ) 398 )
399 }, 399 },
400 { 400 {
401 path: '/expense', 401 path: '/expense',
402 meta: {}, 402 meta: {},
403 name: 'Expense', 403 name: 'Expense',
404 props: (route) => ({ type: route.query.type }), 404 props: (route) => ({ type: route.query.type }),
405 component: () => 405 component: () =>
406 import ( 406 import (
407 /* webpackChunkName: "routes" */ 407 /* webpackChunkName: "routes" */
408 /* webpackMode: "lazy-once" */ 408 /* webpackMode: "lazy-once" */
409 `@/pages/Account/expense.vue` 409 `@/pages/Account/expense.vue`
410 ) 410 )
411 }, 411 },
412 { 412 {
413 path: '/income', 413 path: '/income',
414 meta: {}, 414 meta: {},
415 name: 'Income', 415 name: 'Income',
416 props: (route) => ({ type: route.query.type }), 416 props: (route) => ({ type: route.query.type }),
417 component: () => 417 component: () =>
418 import ( 418 import (
419 /* webpackChunkName: "routes" */ 419 /* webpackChunkName: "routes" */
420 /* webpackMode: "lazy-once" */ 420 /* webpackMode: "lazy-once" */
421 `@/pages/Account/income.vue` 421 `@/pages/Account/income.vue`
422 ) 422 )
423 }, 423 },
424 { 424 {
425 path: '/libraryMember', 425 path: '/libraryMember',
426 meta: {}, 426 meta: {},
427 name: 'Library Member', 427 name: 'Library Member',
428 props: (route) => ({ type: route.query.type }), 428 props: (route) => ({ type: route.query.type }),
429 component: () => 429 component: () =>
430 import ( 430 import (
431 /* webpackChunkName: "routes" */ 431 /* webpackChunkName: "routes" */
432 /* webpackMode: "lazy-once" */ 432 /* webpackMode: "lazy-once" */
433 `@/pages/Library/member.vue` 433 `@/pages/Library/member.vue`
434 ) 434 )
435 }, 435 },
436 { 436 {
437 path: '/books', 437 path: '/books',
438 meta: {}, 438 meta: {},
439 name: 'Books', 439 name: 'Books',
440 props: (route) => ({ type: route.query.type }), 440 props: (route) => ({ type: route.query.type }),
441 component: () => 441 component: () =>
442 import ( 442 import (
443 /* webpackChunkName: "routes" */ 443 /* webpackChunkName: "routes" */
444 /* webpackMode: "lazy-once" */ 444 /* webpackMode: "lazy-once" */
445 `@/pages/Library/books.vue` 445 `@/pages/Library/books.vue`
446 ) 446 )
447 }, 447 },
448 { 448 {
449 path: '/issue', 449 path: '/issue',
450 meta: {}, 450 meta: {},
451 name: 'Issue', 451 name: 'Issue',
452 props: (route) => ({ type: route.query.type }), 452 props: (route) => ({ type: route.query.type }),
453 component: () => 453 component: () =>
454 import ( 454 import (
455 /* webpackChunkName: "routes" */ 455 /* webpackChunkName: "routes" */
456 /* webpackMode: "lazy-once" */ 456 /* webpackMode: "lazy-once" */
457 `@/pages/Library/issue.vue` 457 `@/pages/Library/issue.vue`
458 ) 458 )
459 }, 459 },
460 { 460 {
461 path: '/e-books', 461 path: '/e-books',
462 meta: {}, 462 meta: {},
463 name: 'E-Books', 463 name: 'E-Books',
464 props: (route) => ({ type: route.query.type }), 464 props: (route) => ({ type: route.query.type }),
465 component: () => 465 component: () =>
466 import ( 466 import (
467 /* webpackChunkName: "routes" */ 467 /* webpackChunkName: "routes" */
468 /* webpackMode: "lazy-once" */ 468 /* webpackMode: "lazy-once" */
469 `@/pages/Library/eBook.vue` 469 `@/pages/Library/eBook.vue`
470 ) 470 )
471 }, 471 },
472 { 472 {
473 path: '/editInvoice/:invoiceid', 473 path: '/editInvoice/:invoiceid',
474 meta: {}, 474 meta: {},
475 name: 'Edit Invoice', 475 name: 'Edit Invoice',
476 // props: (route) => ({ type: route.query.type }), 476 // props: (route) => ({ type: route.query.type }),
477 component: () => 477 component: () =>
478 import ( 478 import (
479 /* webpackChunkName: "routes" */ 479 /* webpackChunkName: "routes" */
480 /* webpackMode: "lazy-once" */ 480 /* webpackMode: "lazy-once" */
481 `@/pages/Account/editInvoice.vue` 481 `@/pages/Account/editInvoice.vue`
482 ) 482 )
483 }, 483 },
484 { 484 {
485 path: '/StudentsAttendence/:id', 485 path: '/StudentsAttendence/:id',
486 meta: {}, 486 meta: {},
487 name: 'View Students Attendence', 487 name: 'View Students Attendence',
488 props: (route) => ({ type: route.query.type }), 488 props: (route) => ({ type: route.query.type }),
489 component: () => 489 component: () =>
490 import ( 490 import (
491 /* webpackChunkName: "routes" */ 491 /* webpackChunkName: "routes" */
492 /* webpackMode: "lazy-once" */ 492 /* webpackMode: "lazy-once" */
493 `@/pages/Attendence/viewStudentsAttendence.vue` 493 `@/pages/Attendence/viewStudentsAttendence.vue`
494 ) 494 )
495 }, 495 },
496 { 496 {
497 path: '/TeacherAttendence/:teacherId', 497 path: '/TeacherAttendence/:teacherId',
498 meta: {}, 498 meta: {},
499 name: 'View Teacher Attendence', 499 name: 'View Teacher Attendence',
500 props: (route) => ({ type: route.query.type }), 500 props: (route) => ({ type: route.query.type }),
501 component: () => 501 component: () =>
502 import ( 502 import (
503 /* webpackChunkName: "routes" */ 503 /* webpackChunkName: "routes" */
504 /* webpackMode: "lazy-once" */ 504 /* webpackMode: "lazy-once" */
505 `@/pages/Attendence/viewTeacherAttendence.vue` 505 `@/pages/Attendence/viewTeacherAttendence.vue`
506 ) 506 )
507 }, 507 },
508 { 508 {
509 path: '/viewInvoice/:viewInvoiceId', 509 path: '/viewInvoice/:viewInvoiceId',
510 meta: {}, 510 meta: {},
511 name: 'View Invoice', 511 name: 'View Invoice',
512 props: (route) => ({ type: route.query.type }), 512 props: (route) => ({ type: route.query.type }),
513 component: () => 513 component: () =>
514 import ( 514 import (
515 /* webpackChunkName: "routes" */ 515 /* webpackChunkName: "routes" */
516 /* webpackMode: "lazy-once" */ 516 /* webpackMode: "lazy-once" */
517 `@/pages/Account/viewInvoice.vue` 517 `@/pages/Account/viewInvoice.vue`
518 ) 518 )
519 }, 519 },
520 { 520 {
521 path: '/viewPaymentInvoice/:viewPaymentInvoiceId', 521 path: '/viewPaymentInvoice/:viewPaymentInvoiceId',
522 meta: {}, 522 meta: {},
523 name: 'View Payment Invoice', 523 name: 'View Payment Invoice',
524 props: (route) => ({ type: route.query.type }), 524 props: (route) => ({ type: route.query.type }),
525 component: () => 525 component: () =>
526 import ( 526 import (
527 /* webpackChunkName: "routes" */ 527 /* webpackChunkName: "routes" */
528 /* webpackMode: "lazy-once" */ 528 /* webpackMode: "lazy-once" */
529 `@/pages/Account/viewPaymentInvoice.vue` 529 `@/pages/Account/viewPaymentInvoice.vue`
530 ) 530 )
531 }, 531 },
532 { 532 {
533 path: '/globalPayment', 533 path: '/globalPayment',
534 meta: {}, 534 meta: {},
535 name: 'Global Payment', 535 name: 'Global Payment',
536 props: (route) => ({ type: route.query.type }), 536 props: (route) => ({ type: route.query.type }),
537 component: () => 537 component: () =>
538 import ( 538 import (
539 /* webpackChunkName: "routes" */ 539 /* webpackChunkName: "routes" */
540 /* webpackMode: "lazy-once" */ 540 /* webpackMode: "lazy-once" */
541 `@/pages/Account/globalPayment.vue` 541 `@/pages/Account/globalPayment.vue`
542 ) 542 )
543 }, 543 },
544 { 544 {
545 path: '/exam', 545 path: '/exam',
546 meta: {}, 546 meta: {},
547 name: 'Exam', 547 name: 'Exam',
548 props: (route) => ({ type: route.query.type }), 548 props: (route) => ({ type: route.query.type }),
549 component: () => 549 component: () =>
550 import ( 550 import (
551 /* webpackChunkName: "routes" */ 551 /* webpackChunkName: "routes" */
552 /* webpackMode: "lazy-once" */ 552 /* webpackMode: "lazy-once" */
553 `@/pages/Exam/exam.vue` 553 `@/pages/Exam/exam.vue`
554 ) 554 )
555 }, 555 },
556 { 556 {
557 path: '/grade', 557 path: '/grade',
558 meta: {}, 558 meta: {},
559 name: 'Grade', 559 name: 'Grade',
560 props: (route) => ({ type: route.query.type }), 560 props: (route) => ({ type: route.query.type }),
561 component: () => 561 component: () =>
562 import ( 562 import (
563 /* webpackChunkName: "routes" */ 563 /* webpackChunkName: "routes" */
564 /* webpackMode: "lazy-once" */ 564 /* webpackMode: "lazy-once" */
565 `@/pages/Exam/grade.vue` 565 `@/pages/Exam/grade.vue`
566 ) 566 )
567 }, 567 },
568 { 568 {
569 path: '/examSchedule', 569 path: '/examSchedule',
570 meta: {}, 570 meta: {},
571 name: 'Exam Schedule', 571 name: 'Exam Schedule',
572 props: (route) => ({ type: route.query.type }), 572 props: (route) => ({ type: route.query.type }),
573 component: () => 573 component: () =>
574 import ( 574 import (
575 /* webpackChunkName: "routes" */ 575 /* webpackChunkName: "routes" */
576 /* webpackMode: "lazy-once" */ 576 /* webpackMode: "lazy-once" */
577 `@/pages/Exam/examSchedule.vue` 577 `@/pages/Exam/examSchedule.vue`
578 ) 578 )
579 }, 579 },
580 { 580 {
581 path: '/examAttendence', 581 path: '/examAttendence',
582 meta: {}, 582 meta: {},
583 name: 'Exam Attendence', 583 name: 'Exam Attendence',
584 props: (route) => ({ type: route.query.type }), 584 props: (route) => ({ type: route.query.type }),
585 component: () => 585 component: () =>
586 import ( 586 import (
587 /* webpackChunkName: "routes" */ 587 /* webpackChunkName: "routes" */
588 /* webpackMode: "lazy-once" */ 588 /* webpackMode: "lazy-once" */
589 `@/pages/Exam/examAttendence.vue` 589 `@/pages/Exam/examAttendence.vue`
590 ) 590 )
591 }, 591 },
592 { 592 {
593 path: '/mark', 593 path: '/mark',
594 meta: {}, 594 meta: {},
595 name: 'Mark', 595 name: 'Mark',
596 props: (route) => ({ type: route.query.type }), 596 props: (route) => ({ type: route.query.type }),
597 component: () => 597 component: () =>
598 import ( 598 import (
599 /* webpackChunkName: "routes" */ 599 /* webpackChunkName: "routes" */
600 /* webpackMode: "lazy-once" */ 600 /* webpackMode: "lazy-once" */
601 `@/pages/Mark/mark.vue` 601 `@/pages/Mark/mark.vue`
602 ) 602 )
603 }, 603 },
604 { 604 {
605 path: '/viewMark/:markId', 605 path: '/viewMark/:markId',
606 meta: {}, 606 meta: {},
607 name: 'view Mark', 607 name: 'view Mark',
608 props: (route) => ({ type: route.query.type }), 608 props: (route) => ({ type: route.query.type }),
609 component: () => 609 component: () =>
610 import ( 610 import (
611 /* webpackChunkName: "routes" */ 611 /* webpackChunkName: "routes" */
612 /* webpackMode: "lazy-once" */ 612 /* webpackMode: "lazy-once" */
613 `@/pages/Mark/viewMark.vue` 613 `@/pages/Mark/viewMark.vue`
614 ) 614 )
615 }, 615 },
616 { 616 {
617 path: '/markDistribution', 617 path: '/markDistribution',
618 meta: {}, 618 meta: {},
619 name: 'Mark Distribution', 619 name: 'Mark Distribution',
620 props: (route) => ({ type: route.query.type }), 620 props: (route) => ({ type: route.query.type }),
621 component: () => 621 component: () =>
622 import ( 622 import (
623 /* webpackChunkName: "routes" */ 623 /* webpackChunkName: "routes" */
624 /* webpackMode: "lazy-once" */ 624 /* webpackMode: "lazy-once" */
625 `@/pages/Mark/markDistribution.vue` 625 `@/pages/Mark/markDistribution.vue`
626 ) 626 )
627 }, 627 },
628 { 628 {
629 path: '/meet', 629 path: '/meet',
630 meta: {}, 630 meta: {},
631 name: 'Meet', 631 name: 'Meet',
632 props: (route) => ({ type: route.query.type }), 632 props: (route) => ({ type: route.query.type }),
633 component: () => 633 component: () =>
634 import ( 634 import (
635 /* webpackChunkName: "routes" */ 635 /* webpackChunkName: "routes" */
636 /* webpackMode: "lazy-once" */ 636 /* webpackMode: "lazy-once" */
637 `@/pages/Meet/meet.vue` 637 `@/pages/Meet/meet.vue`
638 ) 638 )
639 }, 639 },
640 { 640 {
641 path: '/academicYear', 641 path: '/academicYear',
642 meta: {}, 642 meta: {},
643 name: 'Academic Year', 643 name: 'Academic Year',
644 props: (route) => ({ type: route.query.type }), 644 props: (route) => ({ type: route.query.type }),
645 component: () => 645 component: () =>
646 import ( 646 import (
647 /* webpackChunkName: "routes" */ 647 /* webpackChunkName: "routes" */
648 /* webpackMode: "lazy-once" */ 648 /* webpackMode: "lazy-once" */
649 `@/pages/Administrator/academicYear.vue` 649 `@/pages/Administrator/academicYear.vue`
650 ) 650 )
651 }, 651 },
652 { 652 {
653 path: '/systemAdmin', 653 path: '/systemAdmin',
654 meta: {}, 654 meta: {},
655 name: 'System Admin', 655 name: 'System Admin',
656 props: (route) => ({ type: route.query.type }), 656 props: (route) => ({ type: route.query.type }),
657 component: () => 657 component: () =>
658 import ( 658 import (
659 /* webpackChunkName: "routes" */ 659 /* webpackChunkName: "routes" */
660 /* webpackMode: "lazy-once" */ 660 /* webpackMode: "lazy-once" */
661 `@/pages/Administrator/systemAdmin.vue` 661 `@/pages/Administrator/systemAdmin.vue`
662 ) 662 )
663 }, 663 },
664 { 664 {
665 path: '/resetPassword', 665 path: '/resetPassword',
666 meta: {}, 666 meta: {},
667 name: 'Change Password', 667 name: 'Change Password',
668 props: (route) => ({ type: route.query.type }), 668 props: (route) => ({ type: route.query.type }),
669 component: () => 669 component: () =>
670 import ( 670 import (
671 /* webpackChunkName: "routes" */ 671 /* webpackChunkName: "routes" */
672 /* webpackMode: "lazy-once" */ 672 /* webpackMode: "lazy-once" */
673 `@/pages/Administrator/resetPassword.vue` 673 `@/pages/Administrator/resetPassword.vue`
674 ) 674 )
675 }, 675 },
676 { 676 {
677 path: '/role', 677 path: '/role',
678 meta: {}, 678 meta: {},
679 name: 'Role', 679 name: 'Role',
680 props: (route) => ({ type: route.query.type }), 680 props: (route) => ({ type: route.query.type }),
681 component: () => 681 component: () =>
682 import ( 682 import (
683 /* webpackChunkName: "routes" */ 683 /* webpackChunkName: "routes" */
684 /* webpackMode: "lazy-once" */ 684 /* webpackMode: "lazy-once" */
685 `@/pages/Administrator/role.vue` 685 `@/pages/Administrator/role.vue`
686 ) 686 )
687 }, 687 },
688 { 688 {
689 path: '/bulkImport', 689 path: '/bulkImport',
690 meta: {}, 690 meta: {},
691 name: 'Bulk Import', 691 name: 'Bulk Import',
692 props: (route) => ({ type: route.query.type }), 692 props: (route) => ({ type: route.query.type }),
693 component: () => 693 component: () =>
694 import ( 694 import (
695 /* webpackChunkName: "routes" */ 695 /* webpackChunkName: "routes" */
696 /* webpackMode: "lazy-once" */ 696 /* webpackMode: "lazy-once" */
697 `@/pages/Administrator/bulkImport.vue` 697 `@/pages/Administrator/bulkImport.vue`
698 ) 698 )
699 }, 699 },
700 { 700 {
701 path: '/studentReport', 701 path: '/studentReport',
702 meta: {}, 702 meta: {},
703 name: 'Student Report', 703 name: 'Student Report',
704 props: (route) => ({ type: route.query.type }), 704 props: (route) => ({ type: route.query.type }),
705 component: () => 705 component: () =>
706 import ( 706 import (
707 /* webpackChunkName: "routes" */ 707 /* webpackChunkName: "routes" */
708 /* webpackMode: "lazy-once" */ 708 /* webpackMode: "lazy-once" */
709 `@/pages/Report/studentReport.vue` 709 `@/pages/Report/studentReport.vue`
710 ) 710 )
711 }, 711 },
712 { 712 {
713 path: '/progressCardReport', 713 path: '/progressCardReport',
714 meta: {}, 714 meta: {},
715 name: 'Progress Card Report', 715 name: 'Progress Card Report',
716 props: (route) => ({ type: route.query.type }), 716 props: (route) => ({ type: route.query.type }),
717 component: () => 717 component: () =>
718 import ( 718 import (
719 /* webpackChunkName: "routes" */ 719 /* webpackChunkName: "routes" */
720 /* webpackMode: "lazy-once" */ 720 /* webpackMode: "lazy-once" */
721 `@/pages/Report/progressCardReport.vue` 721 `@/pages/Report/progressCardReport.vue`
722 ) 722 )
723 }, 723 },
724 { 724 {
725 path: '/idCard', 725 path: '/idCard',
726 meta: {}, 726 meta: {},
727 name: 'Id Card Report', 727 name: 'Id Card Report',
728 props: (route) => ({ type: route.query.type }), 728 props: (route) => ({ type: route.query.type }),
729 component: () => 729 component: () =>
730 import ( 730 import (
731 `@/pages/Report/idCard.vue` 731 `@/pages/Report/idCard.vue`
732 ) 732 )
733 }, 733 },
734 { 734 {
735 path: '/admitCard', 735 path: '/admitCard',
736 meta: {}, 736 meta: {},
737 name: 'Admit Card Report', 737 name: 'Admit Card Report',
738 props: (route) => ({ type: route.query.type }), 738 props: (route) => ({ type: route.query.type }),
739 component: () => 739 component: () =>
740 import ( 740 import (
741 `@/pages/Report/admitCard.vue` 741 `@/pages/Report/admitCard.vue`
742 ) 742 )
743 }, 743 },
744 { 744 {
745 path: '/generalSetting', 745 path: '/generalSetting',
746 meta: {}, 746 meta: {},
747 name: 'General Setting', 747 name: 'General Setting',
748 props: (route) => ({ type: route.query.type }), 748 props: (route) => ({ type: route.query.type }),
749 component: () => 749 component: () =>
750 import ( 750 import (
751 /* webpackChunkName: "routes" */ 751 /* webpackChunkName: "routes" */
752 /* webpackMode: "lazy-once" */ 752 /* webpackMode: "lazy-once" */
753 `@/pages/generalSetting/generalSetting.vue` 753 `@/pages/generalSetting/generalSetting.vue`
754 ) 754 )
755 }, 755 },
756 { 756 {
757 path: '/assignment', 757 path: '/assignment',
758 meta: {}, 758 meta: {},
759 name: 'Assignment', 759 name: 'Assignment',
760 props: (route) => ({ type: route.query.type }), 760 props: (route) => ({ type: route.query.type }),
761 component: () => 761 component: () =>
762 import ( 762 import (
763 `@/pages/Academic/assignment.vue` 763 `@/pages/Academic/assignment.vue`
764 ) 764 )
765 }, 765 },
766 { 766 {
767 path: '/routine', 767 path: '/routine',
768 meta: {}, 768 meta: {},
769 name: 'Routine', 769 name: 'Routine',
770 props: (route) => ({ type: route.query.type }), 770 props: (route) => ({ type: route.query.type }),
771 component: () => 771 component: () =>
772 import ( 772 import (
773 `@/pages/Academic/routine.vue` 773 `@/pages/Academic/routine.vue`
774 ) 774 )
775 }, 775 },
776 { 776 {
777 path: '/subject', 777 path: '/subject',
778 meta: {}, 778 meta: {},
779 name: 'Subject', 779 name: 'Subject',
780 props: (route) => ({ type: route.query.type }), 780 props: (route) => ({ type: route.query.type }),
781 component: () => 781 component: () =>
782 import ( 782 import (
783 `@/pages/Academic/subject.vue` 783 `@/pages/Academic/subject.vue`
784 ) 784 )
785 }, 785 },
786 { 786 {
787 path: '/syllabus', 787 path: '/syllabus',
788 meta: {}, 788 meta: {},
789 name: 'Syllabus', 789 name: 'Syllabus',
790 props: (route) => ({ type: route.query.type }), 790 props: (route) => ({ type: route.query.type }),
791 component: () => 791 component: () =>
792 import ( 792 import (
793 `@/pages/Academic/syllabus.vue` 793 `@/pages/Academic/syllabus.vue`
794 ) 794 )
795 }, 795 },
796 796 {
797 path: '/course',
798 meta: {},
799 name: 'Course',
800 props: (route) => ({ type: route.query.type }),
801 component: () =>
802 import (
803 /* webpackChunkName: "routes" */
804 /* webpackMode: "lazy-once" */
805 `@/pages/Course/course.vue`
806 )
807 },
808 {
809 path: '/enrollStudents',
810 meta: {},
811 name: 'Enroll Students',
812 props: (route) => ({ type: route.query.type }),
813 component: () =>
814 import (
815 /* webpackChunkName: "routes" */
816 /* webpackMode: "lazy-once" */
817 `@/pages/Course/enrollStudents.vue`
818 )
819 },
820 {
821 path: '/annoucement',
822 meta: {},
823 name: 'Annoucement',
824 props: (route) => ({ type: route.query.type }),
825 component: () =>
826 import (
827 /* webpackChunkName: "routes" */
828 /* webpackMode: "lazy-once" */
829 `@/pages/Annoucement/annoucement.vue`
830 )
831 },
797 //////SCHOOL 832 //////SCHOOL
798 833
799 { 834 {
800 path: '/school', 835 path: '/school',
801 meta: {}, 836 meta: {},
802 name: 'School', 837 name: 'School',
803 props: (route) => ({ type: route.query.type }), 838 props: (route) => ({ type: route.query.type }),
804 component: () => 839 component: () =>
805 import ( 840 import (
806 /* webpackChunkName: "routes" */ 841 /* webpackChunkName: "routes" */
807 /* webpackMode: "lazy-once" */ 842 /* webpackMode: "lazy-once" */
808 `@/pages/School/school.vue` 843 `@/pages/School/school.vue`
809 ) 844 )
810 }, 845 },
811 { 846 {
812 path: '/schooldashboard', 847 path: '/schooldashboard',
813 meta: {}, 848 meta: {},
814 name: 'View School Dashboard', 849 name: 'View School Dashboard',
815 props: (route) => ({ type: route.query.type }), 850 props: (route) => ({ type: route.query.type }),
816 component: () => 851 component: () =>
817 import ( 852 import (
818 /* webpackChunkName: "routes" */ 853 /* webpackChunkName: "routes" */
819 /* webpackMode: "lazy-once" */ 854 /* webpackMode: "lazy-once" */
820 `@/pages/School/viewSchoolDashboard.vue` 855 `@/pages/School/viewSchoolDashboard.vue`
821 ) 856 )
822 } 857 }
823 ]; 858 ];
static/icon/camera-icon-white.jpg

68.4 KB