Commit 11d037abedea4eef2309320b7dcfaaa4486c8d7d
1 parent
229463bd5f
Exists in
master
and in
3 other branches
commit code
Showing
15 changed files
with
1442 additions
and
98 deletions
Show diff stats
src/Services/http.js
src/api/menu.js
... | ... | @@ -311,7 +311,7 @@ const teacherMenu = [{ |
311 | 311 | items: [ |
312 | 312 | { name: 'Course', title: 'Course', component: 'Course', action: '', }, |
313 | 313 | { name: 'Enroll Students', title: 'Enroll Students', component: 'Enroll Students', action: '', }, |
314 | - // { name: 'Assignment', title: 'Assignment', component: 'Assignment', action: '', }, | |
314 | + { name: 'Course Detail', title: 'Course Detail', component: 'Course Detail', action: '', }, | |
315 | 315 | // { name: 'Routine', title: 'Routine', component: 'Routine', action: '', }, |
316 | 316 | ] |
317 | 317 | }, |
... | ... | @@ -381,6 +381,11 @@ const teacherMenu = [{ |
381 | 381 | } |
382 | 382 | ]; |
383 | 383 | |
384 | +const parentMenu = [{ | |
385 | + title: 'Dashboard', | |
386 | + name: 'Dashboard', | |
387 | + icon: '/static/icon/dashboard.png', | |
388 | +}]; | |
384 | 389 | // reorder menu |
385 | 390 | // Menu.forEach((item) => { |
386 | 391 | // if (item.items) { |
... | ... | @@ -392,4 +397,4 @@ const teacherMenu = [{ |
392 | 397 | // } |
393 | 398 | // }); |
394 | 399 | |
395 | -export default { adminMenu, schoolMenu, teacherMenu, libraryMenu, accountMenu }; | |
396 | 400 | \ No newline at end of file |
401 | +export default { adminMenu, schoolMenu, teacherMenu, libraryMenu, accountMenu, parentMenu }; | |
397 | 402 | \ No newline at end of file | ... | ... |
src/components/pageHeader/AppDrawer.vue
... | ... | @@ -486,6 +486,98 @@ |
486 | 486 | <!-- </a> --> |
487 | 487 | </v-list-tile> |
488 | 488 | </template> |
489 | + <template v-for="(item, i) in menuParent" v-if="role === 'PARENT'"> | |
490 | + <!-- {{menus}} --> | |
491 | + <!--group with subitems--> | |
492 | + <v-list-group v-if="item.items" :key="item.name" :group="item.group" no-action="no-action"> | |
493 | + <v-list-tile slot="activator" ripple="ripple"> | |
494 | + <v-list-tile-action v-if="item.icon"> | |
495 | + <img :src="item.icon" width="22" alt="icons" /> | |
496 | + </v-list-tile-action> | |
497 | + <v-list-tile-content> | |
498 | + <v-list-tile-title>{{ item.title }}</v-list-tile-title> | |
499 | + </v-list-tile-content> | |
500 | + </v-list-tile> | |
501 | + <template v-for="(subItem, i) in item.items"> | |
502 | + <!--sub group--> | |
503 | + <v-list-group | |
504 | + v-if="subItem.items" | |
505 | + :key="subItem.name" | |
506 | + :group="subItem.group" | |
507 | + sub-group="sub-group" | |
508 | + > | |
509 | + <v-list-tile slot="activator" ripple="ripple"> | |
510 | + <v-list-tile-content> | |
511 | + <v-list-tile-title>{{ subItem.title }}</v-list-tile-title> | |
512 | + </v-list-tile-content> | |
513 | + </v-list-tile> | |
514 | + <v-list-tile | |
515 | + v-for="(grand, i) in subItem.children" | |
516 | + :key="i" | |
517 | + :to="genChildTarget(item, grand)" | |
518 | + :href="grand.href" | |
519 | + ripple="ripple" | |
520 | + > | |
521 | + <v-list-tile-content> | |
522 | + <v-list-tile-title>{{ grand.title }}</v-list-tile-title> | |
523 | + </v-list-tile-content> | |
524 | + </v-list-tile> | |
525 | + </v-list-group> | |
526 | + <!--child item--> | |
527 | + <v-list-tile | |
528 | + v-else | |
529 | + :key="i" | |
530 | + :to="genChildTarget(item, subItem)" | |
531 | + :href="subItem.href" | |
532 | + :disabled="subItem.disabled" | |
533 | + :target="subItem.target" | |
534 | + ripple="ripple" | |
535 | + > | |
536 | + <v-list-tile-action v-if="subItem.action"> | |
537 | + <img | |
538 | + width="30" | |
539 | + :src="subItem.action" | |
540 | + :class="[subItem.actionClass || 'success--text']" | |
541 | + /> | |
542 | + </v-list-tile-action> | |
543 | + <v-list-tile-content> | |
544 | + <v-list-tile-title class="body-2"> | |
545 | + <span>{{ subItem.title }}</span> | |
546 | + </v-list-tile-title> | |
547 | + </v-list-tile-content> | |
548 | + <!-- <v-circle class="white--text pa-0 circle-pill" v-if="subItem.badge" color="red" disabled="disabled">{{ subItem.badge }}</v-circle> --> | |
549 | + </v-list-tile> | |
550 | + </template> | |
551 | + </v-list-group> | |
552 | + <v-subheader v-else-if="item.header" :key="i">{{ item.header }}</v-subheader> | |
553 | + <v-divider v-else-if="item.divider" :key="i"></v-divider> | |
554 | + <!--top-level link--> | |
555 | + <v-list-tile | |
556 | + v-else | |
557 | + ripple="ripple" | |
558 | + :disabled="item.disabled" | |
559 | + :target="item.target" | |
560 | + rel="noopener" | |
561 | + :key="item.name" | |
562 | + :to="!item.href ? { name: item.name } : null" | |
563 | + :href="item.href" | |
564 | + > | |
565 | + <!-- <a :href="item.path"> --> | |
566 | + <v-list-tile-action v-if="item.icon"> | |
567 | + <img :src="item.icon" width="22" alt="icons" /> | |
568 | + </v-list-tile-action> | |
569 | + <v-list-tile-content class="pt-2"> | |
570 | + <v-list-tile-title>{{ item.title }}</v-list-tile-title> | |
571 | + </v-list-tile-content> | |
572 | + <!-- <v-circle class="white--text pa-0 chip--x-small" v-if="item.badge" :color="item.color || 'primary'" disabled="disabled">{{ item.badge }}</v-circle> --> | |
573 | + <v-list-tile-action v-if="item.subAction"> | |
574 | + <!-- <v-icon class="success--text">{{ item.subAction }}</v-icon> --> | |
575 | + <!-- <img :src="item.icon" width="40" alt="icons" /> --> | |
576 | + </v-list-tile-action> | |
577 | + <!-- <v-circle class="caption blue lighten-2 white--text mx-0" v-else-if="item.chip" label="label" small="small">{{ item.chip }}</v-circle> --> | |
578 | + <!-- </a> --> | |
579 | + </v-list-tile> | |
580 | + </template> | |
489 | 581 | </v-list> |
490 | 582 | <!-- </vue-perfect-scrollbar> --> |
491 | 583 | </v-navigation-drawer> |
... | ... | @@ -512,6 +604,7 @@ export default { |
512 | 604 | menuTeacher: [], |
513 | 605 | menuAccount: [], |
514 | 606 | menuLibrarian: [], |
607 | + menuParent: [], | |
515 | 608 | schoolRole: "", |
516 | 609 | role: "", |
517 | 610 | scrollSettings: { |
... | ... | @@ -538,6 +631,7 @@ export default { |
538 | 631 | this.menuTeacher = menu.teacherMenu; |
539 | 632 | this.menuAccount = menu.accountMenu; |
540 | 633 | this.menuLibrarian = menu.libraryMenu; |
634 | + this.menuParent = menu.parentMenu; | |
541 | 635 | // console.log("this.$route.name", this.$route.name); |
542 | 636 | // if (this.$route.name === "School") { |
543 | 637 | // localStorage.setItem("SchoolName", this.$route.name); |
... | ... | @@ -599,6 +693,9 @@ export default { |
599 | 693 | if (this.$store.state.role === "LIBRARIAN") { |
600 | 694 | this.token = this.$store.state.token; |
601 | 695 | } |
696 | + if (this.$store.state.role === "PARENT") { | |
697 | + this.token = this.$store.state.token; | |
698 | + } | |
602 | 699 | } |
603 | 700 | }; |
604 | 701 | </script> | ... | ... |
src/components/pageHeader/AppToolbar.vue
... | ... | @@ -19,9 +19,9 @@ |
19 | 19 | </v-flex> |
20 | 20 | <v-spacer></v-spacer> |
21 | 21 | <v-btn type="button" @click="goToSchool" v-if="adminRole && SchoolRole">Towards School!</v-btn> |
22 | - <v-toolbar-items class="hidden-sm-and-down"> | |
22 | + <!-- <v-toolbar-items class="hidden-sm-and-down"> | |
23 | 23 | <v-icon class="header-icon">notifications_none</v-icon> |
24 | - </v-toolbar-items> | |
24 | + </v-toolbar-items>--> | |
25 | 25 | <v-menu offset-y origin="center center" :nudge-bottom="10" transition="scale-transition"> |
26 | 26 | <v-btn icon large flat slot="activator"> |
27 | 27 | <v-avatar size="26"> |
... | ... | @@ -97,6 +97,18 @@ export default { |
97 | 97 | mounted() { |
98 | 98 | // this.getUserData(); |
99 | 99 | this.adminRole = this.$store.state.role; |
100 | + if (this.adminRole == "PARENT") { | |
101 | + var obj = {}; | |
102 | + obj = { | |
103 | + icon: "face", | |
104 | + href: "/changeStudents", | |
105 | + title: "Change Student", | |
106 | + click: e => { | |
107 | + console.log(e); | |
108 | + } | |
109 | + }; | |
110 | + this.items.push(obj); | |
111 | + } | |
100 | 112 | // console.log("this.adminRole", this.adminRole); |
101 | 113 | this.SchoolRole = this.$store.state.schoolRole; |
102 | 114 | }, | ... | ... |
src/event.js
... | ... | @@ -45,6 +45,13 @@ export default [{ |
45 | 45 | this.$store.dispatch('setSchoolToken', null) |
46 | 46 | this.$store.dispatch('setSchoolRole', null) |
47 | 47 | this.$router.replace({ path: '/' }); |
48 | + } else if (this.$store.state.role === "PARENT") { | |
49 | + this.$store.dispatch('setToken', null) | |
50 | + this.$store.dispatch('Id', null) | |
51 | + this.$store.dispatch('Role', null) | |
52 | + this.$store.dispatch('setSchoolToken', null) | |
53 | + this.$store.dispatch('setSchoolRole', null) | |
54 | + this.$router.replace({ path: '/' }); | |
48 | 55 | } |
49 | 56 | } |
50 | 57 | }, | ... | ... |
src/pages/Authentication/Login.vue
... | ... | @@ -143,6 +143,11 @@ export default { |
143 | 143 | this.$store.dispatch("Id", response.data.data.id); |
144 | 144 | this.$store.dispatch("Role", response.data.data.role); |
145 | 145 | this.$router.push("/dashboard"); |
146 | + } else if (response.data.data.role === "PARENT") { | |
147 | + this.$store.dispatch("setToken", response.data.data.token); | |
148 | + this.$store.dispatch("Id", response.data.data.id); | |
149 | + this.$store.dispatch("Role", response.data.data.role); | |
150 | + this.$router.push("/dashboard"); | |
146 | 151 | } |
147 | 152 | }) |
148 | 153 | .catch(error => { | ... | ... |
src/pages/Course/course.vue
... | ... | @@ -299,8 +299,8 @@ |
299 | 299 | xs12 |
300 | 300 | class="text-xs-center text-sm-center text-md-center text-lg-center" |
301 | 301 | > |
302 | - <v-avatar size="100px"> | |
303 | - <img src="/static/icon/user.png" v-if="!imageUrl" /> | |
302 | + <v-avatar size="100px" v-if="!imageUrl"> | |
303 | + <img src="/static/icon/user.png" /> | |
304 | 304 | </v-avatar> |
305 | 305 | <input |
306 | 306 | type="file" | ... | ... |
src/pages/Course/courseDetail.vue
... | ... | @@ -0,0 +1,835 @@ |
1 | +<template> | |
2 | + <v-container fluid class="body-color"> | |
3 | + <!-- ****** EDITS Gallery ****** --> | |
4 | + <v-dialog v-model="editCourseDetailDialog" max-width="1000px" scrollable> | |
5 | + <v-card class="card-style pa-2" dark> | |
6 | + <v-layout> | |
7 | + <v-flex xs12> | |
8 | + <label class="title text-xs-center">Edit Course Detail</label> | |
9 | + <v-icon size="24" class="right" @click="editCourseDetailDialog = false">cancel</v-icon> | |
10 | + </v-flex> | |
11 | + </v-layout> | |
12 | + <v-card-text> | |
13 | + <v-layout wrap> | |
14 | + <v-flex xs12 sm12> | |
15 | + <v-layout> | |
16 | + <v-flex xs4 class="pt-4 subheading"> | |
17 | + <label class="right">Chapter Name:</label> | |
18 | + </v-flex> | |
19 | + <v-flex xs8 sm6 class="ml-3"> | |
20 | + <v-text-field | |
21 | + v-model="editChapter.chapterName" | |
22 | + placeholder="fill your Title" | |
23 | + type="text" | |
24 | + required | |
25 | + ></v-text-field> | |
26 | + </v-flex> | |
27 | + </v-layout> | |
28 | + </v-flex> | |
29 | + <v-flex xs12 sm12> | |
30 | + <v-layout> | |
31 | + <v-flex xs4 class="pt-4 subheading"> | |
32 | + <label class="right">Description:</label> | |
33 | + </v-flex> | |
34 | + <v-flex xs8 sm6 class="ml-3"> | |
35 | + <v-text-field | |
36 | + placeholder="fill your Description" | |
37 | + v-model="editChapter.description" | |
38 | + type="text" | |
39 | + required | |
40 | + ></v-text-field> | |
41 | + </v-flex> | |
42 | + </v-layout> | |
43 | + </v-flex> | |
44 | + </v-layout> | |
45 | + <v-flex xs12 v-if="editChapter.chapterPoints !=[]"> | |
46 | + <v-layout | |
47 | + wrap | |
48 | + v-for="(editChapterPoint,index) in editChapter.chapterPoints" | |
49 | + :key="index" | |
50 | + > | |
51 | + <v-flex xs12 sm12 md4 class="pt-4 subheading"> | |
52 | + <label class="right hidden-xs-only hidden-sm-only">Chapter Points:</label> | |
53 | + <label class="hidden-md-only hidden-lg-only hidden-xl-only">Chapter Points:</label> | |
54 | + </v-flex> | |
55 | + <v-layout> | |
56 | + <v-flex xs10 sm10 sm5 md9 class="ml-3"> | |
57 | + <v-text-field :value="editChapterPoint" type="text" required></v-text-field> | |
58 | + </v-flex> | |
59 | + <v-flex xs2 class="pt-4"> | |
60 | + <v-icon @click="deleteUrl(index,editChapter._id)">cancel</v-icon> | |
61 | + </v-flex> | |
62 | + </v-layout> | |
63 | + </v-layout> | |
64 | + </v-flex> | |
65 | + <v-layout> | |
66 | + <v-flex xs12 sm12 md11 lg11> | |
67 | + <v-card-actions class="hidden-xs-only hidden-sm-only"> | |
68 | + <v-spacer></v-spacer> | |
69 | + <v-btn round dark @click="save" :loading="editLoading" class="add-button mr-4">Save</v-btn> | |
70 | + </v-card-actions> | |
71 | + <v-card-actions class="hidden-md-only hidden-lg-only hidden-xl-only"> | |
72 | + <v-spacer></v-spacer> | |
73 | + <v-btn round dark @click="save" :loading="editLoading" class="add-button">Save</v-btn> | |
74 | + <v-spacer></v-spacer> | |
75 | + </v-card-actions> | |
76 | + </v-flex> | |
77 | + </v-layout> | |
78 | + </v-card-text> | |
79 | + </v-card> | |
80 | + </v-dialog> | |
81 | + | |
82 | + <!-- ****** PROFILE Gallery ****** --> | |
83 | + | |
84 | + <v-dialog v-model="viewProfileGallery" max-width="1000" scrollable> | |
85 | + <v-card flat class="card-style pa-3" dark> | |
86 | + <v-layout> | |
87 | + <v-flex xs12> | |
88 | + <label class="title text-xs-center">View Course Detail</label> | |
89 | + <v-icon size="24" class="right" @click="closeProfileGallery">cancel</v-icon> | |
90 | + </v-flex> | |
91 | + </v-layout> | |
92 | + <v-card-text> | |
93 | + <v-container grid-list-md> | |
94 | + <v-layout wrap> | |
95 | + <v-flex xs12> | |
96 | + <v-layout> | |
97 | + <v-flex xs4 sm6> | |
98 | + <h5 class="right my-1"> | |
99 | + <b>Chapter Name:</b> | |
100 | + </h5> | |
101 | + </v-flex> | |
102 | + <v-flex sm6 xs8> | |
103 | + <h5 class="my-1">{{ editedItem.chapterName }}</h5> | |
104 | + </v-flex> | |
105 | + </v-layout> | |
106 | + <v-layout> | |
107 | + <v-flex xs4 sm6> | |
108 | + <h5 class="right my-1"> | |
109 | + <b>Description:</b> | |
110 | + </h5> | |
111 | + </v-flex> | |
112 | + <v-flex sm6 xs8> | |
113 | + <h5 class="my-1">{{ editedItem.description }}</h5> | |
114 | + </v-flex> | |
115 | + </v-layout> | |
116 | + <v-layout> | |
117 | + <v-flex xs5 sm6> | |
118 | + <h5 class="right my-1"> | |
119 | + <b>You Tube Link Url:</b> | |
120 | + </h5> | |
121 | + </v-flex> | |
122 | + <v-flex sm6 xs8> | |
123 | + <h5 class="my-1"> | |
124 | + <ul v-for="chapterPoint in editedItem.chapterPoints" :key="chapterPoint"> | |
125 | + <li>{{ chapterPoint}}</li> | |
126 | + </ul> | |
127 | + </h5> | |
128 | + </v-flex> | |
129 | + </v-layout> | |
130 | + </v-flex> | |
131 | + </v-layout> | |
132 | + </v-container> | |
133 | + </v-card-text> | |
134 | + </v-card> | |
135 | + </v-dialog> | |
136 | + | |
137 | + <!-- ****** Course Detail TABLE ****** --> | |
138 | + | |
139 | + <v-toolbar color="transparent" flat> | |
140 | + <v-btn | |
141 | + fab | |
142 | + dark | |
143 | + class="open-dialog-button hidden-xl-only hidden-md-only hidden-lg-only" | |
144 | + small | |
145 | + @click="addCourseDetailDialog = true" | |
146 | + > | |
147 | + <v-icon dark>add</v-icon> | |
148 | + </v-btn> | |
149 | + <v-btn | |
150 | + round | |
151 | + class="open-dialog-button hidden-sm-only hidden-xs-only" | |
152 | + dark | |
153 | + @click="addCourseDetailDialog = true" | |
154 | + > | |
155 | + <v-icon class="white--text pr-1" size="20">add</v-icon>Add Course Detail | |
156 | + </v-btn> | |
157 | + <v-flex xs12 sm4 md2> | |
158 | + <v-select | |
159 | + small | |
160 | + :items="addclass" | |
161 | + label="Select Class" | |
162 | + v-model="getCourse.classId" | |
163 | + item-text="classNum" | |
164 | + item-value="_id" | |
165 | + name="Select Class" | |
166 | + @change="getCourses(getCourse.classId)" | |
167 | + class="mr-2" | |
168 | + required | |
169 | + ></v-select> | |
170 | + </v-flex> | |
171 | + <v-flex xs12 sm4 md2> | |
172 | + <v-select | |
173 | + :items="courseData" | |
174 | + label="Select Course" | |
175 | + v-model="getCourse.courseId" | |
176 | + item-text="coursrName" | |
177 | + item-value="_id" | |
178 | + required | |
179 | + class="ml-2" | |
180 | + @change="getCourseDetailsList(getCourse.courseId)" | |
181 | + ></v-select> | |
182 | + </v-flex> | |
183 | + <v-spacer></v-spacer> | |
184 | + <v-card-title class="body-1" v-show="show"> | |
185 | + <v-btn icon large flat @click="displaySearch"> | |
186 | + <v-avatar size="27"> | |
187 | + <img src="/static/icon/search.png" alt="icon" /> | |
188 | + </v-avatar> | |
189 | + </v-btn> | |
190 | + </v-card-title> | |
191 | + <v-flex xs8 sm8 md3 lg2 v-show="showSearch"> | |
192 | + <v-layout> | |
193 | + <v-text-field v-model="search" label="Search" prepend-inner-icon="search" color="primary"></v-text-field> | |
194 | + <v-icon @click="closeSearch" color="error">close</v-icon> | |
195 | + </v-layout> | |
196 | + </v-flex> | |
197 | + </v-toolbar> | |
198 | + <v-data-table | |
199 | + :headers="headers" | |
200 | + :items="CourseDetailsList" | |
201 | + :pagination.sync="pagination" | |
202 | + :search="search" | |
203 | + item-key="_id" | |
204 | + > | |
205 | + <template slot="items" slot-scope="props"> | |
206 | + <tr class="tr" @click="props.expanded = !props.expanded"> | |
207 | + <td class="td td-row">{{ props.index + 1}}</td> | |
208 | + <td class="td td-row text-xs-center">{{ props.item.classId.classNum }}</td> | |
209 | + <td class="td td-row text-xs-center">{{ props.item.courseId.coursrName }}</td> | |
210 | + <td class="td td-row text-xs-center"> | |
211 | + <span> | |
212 | + <!-- <v-tooltip top> | |
213 | + <img | |
214 | + slot="activator" | |
215 | + style="cursor:pointer; width:25px; height:25px; " | |
216 | + class="mr-3" | |
217 | + @click="profile(props.item)" | |
218 | + src="/static/icon/view.png" | |
219 | + /> | |
220 | + <span>View</span> | |
221 | + </v-tooltip> | |
222 | + <v-tooltip top> | |
223 | + <img | |
224 | + slot="activator" | |
225 | + style="cursor:pointer; width:20px; height:18px; " | |
226 | + class="mr-3" | |
227 | + @click="editItem(props.item)" | |
228 | + src="/static/icon/edit.png" | |
229 | + /> | |
230 | + <span>Edit</span> | |
231 | + </v-tooltip>--> | |
232 | + <v-tooltip top> | |
233 | + <img | |
234 | + slot="activator" | |
235 | + style="cursor:pointer; width:20px; height:20px; " | |
236 | + class="mr-3" | |
237 | + @click="deleteItem(props.item)" | |
238 | + src="/static/icon/delete.png" | |
239 | + /> | |
240 | + <span>Delete</span> | |
241 | + </v-tooltip> | |
242 | + </span> | |
243 | + </td> | |
244 | + </tr> | |
245 | + </template> | |
246 | + <template slot="expand" slot-scope="props"> | |
247 | + <v-data-table :items="chapters" hide-actions item-key="chapterName" style="width: auto;"> | |
248 | + <template slot="items" slot-scope="props"> | |
249 | + <tr class="tr" @click="props.expanded = !props.expanded"> | |
250 | + <td class="td td-row">{{ props.index + 1}}</td> | |
251 | + <td class="text-xs-center td td-row">{{ props.item.chapterName}}</td> | |
252 | + <td class="text-xs-center td td-row">{{ props.item.description }}</td> | |
253 | + <td class="text-xs-center td td-row"> | |
254 | + <v-tooltip top> | |
255 | + <img | |
256 | + slot="activator" | |
257 | + style="cursor:pointer; width:25px; height:25px; " | |
258 | + class="mr-3" | |
259 | + @click="profile(props.item)" | |
260 | + src="/static/icon/view.png" | |
261 | + /> | |
262 | + <span>View</span> | |
263 | + </v-tooltip> | |
264 | + <v-tooltip top> | |
265 | + <img | |
266 | + slot="activator" | |
267 | + style="cursor:pointer; width:20px; height:18px; " | |
268 | + class="mr-3" | |
269 | + @click="editChapterItem(props.item)" | |
270 | + src="/static/icon/edit.png" | |
271 | + /> | |
272 | + <span>Edit</span> | |
273 | + </v-tooltip> | |
274 | + </td> | |
275 | + </tr> | |
276 | + <!-- <td class="text-xs-center td td-row">{{ props.item.chapterName}}</td> --> | |
277 | + <!-- <td class="text-xs-center td td-row">{{ props.item.description }}</td> --> | |
278 | + | |
279 | + <!-- <tr class="tr"> | |
280 | + <td class="text-xs-left subheading table-td td td-row"> | |
281 | + <b>{{ props.item.day }}</b> | |
282 | + </td> | |
283 | + <td class="table-td td td-row"> | |
284 | + <b>Subject</b> | |
285 | + <br /> | |
286 | + <b>Time In</b> | |
287 | + <br /> | |
288 | + <b>Time Out</b> | |
289 | + </td> | |
290 | + <td v-for="list in props.item.lectures" class="table-td td td-row"> | |
291 | + <b>{{ list.subjectName }}</b> | |
292 | + <img | |
293 | + style="cursor:pointer; width:20px; height:18px; " | |
294 | + class="mr-2 ml-2" | |
295 | + src="/static/icon/edit1.png" | |
296 | + @click="updateTimeTable(list, timeTableList,props.item._id)" | |
297 | + /> | |
298 | + <img | |
299 | + style="cursor:pointer; width:20px; height:20px; " | |
300 | + src="/static/icon/delete1.png" | |
301 | + @click="deleteTimeTable(list,props.item.lectures)" | |
302 | + /> | |
303 | + <br /> | |
304 | + {{list.timeIn}} | |
305 | + <br /> | |
306 | + {{list.timeOut}} | |
307 | + </td> | |
308 | + <td class="td td-row"> | |
309 | + <v-tooltip top> | |
310 | + <v-icon | |
311 | + slot="activator" | |
312 | + color="black" | |
313 | + @click="addLecture(props.item._id, timeTableList._id)" | |
314 | + >add_circle_outline</v-icon> | |
315 | + <span>Add</span> | |
316 | + </v-tooltip> | |
317 | + </td> | |
318 | + </tr>--> | |
319 | + </template> | |
320 | + <!-- <template slot="expand" slot-scope="props"> | |
321 | + <v-data-table | |
322 | + :items="props" | |
323 | + hide-actions | |
324 | + item-key="chapterName" | |
325 | + style="width: auto;" | |
326 | + > | |
327 | + <template slot="items" slot-scope="props"> | |
328 | + {{items}} | |
329 | + <tr class="tr"> | |
330 | + <td class="td td-row">{{ props.index + 1}}</td> | |
331 | + </tr> | |
332 | + </template> | |
333 | + </v-data-table> | |
334 | + </template>--> | |
335 | + </v-data-table> | |
336 | + </template> | |
337 | + | |
338 | + <v-alert | |
339 | + slot="no-results" | |
340 | + :value="true" | |
341 | + color="error" | |
342 | + icon="warning" | |
343 | + >Your search for "{{ search }}" found no results.</v-alert> | |
344 | + </v-data-table> | |
345 | + <!-- ****** ADD Course Detail ****** --> | |
346 | + <v-dialog v-model="addCourseDetailDialog" max-width="600px"> | |
347 | + <v-card flat class="card-style pa-2" dark> | |
348 | + <v-layout> | |
349 | + <v-flex xs12> | |
350 | + <label class="title text-xs-center">Add Course Details</label> | |
351 | + <v-icon size="24" class="right" @click="addCourseDetailDialog = false">cancel</v-icon> | |
352 | + </v-flex> | |
353 | + </v-layout> | |
354 | + <v-form ref="form" v-model="valid" lazy-validation> | |
355 | + <v-container fluid> | |
356 | + <v-flex xs12> | |
357 | + <v-layout> | |
358 | + <v-flex xs4 class="pt-4 subheading"> | |
359 | + <label class="right hidden-xs-only hidden-sm-only">Select Class:</label> | |
360 | + <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Class:</label> | |
361 | + </v-flex> | |
362 | + <v-flex xs8 sm8 md7 class="ml-3"> | |
363 | + <v-select | |
364 | + :items="addclass" | |
365 | + label="Select Class" | |
366 | + v-model="addCourseDetail.classId" | |
367 | + item-text="classNum" | |
368 | + item-value="_id" | |
369 | + name="Select Class" | |
370 | + :rules="clsssRules" | |
371 | + @change="getCourses(addCourseDetail.classId)" | |
372 | + required | |
373 | + ></v-select> | |
374 | + </v-flex> | |
375 | + </v-layout> | |
376 | + </v-flex> | |
377 | + <v-flex xs12> | |
378 | + <v-layout> | |
379 | + <v-flex xs4 class="pt-4 subheading"> | |
380 | + <label class="right hidden-xs-only hidden-sm-only">Select Course:</label> | |
381 | + <label class="right hidden-lg-only hidden-md-only hidden-xl-only">Course:</label> | |
382 | + </v-flex> | |
383 | + <v-flex xs8 sm8 md7 class="ml-3"> | |
384 | + <v-select | |
385 | + :items="courseData" | |
386 | + label="Select Course" | |
387 | + v-model="addCourseDetail.courseId" | |
388 | + item-text="coursrName" | |
389 | + item-value="_id" | |
390 | + :rules="courseRules" | |
391 | + required | |
392 | + ></v-select> | |
393 | + </v-flex> | |
394 | + </v-layout> | |
395 | + </v-flex> | |
396 | + <v-flex xs12> | |
397 | + <v-layout> | |
398 | + <v-flex xs4 class="pt-4 subheading"> | |
399 | + <label class="right">Chapter Name:</label> | |
400 | + </v-flex> | |
401 | + <v-flex xs8 sm8 md7 class="ml-3"> | |
402 | + <v-text-field | |
403 | + v-model="addCourseDetail.chapterName" | |
404 | + placeholder="fill your Title" | |
405 | + name="name" | |
406 | + type="text" | |
407 | + :rules="chapterNameRules" | |
408 | + required | |
409 | + ></v-text-field> | |
410 | + </v-flex> | |
411 | + </v-layout> | |
412 | + </v-flex> | |
413 | + <v-flex xs12> | |
414 | + <v-layout> | |
415 | + <v-flex xs4 class="pt-4 subheading"> | |
416 | + <label class="right">Description:</label> | |
417 | + </v-flex> | |
418 | + <v-flex xs8 sm8 md7 class="ml-3"> | |
419 | + <v-text-field | |
420 | + placeholder="fill your Description" | |
421 | + :rules="descriptionRules" | |
422 | + v-model="addCourseDetail.description" | |
423 | + type="text" | |
424 | + name="email" | |
425 | + required | |
426 | + ></v-text-field> | |
427 | + </v-flex> | |
428 | + </v-layout> | |
429 | + </v-flex> | |
430 | + <v-layout> | |
431 | + <v-flex xs12> | |
432 | + <div v-for="(chapterPoints,index) in finds" :key="index"> | |
433 | + <v-layout> | |
434 | + <v-flex xs4 class="pt-4 subheading"> | |
435 | + <label class="right">Chapter Points:</label> | |
436 | + </v-flex> | |
437 | + <v-flex xs8 sm8 md6 class="ml-3"> | |
438 | + <v-text-field | |
439 | + placeholder="fill your Chapter Points" | |
440 | + v-model="chapterPoints.value" | |
441 | + type="text" | |
442 | + name="link" | |
443 | + required | |
444 | + ></v-text-field> | |
445 | + </v-flex> | |
446 | + <v-flex xs2 class="pt-4"> | |
447 | + <v-icon @click="deleteFind(index)" v-if="index !=0 ">cancel</v-icon> | |
448 | + <v-icon @click="addFind">add_circle</v-icon> | |
449 | + </v-flex> | |
450 | + </v-layout> | |
451 | + </div> | |
452 | + </v-flex> | |
453 | + </v-layout> | |
454 | + <v-layout> | |
455 | + <v-flex xs12 sm12> | |
456 | + <v-layout class="right"> | |
457 | + <v-btn @click="clear" round dark class="clear-button">Clear</v-btn> | |
458 | + <v-btn @click="submit" round dark :loading="loading" class="add-button">Add</v-btn> | |
459 | + </v-layout> | |
460 | + </v-flex> | |
461 | + </v-layout> | |
462 | + </v-container> | |
463 | + </v-form> | |
464 | + </v-card> | |
465 | + </v-dialog> | |
466 | + <v-snackbar | |
467 | + :timeout="timeout" | |
468 | + :top="y === 'top'" | |
469 | + :right="x === 'right'" | |
470 | + :vertical="mode === 'vertical'" | |
471 | + v-model="snackbar" | |
472 | + :color="color" | |
473 | + >{{ text }}</v-snackbar> | |
474 | + <div class="loader" v-if="showLoader"> | |
475 | + <v-progress-circular indeterminate color="white"></v-progress-circular> | |
476 | + </div> | |
477 | + </v-container> | |
478 | +</template> | |
479 | + | |
480 | +<script> | |
481 | +import http from "@/Services/http.js"; | |
482 | + | |
483 | +export default { | |
484 | + data: () => ({ | |
485 | + snackbar: false, | |
486 | + y: "top", | |
487 | + x: "right", | |
488 | + mode: "", | |
489 | + timeout: 3000, | |
490 | + text: "", | |
491 | + loading: false, | |
492 | + color: "", | |
493 | + date: null, | |
494 | + search: "", | |
495 | + show: true, | |
496 | + addCourseDetailDialog: false, | |
497 | + showSearch: false, | |
498 | + showLoader: false, | |
499 | + editCourseDetailDialog: false, | |
500 | + viewProfileGallery: false, | |
501 | + valid: true, | |
502 | + editLoading: false, | |
503 | + addclass: [], | |
504 | + courseData: [], | |
505 | + addSection: [], | |
506 | + getCourse: {}, | |
507 | + finds: [{ value: "" }], | |
508 | + updates: [{ youTubeLink: "" }], | |
509 | + youTubeLink: {}, | |
510 | + addCourseDetail: { | |
511 | + chapters: [ | |
512 | + { | |
513 | + chapterName: "", | |
514 | + description: "", | |
515 | + chapterPoints: [] | |
516 | + } | |
517 | + ] | |
518 | + }, | |
519 | + chapters: [], | |
520 | + pagination: { | |
521 | + rowsPerPage: 10 | |
522 | + }, | |
523 | + editFiles: [], | |
524 | + files: [], | |
525 | + courseData: [], | |
526 | + token: "", | |
527 | + clsssRules: [v => !!v || " Class is required"], | |
528 | + courseRules: [v => !!v || " Course is required"], | |
529 | + chapterNameRules: [v => !!v || " Tilte is required"], | |
530 | + descriptionRules: [v => !!v || " Description is required"], | |
531 | + headers: [ | |
532 | + { | |
533 | + align: "", | |
534 | + text: "No", | |
535 | + sortable: false, | |
536 | + value: "index" | |
537 | + }, | |
538 | + { | |
539 | + text: "Class Name", | |
540 | + value: "classNum", | |
541 | + sortable: false, | |
542 | + align: "center" | |
543 | + }, | |
544 | + { | |
545 | + text: "Course Name", | |
546 | + value: "courseName", | |
547 | + sortable: false, | |
548 | + align: "center" | |
549 | + }, | |
550 | + { text: "Action", value: "", sortable: false, align: "center" } | |
551 | + ], | |
552 | + CourseDetailsList: [], | |
553 | + editedIndex: -1, | |
554 | + editedItem: {}, | |
555 | + editChapter: {}, | |
556 | + index: "" | |
557 | + }), | |
558 | + methods: { | |
559 | + getCourses(classId) { | |
560 | + this.showLoader = true; | |
561 | + http() | |
562 | + .get("/getCourseesList", { | |
563 | + params: { | |
564 | + classId: classId | |
565 | + } | |
566 | + }) | |
567 | + .then(response => { | |
568 | + this.courseData = response.data.data; | |
569 | + this.showLoader = false; | |
570 | + }) | |
571 | + .catch(err => { | |
572 | + console.log("err====>", err); | |
573 | + this.showLoader = false; | |
574 | + }); | |
575 | + }, | |
576 | + getCourseDetailsList() { | |
577 | + this.showLoader = true; | |
578 | + http() | |
579 | + .get("/getParticularCourseDetail", { | |
580 | + params: { | |
581 | + courseId: this.getCourse.courseId | |
582 | + } | |
583 | + }) | |
584 | + .then(response => { | |
585 | + this.CourseDetailsList = response.data.data; | |
586 | + this.chapters = response.data.data[0].chapters; | |
587 | + console.log("response.data.data", this.CourseDetailsList); | |
588 | + this.showLoader = false; | |
589 | + }) | |
590 | + .catch(error => { | |
591 | + // console.log("err====>", err); | |
592 | + this.showLoader = false; | |
593 | + if (error.response.status === 401) { | |
594 | + this.$router.replace({ path: "/" }); | |
595 | + this.$store.dispatch("setToken", null); | |
596 | + this.$store.dispatch("Id", null); | |
597 | + } | |
598 | + }); | |
599 | + }, | |
600 | + // editItem(item) { | |
601 | + // this.files = []; | |
602 | + // // this.editedIndex = this.CourseDetailsList.indexOf(item); | |
603 | + // // this.editedItem = Object.assign({}, item); | |
604 | + // | |
605 | + // }, | |
606 | + profile(item) { | |
607 | + this.editedIndex = this.chapters.indexOf(item); | |
608 | + this.editedItem = Object.assign({}, item); | |
609 | + this.viewProfileGallery = true; | |
610 | + }, | |
611 | + editChapterItem(item) { | |
612 | + this.editedIndex = this.chapters.indexOf(item); | |
613 | + this.editChapter = Object.assign({}, item); | |
614 | + console.log("this.editChapter",this.editChapter) | |
615 | + this.editCourseDetailDialog = true; | |
616 | + }, | |
617 | + deleteItem(item) { | |
618 | + let deleteGallery = { | |
619 | + galleryId: item._id | |
620 | + }; | |
621 | + http() | |
622 | + .delete( | |
623 | + "/deleteGallery", | |
624 | + confirm("Are you sure you want to delete this?") && { | |
625 | + params: deleteGallery, | |
626 | + headers: { | |
627 | + Authorization: "Bearer " + this.token | |
628 | + } | |
629 | + } | |
630 | + ) | |
631 | + .then(response => { | |
632 | + this.snackbar = true; | |
633 | + this.text = "Successfully delete Existing Gallery"; | |
634 | + this.color = "green"; | |
635 | + this.getCourseDetailsList(); | |
636 | + }) | |
637 | + .catch(error => { | |
638 | + // console.log(error); | |
639 | + this.snackbar = true; | |
640 | + this.text = error.response.data.message; | |
641 | + this.color = "error"; | |
642 | + }); | |
643 | + }, | |
644 | + deleteImage(imageId, id) { | |
645 | + let deleteImages = { | |
646 | + galleryId: id, | |
647 | + imageId: imageId | |
648 | + }; | |
649 | + http() | |
650 | + .put("/deleteImage", deleteImages) | |
651 | + .then(response => { | |
652 | + this.snackbar = true; | |
653 | + this.text = response.data.message; | |
654 | + this.color = "green"; | |
655 | + this.getCourseDetailsList(); | |
656 | + this.close(); | |
657 | + }) | |
658 | + .catch(error => { | |
659 | + this.snackbar = true; | |
660 | + this.text = error.response.data.message; | |
661 | + this.color = "error"; | |
662 | + }); | |
663 | + }, | |
664 | + close() { | |
665 | + this.editCourseDetailDialog = false; | |
666 | + }, | |
667 | + closeProfileGallery() { | |
668 | + this.viewProfileGallery = false; | |
669 | + }, | |
670 | + submit() { | |
671 | + let chapters = []; | |
672 | + var chapterPoints = []; | |
673 | + for (let i = 0; i < this.finds.length; i++) { | |
674 | + chapterPoints.push(this.finds[i].value); | |
675 | + // console.log("this.finds[i].value", this.finds[i].value); | |
676 | + chapters = [ | |
677 | + { | |
678 | + chapterName: this.addCourseDetail.chapterName, | |
679 | + description: this.addCourseDetail.description, | |
680 | + chapterPoints: chapterPoints | |
681 | + } | |
682 | + ]; | |
683 | + } | |
684 | + if (this.$refs.form.validate()) { | |
685 | + // console.log("this.addCourseDetail", this.addCourseDetail); | |
686 | + var courseDetailsData = { | |
687 | + classId: this.addCourseDetail.classId, | |
688 | + courseId: this.addCourseDetail.courseId, | |
689 | + chapters: chapters | |
690 | + }; | |
691 | + this.loading = true; | |
692 | + http() | |
693 | + .post("/createCourseDetail", courseDetailsData) | |
694 | + .then(response => { | |
695 | + this.addCourseDetailDialog = false; | |
696 | + this.loading = false; | |
697 | + this.snackbar = true; | |
698 | + this.text = response.data.message; | |
699 | + this.color = "green"; | |
700 | + this.clear(); | |
701 | + this.files = ""; | |
702 | + }) | |
703 | + .catch(error => { | |
704 | + this.snackbar = true; | |
705 | + this.text = error.response.data.message; | |
706 | + this.color = "error"; | |
707 | + this.loading = false; | |
708 | + }); | |
709 | + } | |
710 | + }, | |
711 | + clear() { | |
712 | + this.$refs.form.reset(); | |
713 | + this.files = []; | |
714 | + }, | |
715 | + save() { | |
716 | + this.editedItem.gelleryId = this.editedItem._id; | |
717 | + var linkUrl = []; | |
718 | + for (let i = 0; i < this.updates.length; i++) { | |
719 | + linkUrl.push(this.updates[i].youTubeLink); | |
720 | + } | |
721 | + if (this.editFiles) { | |
722 | + var ary = []; | |
723 | + var imageData = []; | |
724 | + ary = this.editFiles; | |
725 | + for (let i = 0; i < ary.length; i++) { | |
726 | + const [baseUrl, imageUrl] = ary[i].split(/,/); | |
727 | + imageData.push(imageUrl); | |
728 | + this.editedItem.editFiles = imageData; | |
729 | + } | |
730 | + } | |
731 | + if (linkUrl != "") { | |
732 | + var updateData = { | |
733 | + galleryId: this.editedItem._id, | |
734 | + description: this.editedItem.description, | |
735 | + classId: this.editedItem.classNum, | |
736 | + uploadImage: this.editedItem.editFiles, | |
737 | + title: this.editedItem.title, | |
738 | + updateYouTubeLinkUrl: linkUrl | |
739 | + }; | |
740 | + } else if (linkUrl == "") { | |
741 | + var updateData = { | |
742 | + galleryId: this.editedItem._id, | |
743 | + description: this.editedItem.description, | |
744 | + classId: this.editedItem.classNum, | |
745 | + uploadImage: this.editedItem.editFiles, | |
746 | + title: this.editedItem.title | |
747 | + }; | |
748 | + } | |
749 | + this.editLoading = true; | |
750 | + http() | |
751 | + .put("/updateGallery", updateData) | |
752 | + .then(response => { | |
753 | + this.getCourseDetailsList(); | |
754 | + this.close(); | |
755 | + this.snackbar = true; | |
756 | + this.text = response.data.message; | |
757 | + this.color = "green"; | |
758 | + this.editLoading = false; | |
759 | + // this.editChapterPointName = ""; | |
760 | + this.editFiles = []; | |
761 | + }) | |
762 | + .catch(error => { | |
763 | + this.editLoading = false; | |
764 | + this.snackbar = true; | |
765 | + this.text = error.response.data.message; | |
766 | + this.color = "error"; | |
767 | + }); | |
768 | + }, | |
769 | + getAllClasses() { | |
770 | + http() | |
771 | + .get("/getClassesList", { | |
772 | + headers: { Authorization: "Bearer " + this.token } | |
773 | + }) | |
774 | + .then(response => { | |
775 | + this.addclass = response.data.data; | |
776 | + }) | |
777 | + .catch(err => { | |
778 | + // console.log("err====>", err); | |
779 | + }); | |
780 | + }, | |
781 | + removeAddFind: function() { | |
782 | + this.finds = [{ value: "" }]; | |
783 | + }, | |
784 | + addFind: function() { | |
785 | + this.finds.push({ value: "" }); | |
786 | + }, | |
787 | + update: function() { | |
788 | + this.updates.push({ youTubeLink: "" }); | |
789 | + }, | |
790 | + deleteFind: function(index) { | |
791 | + this.finds.splice(index, 1); | |
792 | + if (index === 0) this.addFind(); | |
793 | + }, | |
794 | + deleteUpdate: function(index) { | |
795 | + this.updates.splice(index, 1); | |
796 | + if (index === 0) this.update(); | |
797 | + }, | |
798 | + deleteUrl: function(index, youTubelinkId, id) { | |
799 | + this.editedItem.youTubeLinkUrl.splice(index, 1); | |
800 | + if (index === 0) this.update(); | |
801 | + let deleteYouTubeUrl = { | |
802 | + galleryId: id, | |
803 | + youTubeId: youTubelinkId | |
804 | + }; | |
805 | + http() | |
806 | + .put("/deleteYoutubeLink", deleteYouTubeUrl) | |
807 | + .then(response => { | |
808 | + this.snackbar = true; | |
809 | + this.text = response.data.message; | |
810 | + this.color = "green"; | |
811 | + this.getCourseDetailsList(); | |
812 | + this.close(); | |
813 | + }) | |
814 | + .catch(error => { | |
815 | + this.snackbar = true; | |
816 | + this.text = error.response.data.message; | |
817 | + this.color = "error"; | |
818 | + }); | |
819 | + }, | |
820 | + displaySearch() { | |
821 | + this.show = false; | |
822 | + this.showSearch = true; | |
823 | + }, | |
824 | + closeSearch() { | |
825 | + this.showSearch = false; | |
826 | + this.show = true; | |
827 | + this.search = ""; | |
828 | + } | |
829 | + }, | |
830 | + mounted() { | |
831 | + this.token = this.$store.state.token; | |
832 | + this.getAllClasses(); | |
833 | + } | |
834 | +}; | |
835 | +</script> | |
0 | 836 | \ No newline at end of file | ... | ... |
src/pages/Course/enrollStudents.vue
... | ... | @@ -236,6 +236,7 @@ export default { |
236 | 236 | getStudentTable(id) { |
237 | 237 | console.log("id", this.getReport.courseId); |
238 | 238 | this.getStudents(); |
239 | + this.getParticularCourse(); | |
239 | 240 | }, |
240 | 241 | update() { |
241 | 242 | var studentsAttendence = []; |
... | ... | @@ -270,7 +271,7 @@ export default { |
270 | 271 | console.log("this.selected", this.selected); |
271 | 272 | console.log("selected====", selected); |
272 | 273 | let selectedStudentsArray = []; |
273 | - selectedStudentsArray.push(selected.id); | |
274 | + selectedStudentsArray.push({ studentId: selected.id }); | |
274 | 275 | var payload = { |
275 | 276 | courseId: this.getReport.courseId, |
276 | 277 | enrollStudents: selectedStudentsArray |
... | ... | @@ -289,7 +290,7 @@ export default { |
289 | 290 | selectParticularStudent(selected) { |
290 | 291 | console.log("selected====", selected); |
291 | 292 | let selectedStudentsArray = []; |
292 | - selectedStudentsArray.push(selected); | |
293 | + selectedStudentsArray.push({ studentId: selected }); | |
293 | 294 | var payload = { |
294 | 295 | courseId: this.getReport.courseId, |
295 | 296 | enrollStudents: selectedStudentsArray |
... | ... | @@ -305,6 +306,24 @@ export default { |
305 | 306 | this.text = error.response.data.message; |
306 | 307 | }); |
307 | 308 | }, |
309 | + getParticularCourse() { | |
310 | + var payload = { | |
311 | + courseId: this.getReport.courseId | |
312 | + }; | |
313 | + http() | |
314 | + .get("/getParticularCourse", { | |
315 | + params: payload | |
316 | + }) | |
317 | + .then(response => { | |
318 | + conso.log("DTAAAAA", response.data.data); | |
319 | + this.snackbar = true; | |
320 | + this.text = response.data.message; | |
321 | + }) | |
322 | + .catch(error => { | |
323 | + this.snackbar = true; | |
324 | + this.text = error.response.data.message; | |
325 | + }); | |
326 | + }, | |
308 | 327 | changeSort(column) { |
309 | 328 | if (this.pagination.sortBy === column) { |
310 | 329 | this.pagination.descending = !this.pagination.descending; | ... | ... |
src/pages/Dashboard/dashboard.vue
... | ... | @@ -98,7 +98,11 @@ |
98 | 98 | </v-flex> |
99 | 99 | </v-layout> |
100 | 100 | </v-flex> |
101 | - <v-layout> | |
101 | + <p | |
102 | + v-if="studentsData.length === 0 && role == 'PARENT'" | |
103 | + class="text-center title grey lighten-4 error--text" | |
104 | + >You have no student registered with scholl</p> | |
105 | + <v-layout v-if="role != 'PARENT'"> | |
102 | 106 | <v-flex xs12> |
103 | 107 | <v-card class="card mt-2 account-Card"> |
104 | 108 | <h4> |
... | ... | @@ -162,7 +166,7 @@ |
162 | 166 | </v-card> |
163 | 167 | </v-flex> |
164 | 168 | </v-layout> |
165 | - <v-card class="mt-2 card"> | |
169 | + <v-card class="mt-2 card" v-if="role != 'PARENT'"> | |
166 | 170 | <!-- <full-calendar |
167 | 171 | ref="calendar" |
168 | 172 | defaultView="month" |
... | ... | @@ -214,6 +218,120 @@ |
214 | 218 | </template> |
215 | 219 | </v-data-table> |
216 | 220 | </v-card> |
221 | + <!-- COURSES --> | |
222 | + <v-layout v-if="role == 'PARENT'"> | |
223 | + <v-flex xs12> | |
224 | + <v-card class="card mt-2 account-Card"> | |
225 | + <h4> | |
226 | + <b>My Courses</b> | |
227 | + </h4> | |
228 | + <v-layout wrap> | |
229 | + <v-flex xs12 sm12> | |
230 | + <v-list two-line> | |
231 | + <template> | |
232 | + <v-list-tile v-for="(course,i) in courseData" :key="i"> | |
233 | + <v-list-tile-avatar> | |
234 | + <v-icon class="account-circle darkBlue-color">panorama_fish_eye</v-icon> | |
235 | + </v-list-tile-avatar> | |
236 | + <v-list-tile-content> | |
237 | + <v-list-tile-title>{{ course.coursrName }}</v-list-tile-title> | |
238 | + </v-list-tile-content> | |
239 | + </v-list-tile> | |
240 | + </template> | |
241 | + </v-list> | |
242 | + </v-flex> | |
243 | + </v-layout> | |
244 | + </v-card> | |
245 | + </v-flex> | |
246 | + </v-layout> | |
247 | + <v-layout v-if="role == 'PARENT'"> | |
248 | + <v-flex xs6> | |
249 | + <v-card class="mt-2 card"> | |
250 | + <h4 class="pa-3"> | |
251 | + <b>Latest Annoucements</b> | |
252 | + </h4> | |
253 | + | |
254 | + <v-data-table | |
255 | + :items="annoucementData" | |
256 | + class="elevation-0" | |
257 | + flat | |
258 | + hide-actions | |
259 | + hide-headers | |
260 | + style="border-spacing: 0 !important;" | |
261 | + > | |
262 | + <template | |
263 | + slot="items" | |
264 | + slot-scope="props" | |
265 | + v-if="props.index < 5" | |
266 | + style="border-spacing: 0 !important;" | |
267 | + > | |
268 | + <tr class="td-notice"> | |
269 | + <td class="grey--text" style="width:18px">{{ props.index + 1}}</td> | |
270 | + <td> | |
271 | + <span class="grey--text caption">{{ date(props.item.created) }}</span> | |
272 | + <br /> | |
273 | + <span class="body-2">{{ props.item.discussionType}}</span> | |
274 | + </td> | |
275 | + <td class="text-xs-center"> | |
276 | + <span> | |
277 | + <v-tooltip top> | |
278 | + <img | |
279 | + slot="activator" | |
280 | + style="cursor:pointer; width:25px; height:25px; " | |
281 | + src="/static/icon/view.png" | |
282 | + /> | |
283 | + <span>View</span> | |
284 | + </v-tooltip> | |
285 | + </span> | |
286 | + </td> | |
287 | + </tr> | |
288 | + </template> | |
289 | + </v-data-table> | |
290 | + </v-card> | |
291 | + </v-flex> | |
292 | + <v-flex xs6> | |
293 | + <v-card class="mt-2 card"> | |
294 | + <h4 class="pa-3"> | |
295 | + <b>Online User</b> | |
296 | + </h4> | |
297 | + | |
298 | + <v-data-table | |
299 | + :items="onlineUser" | |
300 | + class="elevation-0" | |
301 | + flat | |
302 | + hide-actions | |
303 | + hide-headers | |
304 | + style="border-spacing: 0 !important;" | |
305 | + > | |
306 | + <template | |
307 | + slot="items" | |
308 | + slot-scope="props" | |
309 | + v-if="props.index < 5" | |
310 | + style="border-spacing: 0 !important;" | |
311 | + > | |
312 | + <tr class="td-notice"> | |
313 | + <td class="grey--text" style="width:18px">{{ props.index + 1}}</td> | |
314 | + <td> | |
315 | + <span class="body-2">{{ props.item.user }}</span> | |
316 | + </td> | |
317 | + <td class="text-xs-center"> | |
318 | + <span> | |
319 | + <v-tooltip top> | |
320 | + <img | |
321 | + slot="activator" | |
322 | + style="cursor:pointer; width:25px; height:25px; " | |
323 | + src="/static/icon/view.png" | |
324 | + /> | |
325 | + <span>View</span> | |
326 | + </v-tooltip> | |
327 | + </span> | |
328 | + </td> | |
329 | + </tr> | |
330 | + </template> | |
331 | + </v-data-table> | |
332 | + </v-card> | |
333 | + </v-flex> | |
334 | + </v-layout> | |
217 | 335 | </v-container> |
218 | 336 | </v-flex> |
219 | 337 | <v-flex xs12 sm12 md3> |
... | ... | @@ -316,7 +434,23 @@ export default { |
316 | 434 | customClass: "disabled highlight" // Custom classes to an calendar cell |
317 | 435 | } |
318 | 436 | ], |
319 | - | |
437 | + onlineUser: [ | |
438 | + { | |
439 | + user: "Student Demo" | |
440 | + }, | |
441 | + { | |
442 | + user: "Teacher Demo" | |
443 | + }, | |
444 | + { | |
445 | + user: "Priyansh Gupta" | |
446 | + }, | |
447 | + { | |
448 | + user: "Gaurav Aggarwal" | |
449 | + }, | |
450 | + { | |
451 | + user: "Approve Arorra" | |
452 | + } | |
453 | + ], | |
320 | 454 | showLoader: false, |
321 | 455 | calendarData: {}, |
322 | 456 | dialog: false, |
... | ... | @@ -345,7 +479,10 @@ export default { |
345 | 479 | expenseData: [], |
346 | 480 | feeData: [], |
347 | 481 | collectionData: [], |
348 | - | |
482 | + courseData: [], | |
483 | + studentsData: [], | |
484 | + annoucementData: [], | |
485 | + role: "", | |
349 | 486 | attrs: [ |
350 | 487 | { |
351 | 488 | key: "today", |
... | ... | @@ -452,7 +589,10 @@ export default { |
452 | 589 | this.token = this.$store.state.token; |
453 | 590 | } else if (this.$store.state.role === "LIBRARIAN") { |
454 | 591 | this.token = this.$store.state.token; |
592 | + } else if (this.$store.state.role === "PARENT") { | |
593 | + this.token = this.$store.state.token; | |
455 | 594 | } |
595 | + this.role = this.$store.state.role; | |
456 | 596 | // console.log("role", this.$store.state.schoolRole,"tt",this.$store.state.schoolToken); |
457 | 597 | // this.getData(); |
458 | 598 | this.getStudents(); |
... | ... | @@ -463,6 +603,7 @@ export default { |
463 | 603 | this.getUserData(); |
464 | 604 | this.getFeesAndCollectionsData(); |
465 | 605 | this.getExpensesData(); |
606 | + this.getparentStudents(); | |
466 | 607 | // this.getUsersList(); |
467 | 608 | }, |
468 | 609 | methods: { |
... | ... | @@ -608,7 +749,7 @@ export default { |
608 | 749 | // this.collectionData = response.data.data; |
609 | 750 | this.series[0].data[0] = this.feeData.totalFees; |
610 | 751 | this.series[0].data[1] = this.feeData.totalCollection; |
611 | - console.log("this.series====", this.series); | |
752 | + // console.log("this.series====", this.series); | |
612 | 753 | |
613 | 754 | this.showLoader = false; |
614 | 755 | }) |
... | ... | @@ -639,6 +780,77 @@ export default { |
639 | 780 | .catch(error => { |
640 | 781 | this.showLoader = false; |
641 | 782 | }); |
783 | + }, | |
784 | + getparentStudents() { | |
785 | + this.showLoader = true; | |
786 | + http() | |
787 | + .get("/parentStudentsList") | |
788 | + .then(response => { | |
789 | + // console.log("resssssss", response.data.data.students[0].classId); | |
790 | + this.studentsData = response.data.data; | |
791 | + // localStorage.setItem( | |
792 | + // "parentStudentId", | |
793 | + // this.studentsData.students[0]._id | |
794 | + // ); | |
795 | + // localStorage.setItem( | |
796 | + // "parentClassId", | |
797 | + // this.studentsData.students[0].classId | |
798 | + // ); | |
799 | + console.log( | |
800 | + "localStorage.getItem('parentStudentId')", | |
801 | + localStorage.getItem("parentStudentId") | |
802 | + ); | |
803 | + if (localStorage.getItem("parentStudentId") == null) { | |
804 | + var parentStudentsId = response.data.data.students[0].classId; | |
805 | + var ClassId = response.data.data.students[0]._id; | |
806 | + } | |
807 | + if (localStorage.getItem("parentStudentId")) { | |
808 | + var parentStudentsId = localStorage.getItem("parentStudentId"); | |
809 | + var ClassId = localStorage.getItem("parentClassId"); | |
810 | + } | |
811 | + this.getCourses(parentStudentsId, ClassId); | |
812 | + this.getAnnoucementes(ClassId); | |
813 | + this.showLoader = false; | |
814 | + }) | |
815 | + .catch(err => { | |
816 | + console.log("err====>", err); | |
817 | + this.showLoader = false; | |
818 | + }); | |
819 | + }, | |
820 | + getCourses(parentStudentsId, ClassId) { | |
821 | + this.showLoader = true; | |
822 | + http() | |
823 | + .get("/getStudentCourses", { | |
824 | + params: { | |
825 | + classId: ClassId, | |
826 | + studentId: parentStudentsId | |
827 | + } | |
828 | + }) | |
829 | + .then(response => { | |
830 | + this.courseData = response.data.data; | |
831 | + this.showLoader = false; | |
832 | + }) | |
833 | + .catch(err => { | |
834 | + console.log("err====>", err); | |
835 | + this.showLoader = false; | |
836 | + }); | |
837 | + }, | |
838 | + getAnnoucementes(ClassId) { | |
839 | + this.showLoader = true; | |
840 | + http() | |
841 | + .get("/getAnnoucementesList", { | |
842 | + params: { | |
843 | + classId: ClassId | |
844 | + } | |
845 | + }) | |
846 | + .then(response => { | |
847 | + this.annoucementData = response.data.data; | |
848 | + this.showLoader = false; | |
849 | + }) | |
850 | + .catch(err => { | |
851 | + console.log("err====>", err); | |
852 | + this.showLoader = false; | |
853 | + }); | |
642 | 854 | } |
643 | 855 | } |
644 | 856 | }; | ... | ... |
src/pages/Report/idCard.vue
... | ... | @@ -55,7 +55,7 @@ |
55 | 55 | <v-layout> |
56 | 56 | <v-flex xs12 sm12 lg10 class="ml-2"> |
57 | 57 | <v-select |
58 | - :items="getStudentsList" | |
58 | + :items="getSelectUserData" | |
59 | 59 | label="Select Student" |
60 | 60 | v-model="getReport._id" |
61 | 61 | item-text="name" |
... | ... | @@ -71,7 +71,7 @@ |
71 | 71 | <v-select |
72 | 72 | v-model="getReport._id" |
73 | 73 | label="Select Teacher" |
74 | - :items="teacherList" | |
74 | + :items="getSelectUserData" | |
75 | 75 | item-text="name" |
76 | 76 | item-value="_id" |
77 | 77 | required |
... | ... | @@ -85,7 +85,7 @@ |
85 | 85 | <v-select |
86 | 86 | v-model="getReport._id" |
87 | 87 | label="Select Admin" |
88 | - :items="userData" | |
88 | + :items="getSelectUserData" | |
89 | 89 | item-text="name" |
90 | 90 | item-value="_id" |
91 | 91 | required |
... | ... | @@ -99,7 +99,7 @@ |
99 | 99 | <v-select |
100 | 100 | v-model="getReport._id" |
101 | 101 | label="Select Accountant" |
102 | - :items="Users" | |
102 | + :items="getSelectUserData" | |
103 | 103 | item-text="name" |
104 | 104 | item-value="_id" |
105 | 105 | required |
... | ... | @@ -113,7 +113,7 @@ |
113 | 113 | <v-select |
114 | 114 | v-model="getReport._id" |
115 | 115 | label="Select Librarian" |
116 | - :items="Users" | |
116 | + :items="getSelectUserData " | |
117 | 117 | item-text="name" |
118 | 118 | item-value="_id" |
119 | 119 | required |
... | ... | @@ -310,13 +310,6 @@ |
310 | 310 | <span v-if="getCard.mobile">{{ getCard.mobile}}</span> |
311 | 311 | <span v-if="getCard.mobileNo">{{ getCard.mobileNo }}</span> |
312 | 312 | </p> |
313 | - <!-- <p | |
314 | - style=" | |
315 | - font-size: 17px; | |
316 | - font-weight: 100; | |
317 | - color: rgb(48, 38, 83); | |
318 | - letter-spacing: 4px;" | |
319 | - >{{ getCard.address}}</p>--> | |
320 | 313 | <p |
321 | 314 | style=" |
322 | 315 | font-size: 17px; |
... | ... | @@ -350,20 +343,6 @@ |
350 | 343 | margin-top:10px; |
351 | 344 | overflow:hidden" |
352 | 345 | /> |
353 | - <!-- <v-layout style="margin:auto"> | |
354 | - <img | |
355 | - v-if="getCard.profilePicUrl" | |
356 | - :src="getCard.profilePicUrl" | |
357 | - alt="profileImage" | |
358 | - style="; | |
359 | - width: 110px; | |
360 | - margin:10px auto; | |
361 | - width: 110px; | |
362 | - margin: 10px auto; | |
363 | - border: 3px solid #323232; | |
364 | - border-radius: 12px;" | |
365 | - /> | |
366 | - </v-layout>--> | |
367 | 346 | <p |
368 | 347 | v-if="getCard.schoolLogoUrl" |
369 | 348 | style="color: #302653; |
... | ... | @@ -472,22 +451,12 @@ export default { |
472 | 451 | classList: [], |
473 | 452 | getCard: [], |
474 | 453 | addSection: [], |
475 | - getStudentsList: [], | |
476 | - teacherList: [], | |
477 | - userData: [], | |
478 | - Users: [], | |
454 | + // getStudentsList: | |
455 | + // teacherList: [], | |
456 | + getSelectUserData: [], | |
457 | + // Users: [], | |
479 | 458 | getReport: {}, |
480 | - // cardRules: [v => !!v || "Id-Card Field is required"], | |
481 | - // classRules: [v => !!v || "Class Field is required"], | |
482 | - // sectionRules: [v => !!v || "Section Field is required"], | |
483 | - // studentRules: [v => !!v || "Student Field is required"], | |
484 | - // teacherRules: [v => !!v || "Teacher Field is required"], | |
485 | - // adminRules: [v => !!v || "Admin Field is required"], | |
486 | - // accountantRules: [v => !!v || "Accountant Field is required"], | |
487 | - // librarianRules: [v => !!v || "Librarian Field is required"], | |
488 | - | |
489 | 459 | typeRules: [v => !!v || "Type is required"], |
490 | - // backgroundRules: [v => !!v || "Background is required"], | |
491 | 460 | typeList: [ |
492 | 461 | { |
493 | 462 | name: "Front Part", |
... | ... | @@ -523,7 +492,7 @@ export default { |
523 | 492 | } |
524 | 493 | }, |
525 | 494 | getRoleInputs(role) { |
526 | - console.log("role", role); | |
495 | + // console.log("role", role); | |
527 | 496 | this.showReport = false; |
528 | 497 | this.getReport._id = ""; |
529 | 498 | this.getCard = ""; |
... | ... | @@ -585,11 +554,18 @@ export default { |
585 | 554 | this.$htmlToPaper("printMe"); |
586 | 555 | }, |
587 | 556 | getUserData() { |
557 | + this.getSelectUserData = []; | |
588 | 558 | this.showLoader = true; |
589 | 559 | http() |
590 | 560 | .get("/getParticularUserDetail") |
591 | 561 | .then(response => { |
592 | - this.userData = response.data.data; | |
562 | + let mergeObj = { | |
563 | + name: "Select All", | |
564 | + id: "Select All" | |
565 | + }; | |
566 | + this.getSelectUserData.push(mergeObj); | |
567 | + let getUserDetails = response.data.data; | |
568 | + this.getSelectUserData.push(getUserDetails); | |
593 | 569 | this.showLoader = false; |
594 | 570 | // this.adminList = response.data.data; |
595 | 571 | }) |
... | ... | @@ -611,9 +587,6 @@ export default { |
611 | 587 | .then(response => { |
612 | 588 | var getRoles = []; |
613 | 589 | getRoles = response.data.data; |
614 | - // if (getRoles[0].role !== 1) { | |
615 | - // getRoles = response.data.data; | |
616 | - // } | |
617 | 590 | for (let i = 0; i < getRoles.length; i++) { |
618 | 591 | if (getRoles[i].role != "1" && getRoles[i].role != "5") { |
619 | 592 | this.getRoles.push(getRoles[i]); |
... | ... | @@ -632,7 +605,7 @@ export default { |
632 | 605 | }); |
633 | 606 | }, |
634 | 607 | getClass() { |
635 | - console.log("get classes"); | |
608 | + // console.log("get classes"); | |
636 | 609 | this.showLoader = true; |
637 | 610 | http() |
638 | 611 | .get("/getClassesList", { |
... | ... | @@ -668,6 +641,7 @@ export default { |
668 | 641 | }); |
669 | 642 | }, |
670 | 643 | getStudents() { |
644 | + this.getSelectUserData = []; | |
671 | 645 | this.showLoader = true; |
672 | 646 | http() |
673 | 647 | .get("/getStudentWithClass", { |
... | ... | @@ -677,7 +651,11 @@ export default { |
677 | 651 | } |
678 | 652 | }) |
679 | 653 | .then(response => { |
680 | - this.getStudentsList = response.data.data; | |
654 | + response.data.data.unshift({ | |
655 | + name: "Select All", | |
656 | + _id: "Select All" | |
657 | + }); | |
658 | + this.getSelectUserData = response.data.data; | |
681 | 659 | this.showStudents = true; |
682 | 660 | this.showLoader = false; |
683 | 661 | }) |
... | ... | @@ -687,6 +665,33 @@ export default { |
687 | 665 | }); |
688 | 666 | }, |
689 | 667 | getCards() { |
668 | + console.log("this.getSelectUserData", this.getSelectUserData); | |
669 | + var getSelectUserId = []; | |
670 | + for (let i = 0; i < this.getSelectUserData.length; i++) { | |
671 | + console.log("this.getReport._id", this.getReport._id); | |
672 | + if (this.getReport._id === this.getSelectUserData[i]._id) { | |
673 | + console.log( | |
674 | + "this.getSelectUserData[i]._id------------", | |
675 | + this.getSelectUserData[i]._id | |
676 | + ); | |
677 | + getSelectUserId.push(this.getSelectUserData[i]._id); | |
678 | + } else if (this.getReport._id == "Select All") { | |
679 | + console.log( | |
680 | + "this.getSelectUserData[i]._id)", | |
681 | + this.getSelectUserData[i]._id | |
682 | + ); | |
683 | + getSelectUserId.push(this.getSelectUserData[i]._id); | |
684 | + if (getSelectUserId[0] == undefined) { | |
685 | + delete getSelectUserId[0]; | |
686 | + } | |
687 | + } | |
688 | + } | |
689 | + console.log( | |
690 | + // "this.getSelectUserData[i]._id",/ | |
691 | + // this.getSelectUserData[i]._id, | |
692 | + "getSelectUserId", | |
693 | + getSelectUserId | |
694 | + ); | |
690 | 695 | if (this.$refs.form.validate()) { |
691 | 696 | this.showLoader = true; |
692 | 697 | http() |
... | ... | @@ -695,7 +700,7 @@ export default { |
695 | 700 | Authorization: "Bearer " + this.token |
696 | 701 | }, |
697 | 702 | params: { |
698 | - profileId: this.getReport._id, | |
703 | + profileId: getSelectUserId, | |
699 | 704 | role: this.getReport.role |
700 | 705 | } |
701 | 706 | }) |
... | ... | @@ -707,28 +712,28 @@ export default { |
707 | 712 | data.adminData.constructor === Object |
708 | 713 | ) { |
709 | 714 | this.getCard = response.data.data.adminData; |
710 | - console.log("this.getCard ", this.getCard); | |
715 | + // console.log("this.getCard ", this.getCard); | |
711 | 716 | } |
712 | 717 | if ( |
713 | 718 | Object.keys(data.teachersData).length != 0 && |
714 | 719 | data.teachersData.constructor === Object |
715 | 720 | ) { |
716 | 721 | this.getCard = response.data.data.teachersData; |
717 | - console.log("this.getCard--teachersData ", this.getCard); | |
722 | + // console.log("this.getCard--teachersData ", this.getCard); | |
718 | 723 | } |
719 | 724 | if ( |
720 | 725 | Object.keys(data.studentData).length != 0 && |
721 | 726 | data.studentData.constructor === Object |
722 | 727 | ) { |
723 | 728 | this.getCard = response.data.data.studentData; |
724 | - console.log("this.getCard--studentData ", this.getCard); | |
729 | + // console.log("this.getCard--studentData ", this.getCard); | |
725 | 730 | } |
726 | 731 | if ( |
727 | 732 | Object.keys(data.usersData).length != 0 && |
728 | 733 | data.usersData.constructor === Object |
729 | 734 | ) { |
730 | 735 | this.getCard = response.data.data.usersData; |
731 | - console.log("this.getCard--usersData ", this.getCard); | |
736 | + // console.log("this.getCard--usersData ", this.getCard); | |
732 | 737 | } |
733 | 738 | // console.log("this.getCard--all ", response.data.data); |
734 | 739 | this.showLoader = false; |
... | ... | @@ -736,7 +741,7 @@ export default { |
736 | 741 | }) |
737 | 742 | .catch(error => { |
738 | 743 | this.showLoader = false; |
739 | - console.log("error", error.response.data.errors); | |
744 | + // console.log("error", error.response.data.errors); | |
740 | 745 | if (error.response.data.errors) { |
741 | 746 | this.snackbar = true; |
742 | 747 | this.text = " Field is required"; |
... | ... | @@ -746,6 +751,7 @@ export default { |
746 | 751 | } |
747 | 752 | }, |
748 | 753 | getTeacherList() { |
754 | + this.getSelectUserData = []; | |
749 | 755 | this.showLoader = true; |
750 | 756 | var token = this.$store.state.token; |
751 | 757 | http() |
... | ... | @@ -753,7 +759,11 @@ export default { |
753 | 759 | headers: { Authorization: "Bearer " + token } |
754 | 760 | }) |
755 | 761 | .then(response => { |
756 | - this.teacherList = response.data.data; | |
762 | + response.data.data.unshift({ | |
763 | + name: "Select All", | |
764 | + _id: "Select All" | |
765 | + }); | |
766 | + this.getSelectUserData = response.data.data; | |
757 | 767 | this.showLoader = false; |
758 | 768 | }) |
759 | 769 | .catch(error => { |
... | ... | @@ -766,6 +776,7 @@ export default { |
766 | 776 | }); |
767 | 777 | }, |
768 | 778 | getUsersList(role) { |
779 | + this.getSelectUserData = []; | |
769 | 780 | this.showLoader = true; |
770 | 781 | var token = this.$store.state.token; |
771 | 782 | http() |
... | ... | @@ -773,7 +784,11 @@ export default { |
773 | 784 | headers: { Authorization: "Bearer " + token } |
774 | 785 | }) |
775 | 786 | .then(response => { |
776 | - this.Users = response.data.data; | |
787 | + response.data.data.unshift({ | |
788 | + name: "Select All", | |
789 | + _id: "Select All" | |
790 | + }); | |
791 | + this.getSelectUserData = response.data.data; | |
777 | 792 | this.showLoader = false; |
778 | 793 | }) |
779 | 794 | .catch(error => { | ... | ... |
src/pages/Report/progressCardReport.vue
... | ... | @@ -103,8 +103,6 @@ |
103 | 103 | </v-layout> |
104 | 104 | <div id="printMe"> |
105 | 105 | <card class="elevation-0" v-for="(value, id, Index) in filterData" :key="Index"> |
106 | - <!-- <v-flex xs12 flat> --> | |
107 | - <!-- {{value}}---{{id}}---{{index}} --> | |
108 | 106 | <v-card |
109 | 107 | class="ma-3" |
110 | 108 | style=" |
... | ... | @@ -251,11 +249,6 @@ |
251 | 249 | webkit-box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.2), 0px 0px 0px 0px rgba(0,0,0,0.14), 0px 0px 0px 0px rgba(0,0,0,0.12) !important; |
252 | 250 | box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.2), 0px 0px 0px 0px rgba(0,0,0,0.14), 0px 0px 0px 0px rgba(0,0,0,0.12) !important;" |
253 | 251 | > |
254 | - <!-- {{studentMark}} --> | |
255 | - <!-- <div | |
256 | - style="overflow-x:auto; | |
257 | - border: 1px solid lightgrey !important;" | |
258 | - >--> | |
259 | 252 | <table |
260 | 253 | v-for="(studentMark,key) in studentMarks" |
261 | 254 | :key="key" |
... | ... | @@ -506,7 +499,6 @@ export default { |
506 | 499 | }); |
507 | 500 | this.getStudentsList = response.data.data; |
508 | 501 | this.showLoader = false; |
509 | - // console.log("getSectionsList=====>", response.data.data); | |
510 | 502 | }) |
511 | 503 | .catch(error => { |
512 | 504 | console.log("err====>", error); |
... | ... | @@ -619,11 +611,11 @@ export default { |
619 | 611 | this.userData = response.data.data; |
620 | 612 | }) |
621 | 613 | .catch(error => { |
622 | - // if (error.response.status === 401) { | |
623 | - // this.$router.replace({ path: "/" }); | |
624 | - // this.$store.dispatch("setToken", null); | |
625 | - // this.$store.dispatch("Id", null); | |
626 | - // } | |
614 | + if (error.response.status === 401) { | |
615 | + this.$router.replace({ path: "/" }); | |
616 | + this.$store.dispatch("setToken", null); | |
617 | + this.$store.dispatch("Id", null); | |
618 | + } | |
627 | 619 | }); |
628 | 620 | } |
629 | 621 | } | ... | ... |
src/pages/Students/students.vue
... | ... | @@ -15,9 +15,7 @@ |
15 | 15 | <v-layout> |
16 | 16 | <v-flex xs12 class="text-xs-center text-sm-center text-md-center text-lg-center"> |
17 | 17 | <v-avatar size="100px" v-if="!editedItem.profilePicUrl && !editImageUrl"> |
18 | - <img | |
19 | - src="/static/icon/user.png" | |
20 | - /> | |
18 | + <img src="/static/icon/user.png" /> | |
21 | 19 | </v-avatar> |
22 | 20 | <img |
23 | 21 | :src="editedItem.profilePicUrl" |
... | ... | @@ -364,7 +362,7 @@ |
364 | 362 | </v-layout> |
365 | 363 | </v-flex> |
366 | 364 | </v-layout> |
367 | - <v-layout class="hidden-xs-only hidden-sm-only" > | |
365 | + <v-layout class="hidden-xs-only hidden-sm-only"> | |
368 | 366 | <v-flex xs12 sm4> |
369 | 367 | <v-layout> |
370 | 368 | <v-flex xs4 class="pt-4 subheading"> |
... | ... | @@ -866,7 +864,13 @@ |
866 | 864 | </v-flex> |
867 | 865 | </v-card-actions> |
868 | 866 | <v-spacer></v-spacer> |
869 | - <v-btn @click="findStudents()" round dark :loading="loading" class="add-button hidden-xs-only hidden-sm-only">Find</v-btn> | |
867 | + <v-btn | |
868 | + @click="findStudents()" | |
869 | + round | |
870 | + dark | |
871 | + :loading="loading" | |
872 | + class="add-button hidden-xs-only hidden-sm-only" | |
873 | + >Find</v-btn> | |
870 | 874 | <v-card-title class="body-1" v-show="show"> |
871 | 875 | <v-btn icon large flat @click="displaySearch"> |
872 | 876 | <v-avatar size="27"> |
... | ... | @@ -921,7 +925,14 @@ |
921 | 925 | </v-layout> |
922 | 926 | <v-layout> |
923 | 927 | <v-flex xs5 class="mx-auto mb-2"> |
924 | - <v-btn @click="findStudents()" block round dark :loading="loading" class="add-button">Find</v-btn> | |
928 | + <v-btn | |
929 | + @click="findStudents()" | |
930 | + block | |
931 | + round | |
932 | + dark | |
933 | + :loading="loading" | |
934 | + class="add-button" | |
935 | + >Find</v-btn> | |
925 | 936 | </v-flex> |
926 | 937 | </v-layout> |
927 | 938 | </v-flex> |
... | ... | @@ -966,9 +977,7 @@ |
966 | 977 | /> |
967 | 978 | <span>View</span> |
968 | 979 | </v-tooltip> |
969 | - <v-tooltip top | |
970 | - v-if="role != 'TEACHER' " | |
971 | - > | |
980 | + <v-tooltip top v-if="role != 'TEACHER' "> | |
972 | 981 | <img |
973 | 982 | slot="activator" |
974 | 983 | style="cursor:pointer; width:20px; height:18px; " |
... | ... | @@ -978,9 +987,7 @@ |
978 | 987 | /> |
979 | 988 | <span>Edit</span> |
980 | 989 | </v-tooltip> |
981 | - <v-tooltip top | |
982 | - v-if="role != 'TEACHER' " | |
983 | - > | |
990 | + <v-tooltip top v-if="role != 'TEACHER' "> | |
984 | 991 | <img |
985 | 992 | slot="activator" |
986 | 993 | style="cursor:pointer; width:20px; height:20px; " |
... | ... | @@ -1206,6 +1213,7 @@ |
1206 | 1213 | :rules="fatheCellNoRules" |
1207 | 1214 | counter="10" |
1208 | 1215 | required |
1216 | + v-on:keyup="getParentDetails()" | |
1209 | 1217 | ></v-text-field> |
1210 | 1218 | </v-flex> |
1211 | 1219 | </v-layout> |
... | ... | @@ -1582,7 +1590,6 @@ |
1582 | 1590 | placeholder="fill your MobileNo" |
1583 | 1591 | name="mobileNo" |
1584 | 1592 | type="number" |
1585 | - | |
1586 | 1593 | ></v-text-field> |
1587 | 1594 | </v-flex> |
1588 | 1595 | </v-layout> |
... | ... | @@ -1944,8 +1951,8 @@ export default { |
1944 | 1951 | v => v <= 10000000000 || "Max 10 characters is required" |
1945 | 1952 | ], |
1946 | 1953 | password: [ |
1947 | - v => !!v || "Password field is Required.", | |
1948 | - // v => (/^(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})/).test(v) && v.length >= 8 | |
1954 | + v => !!v || "Password field is Required." | |
1955 | + // v => (/^(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*])(?=.{8,})/).test(v) && v.length >= 8 | |
1949 | 1956 | ], |
1950 | 1957 | mobileNoRule: [v => !!v || " Mobile Number is required"], |
1951 | 1958 | establishmentYearRules: [v => !!v || " Academic Year is required"], |
... | ... | @@ -2121,7 +2128,7 @@ export default { |
2121 | 2128 | }, |
2122 | 2129 | dates: function(date) { |
2123 | 2130 | return moment(date).format("MMMM DD, YYYY"); |
2124 | - return date | |
2131 | + return date; | |
2125 | 2132 | }, |
2126 | 2133 | onFilePicked(e) { |
2127 | 2134 | // console.log(e) |
... | ... | @@ -2366,6 +2373,7 @@ export default { |
2366 | 2373 | } |
2367 | 2374 | }, |
2368 | 2375 | getParentDetails() { |
2376 | + console.log("AYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAA"); | |
2369 | 2377 | if (this.parentData.fatherCellNo.length > 9) { |
2370 | 2378 | this.showLoader = true; |
2371 | 2379 | http() | ... | ... |
src/pages/changeStudents/changeStudents.vue
... | ... | @@ -0,0 +1,113 @@ |
1 | +<template> | |
2 | + <v-app id="login"> | |
3 | + <v-container fluid fill-height> | |
4 | + <v-layout> | |
5 | + <v-flex xs12 sm8 md8 lg5 offset-sm2 offset-lg3 class="mt-5"> | |
6 | + <v-card flat class="card-style pa-2" dark id="form"> | |
7 | + <v-layout> | |
8 | + <v-flex xs12> | |
9 | + <label class="title text-xs-center">Change Student</label> | |
10 | + </v-flex> | |
11 | + </v-layout> | |
12 | + <v-card-text> | |
13 | + <v-flex xs12 sm8 md8 lg8 offset-sm2> | |
14 | + <v-form class="mt-3"> | |
15 | + <v-select | |
16 | + :items="studentsData" | |
17 | + item-text="name" | |
18 | + item-value="_id" | |
19 | + v-model="changeStudent" | |
20 | + label="Students" | |
21 | + ></v-select> | |
22 | + </v-form> | |
23 | + </v-flex> | |
24 | + </v-card-text> | |
25 | + <v-card-actions> | |
26 | + <v-flex text-xs-center> | |
27 | + <v-btn round dark :loading="loading" @click="change" class="add-button">Change</v-btn> | |
28 | + </v-flex> | |
29 | + </v-card-actions> | |
30 | + <v-snackbar | |
31 | + :timeout="timeout" | |
32 | + :top="y === 'top'" | |
33 | + :right="x === 'right'" | |
34 | + :vertical="mode === 'vertical'" | |
35 | + v-model="snackbar" | |
36 | + :color="color" | |
37 | + >{{ text }}</v-snackbar> | |
38 | + </v-card> | |
39 | + </v-flex> | |
40 | + </v-layout> | |
41 | + </v-container> | |
42 | + </v-app> | |
43 | +</template> | |
44 | +<script> | |
45 | +import http from "@/Services/http.js"; | |
46 | + | |
47 | +export default { | |
48 | + data() { | |
49 | + return { | |
50 | + snackbar: false, | |
51 | + y: "top", | |
52 | + x: "right", | |
53 | + mode: "", | |
54 | + timeout: 4000, | |
55 | + text: "", | |
56 | + loading: false, | |
57 | + valid: false, | |
58 | + changeStudent: {}, | |
59 | + studentsData: [] | |
60 | + }; | |
61 | + }, | |
62 | + mounted() { | |
63 | + this.getparentStudents(); | |
64 | + }, | |
65 | + methods: { | |
66 | + change() { | |
67 | + console.log("changeStudent", this.changeStudent); | |
68 | + localStorage.setItem("parentStudentId", this.changeStudent); | |
69 | + this.$router.replace({ path: "/" }); | |
70 | + }, | |
71 | + getparentStudents() { | |
72 | + this.showLoader = true; | |
73 | + http() | |
74 | + .get("/parentStudentsList") | |
75 | + .then(response => { | |
76 | + // console.log("resssssss", response.data.data.students[0].classId); | |
77 | + this.studentsData = response.data.data.students; | |
78 | + localStorage.setItem( | |
79 | + "parentClassId", | |
80 | + response.data.data.students[0].classId | |
81 | + ); | |
82 | + this.showLoader = false; | |
83 | + }) | |
84 | + .catch(err => { | |
85 | + console.log("err====>", err); | |
86 | + this.showLoader = false; | |
87 | + }); | |
88 | + } | |
89 | + }, | |
90 | + computed: { | |
91 | + color() { | |
92 | + return this.loading ? "success" : "error"; | |
93 | + } | |
94 | + } | |
95 | +}; | |
96 | +</script> | |
97 | +<style scoped> | |
98 | +img { | |
99 | + position: absolute; | |
100 | + top: 13px; | |
101 | + left: 50px; | |
102 | +} | |
103 | +.v-btn--large { | |
104 | + padding: 0px 74px; | |
105 | +} | |
106 | +@media screen and (max-width: 769px) { | |
107 | + .v-btn--large { | |
108 | + font-size: 14px; | |
109 | + height: 44px; | |
110 | + padding: 0 32px; | |
111 | + } | |
112 | +} | |
113 | +</style> | ... | ... |
src/router/paths.js
... | ... | @@ -806,6 +806,18 @@ export default [{ |
806 | 806 | ) |
807 | 807 | }, |
808 | 808 | { |
809 | + path: '/courseDetail', | |
810 | + meta: {}, | |
811 | + name: 'Course Detail', | |
812 | + props: (route) => ({ type: route.query.type }), | |
813 | + component: () => | |
814 | + import ( | |
815 | + /* webpackChunkName: "routes" */ | |
816 | + /* webpackMode: "lazy-once" */ | |
817 | + `@/pages/Course/courseDetail.vue` | |
818 | + ) | |
819 | + }, | |
820 | + { | |
809 | 821 | path: '/enrollStudents', |
810 | 822 | meta: {}, |
811 | 823 | name: 'Enroll Students', |
... | ... | @@ -818,6 +830,18 @@ export default [{ |
818 | 830 | ) |
819 | 831 | }, |
820 | 832 | { |
833 | + path: '/changeStudents', | |
834 | + meta: {}, | |
835 | + name: 'Change Students', | |
836 | + props: (route) => ({ type: route.query.type }), | |
837 | + component: () => | |
838 | + import ( | |
839 | + /* webpackChunkName: "routes" */ | |
840 | + /* webpackMode: "lazy-once" */ | |
841 | + `@/pages/changeStudents/changeStudents.vue` | |
842 | + ) | |
843 | + }, | |
844 | + { | |
821 | 845 | path: '/annoucement', |
822 | 846 | meta: {}, |
823 | 847 | name: 'Annoucement', | ... | ... |