Commit 55f72b7d7d35e68ce6c6f12badd8465d348f43a3
1 parent
335f3bb8e1
Exists in
master
and in
3 other branches
add new page are notification design,all api run in notification or add logo
Showing
14 changed files
with
936 additions
and
240 deletions
Show diff stats
index.html
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | <link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500,700%7CMaterial+Icons' rel="stylesheet"> |
7 | 7 | <!-- <script src="https://cdn.bootcss.com/echarts/4.0.4/echarts-en.min.js"></script> --> |
8 | 8 | <title>School Management</title> |
9 | - <!-- <link rel="shortcut icon" href="/static/ana.png" type="image/x-icon"> --> | |
9 | + <link rel="shortcut icon" href="/static/icon.jpeg" type="image/x-icon"> | |
10 | 10 | <meta name="description" content="School Management"> |
11 | 11 | <!-- <meta name="keywords" content="admin, dashboard, webapp, template, responsive, material, bootstrap, crm, uikit, framework, backend, app, widgets, premium, file manamger, mail, vue, vuetify, echarts"> --> |
12 | 12 | <link href="./static/css/custom.css" rel="stylesheet" /> | ... | ... |
src/Services/http.js
src/api/menu.js
... | ... | @@ -44,11 +44,11 @@ const Menu = [ |
44 | 44 | name: 'timeTable', |
45 | 45 | icon: 'event_note', |
46 | 46 | }, |
47 | - // { | |
48 | - // title: 'Notification', | |
49 | - // name: 'notification', | |
50 | - // icon: 'notifications_active', | |
51 | - // }, | |
47 | + { | |
48 | + title: 'Notification', | |
49 | + name: 'notification', | |
50 | + icon: 'notifications_active', | |
51 | + }, | |
52 | 52 | ]; |
53 | 53 | |
54 | 54 | ... | ... |
src/components/pageHeader/AppDrawer.vue
... | ... | @@ -8,10 +8,10 @@ |
8 | 8 | v-model="drawer" |
9 | 9 | width="260" |
10 | 10 | > |
11 | - <v-toolbar style="background:#39b982" > | |
12 | - <!-- <img v-bind:src="computeLogo" height="30" class="imgLogo" alt="ana"> --> | |
13 | - <h4 class="white--text my-3 ml-4">School-Managament</h4> | |
14 | - <v-toolbar-title class="ml-0 pl-3"> | |
11 | + <v-toolbar style="background:#39b982" > | |
12 | + <img v-bind:src="computeLogo" height="30" class="imgLogo" alt="ana"> | |
13 | + <h5 class="white--text my-3 ml-2">School-Managament</h5> | |
14 | + <v-toolbar-title class="ml-0 pl-3" > | |
15 | 15 | </v-toolbar-title> |
16 | 16 | </v-toolbar> |
17 | 17 | <vue-perfect-scrollbar class="drawer-menu--scroll" :settings="scrollSettings"> |
... | ... | @@ -97,9 +97,9 @@ export default { |
97 | 97 | computeGroupActive () { |
98 | 98 | return true; |
99 | 99 | }, |
100 | - // computeLogo () { | |
101 | - // return '/static/ana@2x.png'; | |
102 | - // }, | |
100 | + computeLogo () { | |
101 | + return '/static/icon.jpeg'; | |
102 | + }, | |
103 | 103 | |
104 | 104 | sideToolbarColor () { |
105 | 105 | return this.$vuetify.options.extra.sideNav; |
... | ... | @@ -153,7 +153,7 @@ export default { |
153 | 153 | } |
154 | 154 | .imgLogo{ |
155 | 155 | height: 22px; |
156 | - width: 62px; | |
156 | + width: 20px;; | |
157 | 157 | } |
158 | 158 | } |
159 | 159 | </style> |
... | ... | @@ -163,5 +163,6 @@ export default { |
163 | 163 | .theme--light .v-icon, .application .theme--light.v-icon { |
164 | 164 | color: #39b982; |
165 | 165 | } |
166 | + | |
166 | 167 | </style> |
167 | 168 | ... | ... |
src/pages/Authentication/Login.vue
... | ... | @@ -2,8 +2,8 @@ |
2 | 2 | <v-app id="login"> |
3 | 3 | <v-toolbar class="fixcolor"> |
4 | 4 | <v-toolbar-items> |
5 | - <!-- <img src="/static/ana@2x.png" height="36" alt="ana"> --> | |
6 | - <h3 class="white--text my-3 ml-4">School-Management</h3> | |
5 | + <img src="/static/icon.jpeg" height="36" alt="logo"> | |
6 | + <h3 class="white--text my-3 ml-5 logoSchool">School-Management</h3> | |
7 | 7 | </v-toolbar-items> |
8 | 8 | </v-toolbar> |
9 | 9 | <v-content> |
... | ... | @@ -106,6 +106,7 @@ export default { |
106 | 106 | }, |
107 | 107 | methods: { |
108 | 108 | login() { |
109 | + this.loading = true; | |
109 | 110 | var userdata = { |
110 | 111 | email: this.userLogincredentials.email, |
111 | 112 | password: this.userLogincredentials.password, |
... | ... | @@ -117,13 +118,11 @@ export default { |
117 | 118 | .then(response => { |
118 | 119 | this.$store.dispatch("setToken", response.data.data.token); |
119 | 120 | this.$store.dispatch("Id", response.data.data.id); |
120 | - this.loading = true; | |
121 | - setTimeout(() => { | |
122 | - this.$router.push("/teachers"); | |
123 | - }, 2000); | |
121 | + this.loading = false; | |
122 | + this.$router.push("/teachers"); | |
124 | 123 | }) |
125 | - .catch(err => { | |
126 | - this.text = "Email or Password not matched !!"; | |
124 | + .catch(error => { | |
125 | + this.text = error.response.data.message | |
127 | 126 | this.snackbar = true; |
128 | 127 | this.loading = false; |
129 | 128 | }); |
... | ... | @@ -151,7 +150,7 @@ export default { |
151 | 150 | img { |
152 | 151 | position: absolute; |
153 | 152 | top: 13px; |
154 | - left: 50px; | |
153 | + left: 8px; | |
155 | 154 | } |
156 | 155 | .v-btn--large { |
157 | 156 | padding: 0px 84px; |
... | ... | @@ -174,10 +173,17 @@ a { |
174 | 173 | margin-left:18px; |
175 | 174 | } |
176 | 175 | img{ |
177 | -top:16px; | |
178 | -left:10px; | |
176 | +top: 21px; | |
177 | +left: 10px; | |
179 | 178 | height: 24px; |
180 | -width: 66px;; | |
179 | +width: 33px; | |
180 | +} | |
181 | +.logoSchool{ | |
182 | +font-size: 18px; | |
183 | +margin-top: 20px !important; | |
184 | +} | |
185 | +h5 { | |
186 | + font-size: 14px !important; | |
181 | 187 | } |
182 | 188 | } |
183 | 189 | </style> |
184 | 190 | \ No newline at end of file | ... | ... |
src/pages/Authentication/forgetpassword.vue
... | ... | @@ -2,8 +2,8 @@ |
2 | 2 | <v-app id="login"> |
3 | 3 | <v-toolbar class="fixcolors"> |
4 | 4 | <v-toolbar-items> |
5 | - <!-- <img src="/static/ana@2x.png" height="36" alt="ana" /> --> | |
6 | - <h3 class="white--text my-3 ml-4">School-Management</h3> | |
5 | + <img src="/static/icon.jpeg" height="36" alt="logo"> | |
6 | + <h3 class="white--text my-3 ml-5 logoSchool">School-Management</h3> | |
7 | 7 | </v-toolbar-items> |
8 | 8 | </v-toolbar> |
9 | 9 | <v-container fluid> |
... | ... | @@ -249,7 +249,7 @@ export default { |
249 | 249 | img{ |
250 | 250 | position:absolute; |
251 | 251 | top:13px; |
252 | -left:50px; | |
252 | +left:8px; | |
253 | 253 | } |
254 | 254 | .v-btn--large { |
255 | 255 | padding: 0px 74px; |
... | ... | @@ -267,11 +267,21 @@ h5 { |
267 | 267 | } |
268 | 268 | } |
269 | 269 | @media screen and (max-width: 600px) { |
270 | +.theme--light .v-btn, .application .theme--light.v-btn { | |
271 | + color: white !important; | |
272 | +} | |
270 | 273 | img{ |
271 | -top:16px; | |
272 | -left:10px; | |
274 | +top: 21px; | |
275 | +left: 10px; | |
273 | 276 | height: 24px; |
274 | -width: 66px;; | |
277 | +width: 33px; | |
278 | +} | |
279 | +.logoSchool{ | |
280 | +font-size: 18px; | |
281 | +margin-top: 20px !important; | |
282 | +} | |
283 | +.content { | |
284 | + padding: 0px 0px 0px 0px !important; | |
275 | 285 | } |
276 | 286 | } |
277 | 287 | </style> |
278 | 288 | \ No newline at end of file | ... | ... |
src/pages/Class/addclass.vue
... | ... | @@ -274,8 +274,6 @@ export default { |
274 | 274 | loading: false, |
275 | 275 | date: null, |
276 | 276 | search: "", |
277 | - menu: false, | |
278 | - menu1: false, | |
279 | 277 | dialog: false, |
280 | 278 | dialog1: false, |
281 | 279 | valid: true, |
... | ... | @@ -293,7 +291,7 @@ export default { |
293 | 291 | sortable: false, |
294 | 292 | value: "No" |
295 | 293 | }, |
296 | - { text: "Class Name", value: "name", sortable: false, align: "center" }, | |
294 | + { text: "Class Name", value: "classNum", sortable: false, align: "center" }, | |
297 | 295 | { text: "Action", value: "", sortable: false, align: "center" } |
298 | 296 | ], |
299 | 297 | desserts: [], |
... | ... | @@ -324,14 +322,6 @@ export default { |
324 | 322 | } |
325 | 323 | ] |
326 | 324 | }), |
327 | - watch: { | |
328 | - menu(val) { | |
329 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); | |
330 | - }, | |
331 | - menu1(val) { | |
332 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); | |
333 | - } | |
334 | - }, | |
335 | 325 | methods: { |
336 | 326 | getClassList() { |
337 | 327 | this.showLoader = true; | ... | ... |
src/pages/Event/event.vue
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 | <v-text-field |
10 | 10 | flat |
11 | 11 | append-icon="search" |
12 | - label="Find your Teachers" | |
12 | + label="Find your Events" | |
13 | 13 | v-model="search" |
14 | 14 | color="white" |
15 | 15 | dark |
... | ... | @@ -360,8 +360,6 @@ export default { |
360 | 360 | loading: false, |
361 | 361 | date: null, |
362 | 362 | search: "", |
363 | - menu: false, | |
364 | - menu1: false, | |
365 | 363 | dialog: false, |
366 | 364 | dialog1: false, |
367 | 365 | valid: true, |
... | ... | @@ -423,14 +421,6 @@ export default { |
423 | 421 | } |
424 | 422 | ] |
425 | 423 | }), |
426 | - watch: { | |
427 | - menu(val) { | |
428 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); | |
429 | - }, | |
430 | - menu1(val) { | |
431 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); | |
432 | - } | |
433 | - }, | |
434 | 424 | methods: { |
435 | 425 | pickFile() { |
436 | 426 | this.$refs.image.click(); | ... | ... |
src/pages/News/news.vue
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 | <v-text-field |
10 | 10 | flat |
11 | 11 | append-icon="search" |
12 | - label="Find your Teachers" | |
12 | + label="Find your News" | |
13 | 13 | v-model="search" |
14 | 14 | color="white" |
15 | 15 | dark |
... | ... | @@ -437,8 +437,6 @@ export default { |
437 | 437 | date: null, |
438 | 438 | search: "", |
439 | 439 | showLoader:false, |
440 | - menu: false, | |
441 | - menu1: false, | |
442 | 440 | dialog: false, |
443 | 441 | dialog1: false, |
444 | 442 | valid: true, |
... | ... | @@ -446,7 +444,6 @@ export default { |
446 | 444 | newActive: false, |
447 | 445 | addclass: [], |
448 | 446 | addSection: [], |
449 | - gender: ["Male", "Female"], | |
450 | 447 | AddUsercredentials: {}, |
451 | 448 | pagination: { |
452 | 449 | rowsPerPage: 15 |
... | ... | @@ -465,7 +462,6 @@ export default { |
465 | 462 | value: "No" |
466 | 463 | }, |
467 | 464 | { text: "Title", value: "title", sortable: false, align: "center" }, |
468 | - // { text: "Email", value: "email", sortable: false, align: "center" }, | |
469 | 465 | { text: "Description", value: "description", sortable: false, align: "center" }, |
470 | 466 | { text: "Action", value: "", sortable: false, align: "center" } |
471 | 467 | ], |
... | ... | @@ -501,14 +497,6 @@ export default { |
501 | 497 | } |
502 | 498 | ] |
503 | 499 | }), |
504 | - watch: { | |
505 | - menu(val) { | |
506 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); | |
507 | - }, | |
508 | - menu1(val) { | |
509 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); | |
510 | - } | |
511 | - }, | |
512 | 500 | methods: { |
513 | 501 | getSections(_id) { |
514 | 502 | var token = this.$store.state.token; |
... | ... | @@ -585,12 +573,6 @@ export default { |
585 | 573 | this.editedItem = Object.assign({}, item); |
586 | 574 | this.dialog1 = true; |
587 | 575 | }, |
588 | - // report(item) { | |
589 | - // this.editedIndex = this.desserts.indexOf(item); | |
590 | - // this.editedItem = Object.assign({}, item); | |
591 | - // this.dialog2 = true; | |
592 | - // }, | |
593 | - | |
594 | 576 | deleteItem(item) { |
595 | 577 | let deleteNews = { |
596 | 578 | newsId: item._id |
... | ... | @@ -636,9 +618,6 @@ export default { |
636 | 618 | close1() { |
637 | 619 | this.dialog1 = false; |
638 | 620 | }, |
639 | - // close2() { | |
640 | - // this.dialog2 = false; | |
641 | - // }, | |
642 | 621 | submit() { |
643 | 622 | if (this.$refs.form.validate()) { |
644 | 623 | let imageData = new FormData(); |
... | ... | @@ -719,9 +698,6 @@ export default { |
719 | 698 | this.$router.replace({ path: "/" }); |
720 | 699 | }); |
721 | 700 | }, |
722 | - | |
723 | - // console.log("Id",this.$store.state.id) | |
724 | - // console.log("token",this.$store.state.token) | |
725 | 701 | computed: { |
726 | 702 | toolbarColor() { |
727 | 703 | return this.$vuetify.options.extra.mainNav; | ... | ... |
src/pages/Notification/notification.vue
... | ... | @@ -0,0 +1,742 @@ |
1 | +<template> | |
2 | + <v-app id="pages-dasboard"> | |
3 | + <v-toolbar class="fixcolors" fixed app> | |
4 | + <v-toolbar-title class="ml-0 pl-3"> | |
5 | + <v-toolbar-side-icon @click.stop="handleDrawerToggle" class="hide"></v-toolbar-side-icon> | |
6 | + </v-toolbar-title> | |
7 | + | |
8 | + <!-- ****** SEARCH ALL EXISTING REMINDER ****** --> | |
9 | + | |
10 | + <v-flex xs7 sm3 class="userSearch"> | |
11 | + <v-text-field | |
12 | + flat | |
13 | + append-icon="search" | |
14 | + label="Find your Notifictaion" | |
15 | + v-model="search" | |
16 | + color="white" | |
17 | + dark | |
18 | + ></v-text-field> | |
19 | + </v-flex> | |
20 | + <v-spacer></v-spacer> | |
21 | + <v-menu offset-y origin="center center" :nudge-bottom="10" transition="scale-transition"> | |
22 | + <v-btn icon large flat slot="activator"> | |
23 | + <v-avatar size="40px"> | |
24 | + <img src="/static/icon/user.png"> | |
25 | + </v-avatar> | |
26 | + </v-btn> | |
27 | + <v-list class="pa-0"> | |
28 | + <v-list-tile | |
29 | + v-for="(item,index) in items" | |
30 | + :to="!item.href ? { name: item.name } : null" | |
31 | + :href="item.href" | |
32 | + @click="item.click" | |
33 | + ripple="ripple" | |
34 | + :disabled="item.disabled" | |
35 | + :target="item.target" | |
36 | + rel="noopener" | |
37 | + :key="index" | |
38 | + > | |
39 | + <v-list-tile-action v-if="item.icon"> | |
40 | + <v-icon>{{ item.icon }}</v-icon> | |
41 | + </v-list-tile-action> | |
42 | + <v-list-tile-content> | |
43 | + <v-list-tile-title>{{ item.title }}</v-list-tile-title> | |
44 | + </v-list-tile-content> | |
45 | + </v-list-tile> | |
46 | + </v-list> | |
47 | + </v-menu> | |
48 | + </v-toolbar> | |
49 | + <v-tabs grow slider-color="black"> | |
50 | + <v-tab | |
51 | + ripple | |
52 | + @click="activeTab('existing')" | |
53 | + v-bind:class="{ active: isActive }" | |
54 | + id="tab" | |
55 | + class="subheading" | |
56 | + >Existing Notifictaion</v-tab> | |
57 | + <v-tab | |
58 | + ripple | |
59 | + @click="activeTab('new')" | |
60 | + v-bind:class="{ active: newActive }" | |
61 | + id="tab1" | |
62 | + User | |
63 | + class="subheading" | |
64 | + >Add New Notifictaion</v-tab> | |
65 | + | |
66 | + <!-- ****** EDITS REMINDER DETAILS ****** --> | |
67 | + | |
68 | + <v-tab-item> | |
69 | + <v-snackbar | |
70 | + :timeout="timeout" | |
71 | + :top="y === 'top'" | |
72 | + :right="x === 'right'" | |
73 | + :vertical="mode === 'vertical'" | |
74 | + v-model="snackbar" | |
75 | + color="success" | |
76 | + >{{ text }}</v-snackbar> | |
77 | + <v-dialog v-model="dialog" max-width="600px"> | |
78 | + <v-flex xs12 sm12 class=""> | |
79 | + <v-toolbar color="white"> | |
80 | + <v-spacer></v-spacer> | |
81 | + <v-toolbar-title>Edit Notifictaion</v-toolbar-title> | |
82 | + <v-spacer></v-spacer> | |
83 | + </v-toolbar> | |
84 | + <v-card flat> | |
85 | + <v-form ref="form"> | |
86 | + <v-container fluid> | |
87 | + <v-layout> | |
88 | + <v-flex | |
89 | + xs12 | |
90 | + class="text-xs-center text-sm-center text-md-center text-lg-center mr-4" | |
91 | + > | |
92 | + <v-avatar size="100px"> | |
93 | + <img src="/static/icon/user.png" v-if="!imageUrl"> | |
94 | + </v-avatar> | |
95 | + <input | |
96 | + type="file" | |
97 | + style="display: none" | |
98 | + ref="image" | |
99 | + accept="image/*" | |
100 | + @change="onFilePicked" | |
101 | + > | |
102 | + <img | |
103 | + :src="imageData.imageUrl" | |
104 | + height="150" | |
105 | + v-if="imageUrl" | |
106 | + style="border-radius:50%; width:200px" | |
107 | + > | |
108 | + </v-flex> | |
109 | + </v-layout> | |
110 | + <v-flex xs12 sm12> | |
111 | + <v-layout> | |
112 | + <v-flex xs4 class="pt-4 subheading"> | |
113 | + <label class="right">Title:</label> | |
114 | + </v-flex> | |
115 | + <v-flex xs5 class="ml-3"> | |
116 | + <v-text-field | |
117 | + v-model="editedItem.title" | |
118 | + placeholder="fill your Title" | |
119 | + name="name" | |
120 | + type="text" | |
121 | + ></v-text-field> | |
122 | + </v-flex> | |
123 | + </v-layout> | |
124 | + </v-flex> | |
125 | + <v-flex xs12 sm12> | |
126 | + <v-layout> | |
127 | + <v-flex xs4 class="pt-4 subheading"> | |
128 | + <label class="right">Description:</label> | |
129 | + </v-flex> | |
130 | + <v-flex xs5 class="ml-3"> | |
131 | + <v-text-field | |
132 | + placeholder="fill your Description" | |
133 | + v-model="editedItem.description" | |
134 | + type="text" | |
135 | + ></v-text-field> | |
136 | + </v-flex> | |
137 | + </v-layout> | |
138 | + </v-flex> | |
139 | + <v-layout> | |
140 | + <v-flex xs12 sm10 offset-sm1> | |
141 | + <v-card-actions> | |
142 | + <v-btn round dark @click.native="close">Cancel</v-btn> | |
143 | + <v-spacer></v-spacer> | |
144 | + <v-btn round dark @click="save">Save</v-btn> | |
145 | + </v-card-actions> | |
146 | + </v-flex> | |
147 | + </v-layout> | |
148 | + </v-container> | |
149 | + </v-form> | |
150 | + </v-card> | |
151 | + </v-flex> | |
152 | + </v-dialog> | |
153 | + | |
154 | + <!-- ****** PROFILE VIEW REMINDER DEATILS ****** --> | |
155 | + | |
156 | + <v-dialog v-model="dialog1" max-width="600px"> | |
157 | + <v-toolbar color="white"> | |
158 | + <v-spacer></v-spacer> | |
159 | + <v-toolbar-title>Notification</v-toolbar-title> | |
160 | + <v-spacer></v-spacer> | |
161 | + <v-icon @click="close1">close</v-icon> | |
162 | + </v-toolbar> | |
163 | + <v-card> | |
164 | + <v-flex align-center justify-center layout text-xs-center> | |
165 | + <v-avatar size="50px" style="position:absolute; top:20px;"> | |
166 | + <img src="/static/icon/user.png"> | |
167 | + </v-avatar> | |
168 | + </v-flex> | |
169 | + <v-card-text> | |
170 | + <v-container grid-list-md> | |
171 | + <v-layout wrap> | |
172 | + <v-flex> | |
173 | + <br> | |
174 | + <br> | |
175 | + <v-layout> | |
176 | + <v-flex xs5 sm6> | |
177 | + <h5 class="right my-1">Title:</h5> | |
178 | + </v-flex> | |
179 | + <v-flex sm6 xs8> | |
180 | + <h5 class="my-1">{{ editedItem.title }}</h5> | |
181 | + </v-flex> | |
182 | + </v-layout> | |
183 | + <v-layout> | |
184 | + <v-flex xs5 sm6> | |
185 | + <h5 class="right my-1">Description:</h5> | |
186 | + </v-flex> | |
187 | + <v-flex sm6 xs8> | |
188 | + <h5 class="my-1">{{ editedItem.description }}</h5> | |
189 | + </v-flex> | |
190 | + </v-layout> | |
191 | + </v-flex> | |
192 | + </v-layout> | |
193 | + </v-container> | |
194 | + </v-card-text> | |
195 | + </v-card> | |
196 | + </v-dialog> | |
197 | + <v-snackbar | |
198 | + :timeout="timeout" | |
199 | + :top="y === 'top'" | |
200 | + :right="x === 'right'" | |
201 | + :vertical="mode === 'vertical'" | |
202 | + v-model="snackbar" | |
203 | + color="success" | |
204 | + >{{ text }}</v-snackbar> | |
205 | + | |
206 | + <!-- ****** EXISTING-USERS REMINDER TABLE ****** --> | |
207 | + | |
208 | + <v-data-table | |
209 | + :headers="headers" | |
210 | + :items="desserts" | |
211 | + :pagination.sync="pagination" | |
212 | + :search="search" | |
213 | + > | |
214 | + <template slot="items" slot-scope="props"> | |
215 | + <td id="td" class="text-xs-center">{{ props.index}}</td> | |
216 | + <td id="td" class="text-xs-center">{{ props.item.title}}</td> | |
217 | + <td id="td" class="text-xs-center">{{ props.item.description}}</td> | |
218 | + | |
219 | + <td class="text-xs-center"> | |
220 | + <span> | |
221 | + <img | |
222 | + style="cursor:pointer; width:25px; height:18px; " | |
223 | + class="mr-5" | |
224 | + @click="profile(props.item)" | |
225 | + src="/static/icon/eye1.png" | |
226 | + > | |
227 | + <img | |
228 | + style="cursor:pointer; width:20px; height:18px; " | |
229 | + class="mr-5" | |
230 | + @click="editItem(props.item)" | |
231 | + src="/static/icon/edit1.png" | |
232 | + > | |
233 | + <img | |
234 | + style="cursor:pointer; height:20px; " | |
235 | + class="mr-5" | |
236 | + @click="deleteItem(props.item)" | |
237 | + src="/static/icon/delete1.png" | |
238 | + > | |
239 | + </span> | |
240 | + </td> | |
241 | + </template> | |
242 | + <v-alert | |
243 | + slot="no-results" | |
244 | + :value="true" | |
245 | + color="error" | |
246 | + icon="warning" | |
247 | + >Your search for "{{ search }}" found no results.</v-alert> | |
248 | + </v-data-table> | |
249 | + </v-tab-item> | |
250 | + | |
251 | + <!-- ****** ADD MULTIPLE REMINDER ****** --> | |
252 | + | |
253 | + <v-tab-item> | |
254 | + <v-container> | |
255 | + <v-snackbar | |
256 | + :timeout="timeout" | |
257 | + :top="y === 'top'" | |
258 | + :right="x === 'right'" | |
259 | + :vertical="mode === 'vertical'" | |
260 | + v-model="snackbar" | |
261 | + color="success" | |
262 | + >{{ text }}</v-snackbar> | |
263 | + <v-flex xs12 sm12 class="my-4"> | |
264 | + <v-card flat> | |
265 | + <v-form ref="form" v-model="valid" lazy-validation> | |
266 | + <v-container fluid> | |
267 | + <v-layout> | |
268 | + <v-flex | |
269 | + xs12 | |
270 | + class="text-xs-center text-sm-center text-md-center text-lg-center my-4 mr-4" | |
271 | + > | |
272 | + <v-avatar size="100px"> | |
273 | + <img src="/static/icon/user.png" v-if="!imageUrl"> | |
274 | + </v-avatar> | |
275 | + <input | |
276 | + type="file" | |
277 | + style="display: none" | |
278 | + ref="image" | |
279 | + accept="image/*" | |
280 | + @change="onFilePicked" | |
281 | + > | |
282 | + <img | |
283 | + :src="imageData.imageUrl" | |
284 | + height="150" | |
285 | + v-if="imageUrl" | |
286 | + style="border-radius:50%; width:200px" | |
287 | + > | |
288 | + </v-flex> | |
289 | + </v-layout> | |
290 | + <v-flex xs12> | |
291 | + <v-layout> | |
292 | + <v-flex xs4 class="pt-4 subheading"> | |
293 | + <label class="right">Title:</label> | |
294 | + </v-flex> | |
295 | + <v-flex xs4 class="ml-3"> | |
296 | + <v-text-field | |
297 | + v-model="addNotification.title" | |
298 | + placeholder="fill your Title" | |
299 | + type="text" | |
300 | + :rules="titleRules" | |
301 | + required | |
302 | + ></v-text-field> | |
303 | + </v-flex> | |
304 | + </v-layout> | |
305 | + </v-flex> | |
306 | + <v-flex xs12> | |
307 | + <v-layout> | |
308 | + <v-flex xs4 class="pt-4 subheading"> | |
309 | + <label class="right">Description:</label> | |
310 | + </v-flex> | |
311 | + <v-flex xs4 class="ml-3"> | |
312 | + <v-text-field | |
313 | + placeholder="fill your Description" | |
314 | + :rules="descriptionRules" | |
315 | + v-model="addNotification.description" | |
316 | + type="text" | |
317 | + required | |
318 | + ></v-text-field> | |
319 | + </v-flex> | |
320 | + </v-layout> | |
321 | + </v-flex> | |
322 | + <v-layout> | |
323 | + <v-flex xs12 sm6 offset-sm3> | |
324 | + <v-card-actions> | |
325 | + <v-btn @click="clear" round dark>clear</v-btn> | |
326 | + <v-spacer></v-spacer> | |
327 | + <v-btn @click="submit" round dark :loading="loading">Add</v-btn> | |
328 | + </v-card-actions> | |
329 | + </v-flex> | |
330 | + </v-layout> | |
331 | + </v-container> | |
332 | + </v-form> | |
333 | + </v-card> | |
334 | + </v-flex> | |
335 | + </v-container> | |
336 | + </v-tab-item> | |
337 | + </v-tabs> | |
338 | + <div class="loader" v-if="showLoader"> | |
339 | + <v-progress-circular indeterminate color="white"></v-progress-circular> | |
340 | + </div> | |
341 | + </v-app> | |
342 | +</template> | |
343 | + | |
344 | +<script> | |
345 | +import http from "@/Services/http.js"; | |
346 | +import Util from "@/util"; | |
347 | + | |
348 | +export default { | |
349 | + data: () => ({ | |
350 | + snackbar: false, | |
351 | + y: "top", | |
352 | + x: "right", | |
353 | + mode: "", | |
354 | + timeout: 3000, | |
355 | + text: "", | |
356 | + loading: false, | |
357 | + date: null, | |
358 | + search: "", | |
359 | + showLoader:false, | |
360 | + dialog: false, | |
361 | + dialog1: false, | |
362 | + valid: true, | |
363 | + isActive: true, | |
364 | + newActive: false, | |
365 | + pagination: { | |
366 | + rowsPerPage: 15 | |
367 | + }, | |
368 | + imageData: {}, | |
369 | + imageName: "", | |
370 | + imageUrl: "", | |
371 | + imageFile: "", | |
372 | + titleRules: [v => !!v || " Tilte is required"], | |
373 | + descriptionRules: [v => !!v || " Description is required"], | |
374 | + headers: [ | |
375 | + { | |
376 | + text: "No", | |
377 | + align: "center", | |
378 | + sortable: false, | |
379 | + value: "No" | |
380 | + }, | |
381 | + { text: "Title", value: "title", sortable: false, align: "center" }, | |
382 | + { text: "Description", value: "description", sortable: false, align: "center" }, | |
383 | + { text: "Action", value: "", sortable: false, align: "center" } | |
384 | + ], | |
385 | + desserts: [], | |
386 | + editedIndex: -1, | |
387 | + addNotification:{ | |
388 | + title:'', | |
389 | + description:'' | |
390 | + }, | |
391 | + editedItem: { | |
392 | + title:'', | |
393 | + description:'' | |
394 | + }, | |
395 | + defaultItem: { | |
396 | + title:'', | |
397 | + description:'' | |
398 | + }, | |
399 | + userName: "", | |
400 | + items: [ | |
401 | + { | |
402 | + href: "/changepassword", | |
403 | + title: "Change Password", | |
404 | + click: e => { | |
405 | + console.log(e); | |
406 | + } | |
407 | + }, | |
408 | + { | |
409 | + href: "#", | |
410 | + title: "Logout", | |
411 | + click: e => { | |
412 | + window.getApp.$emit("APP_LOGOUT"); | |
413 | + } | |
414 | + } | |
415 | + ] | |
416 | + }), | |
417 | + methods: { | |
418 | + pickFile() { | |
419 | + this.$refs.image.click(); | |
420 | + }, | |
421 | + | |
422 | + onFilePicked(e) { | |
423 | + // console.log(e) | |
424 | + const files = e.target.files; | |
425 | + this.imageData.upload = e.target.files[0]; | |
426 | + if (files[0] !== undefined) { | |
427 | + this.imageName = files[0].name; | |
428 | + if (this.imageName.lastIndexOf(".") <= 0) { | |
429 | + return; | |
430 | + } | |
431 | + const fr = new FileReader(); | |
432 | + fr.readAsDataURL(files[0]); | |
433 | + fr.addEventListener("load", () => { | |
434 | + this.imageUrl = fr.result; | |
435 | + this.imageFile = files[0]; // this is an image file that can be sent to server... | |
436 | + this.imageData.imageUrl = URL.createObjectURL(this.imageFile); | |
437 | + console.log("upload=======>", this.imageData.imageUrl); | |
438 | + console.log("imageFile", this.imageFile); | |
439 | + }); | |
440 | + } else { | |
441 | + this.imageName = ""; | |
442 | + this.imageFile = ""; | |
443 | + this.imageUrl = ""; | |
444 | + } | |
445 | + }, | |
446 | + getNotifications() { | |
447 | + this.showLoader = true; | |
448 | + var token = this.$store.state.token; | |
449 | + http() | |
450 | + .get("/getNotificationsList", { | |
451 | + headers: { Authorization: "Bearer " + token } | |
452 | + }) | |
453 | + .then(response => { | |
454 | + this.desserts = response.data.data; | |
455 | + this.showLoader = false; | |
456 | + // console.log("getNotifications=====>",this.desserts) | |
457 | + }) | |
458 | + .catch(err => { | |
459 | + // console.log("err====>", err); | |
460 | + this.showLoader = false; | |
461 | + this.$router.replace({ path: "/" }); | |
462 | + }); | |
463 | + }, | |
464 | + editItem(item) { | |
465 | + this.editedIndex = this.desserts.indexOf(item); | |
466 | + this.editedItem = Object.assign({}, item); | |
467 | + this.dialog = true; | |
468 | + }, | |
469 | + profile(item) { | |
470 | + this.editedIndex = this.desserts.indexOf(item); | |
471 | + this.editedItem = Object.assign({}, item); | |
472 | + this.dialog1 = true; | |
473 | + }, | |
474 | + | |
475 | + deleteItem(item) { | |
476 | + let deleteNotification = { | |
477 | + notificationId: item._id | |
478 | + }; | |
479 | + http() | |
480 | + .delete( | |
481 | + "/deleteNotification", | |
482 | + confirm("Are you sure you want to delete this?") && { | |
483 | + params: deleteNotification | |
484 | + } | |
485 | + ) | |
486 | + .then(response => { | |
487 | + // console.log("deleteNotification",deleteNotification) | |
488 | + if ((this.snackbar = true)) { | |
489 | + this.text = "Successfully Delete Notification"; | |
490 | + } | |
491 | + this.getNotifications(); | |
492 | + }) | |
493 | + .catch(error => { | |
494 | + console.log(error); | |
495 | + }); | |
496 | + }, | |
497 | + activeTab(type) { | |
498 | + switch (type) { | |
499 | + case "existing": | |
500 | + this.newActive = false; | |
501 | + this.isActive = true; | |
502 | + break; | |
503 | + | |
504 | + default: | |
505 | + this.newActive = true; | |
506 | + this.isActive = false; | |
507 | + break; | |
508 | + } | |
509 | + }, | |
510 | + close() { | |
511 | + this.dialog = false; | |
512 | + setTimeout(() => { | |
513 | + this.editedItem = Object.assign({}, this.defaultItem); | |
514 | + this.editedIndex = -1; | |
515 | + }, 300); | |
516 | + }, | |
517 | + close1() { | |
518 | + this.dialog1 = false; | |
519 | + }, | |
520 | + submit() { | |
521 | + if (this.$refs.form.validate()) { | |
522 | + let imageData = new FormData(); | |
523 | + imageData.append("upload", this.imageFile); | |
524 | + console.log(imageData); | |
525 | + let create = { | |
526 | + title: this.addNotification.title, | |
527 | + description: this.addNotification.description, | |
528 | + // imageData | |
529 | + }; | |
530 | + console.log(create) | |
531 | + http() | |
532 | + .post("/createNotification", create) | |
533 | + .then(response => { | |
534 | + console.log(create) | |
535 | + if ((this.snackbar = true)) { | |
536 | + this.text = "New user added successfully"; | |
537 | + } | |
538 | + this.getNotifications(); | |
539 | + this.clear(); | |
540 | + }) | |
541 | + .catch(error => { | |
542 | + // console.log(error); | |
543 | + if ((this.snackbar = true)) { | |
544 | + this.text = error.response.data.message; | |
545 | + } | |
546 | + }); | |
547 | + } | |
548 | + }, | |
549 | + mail() {}, | |
550 | + download() {}, | |
551 | + clear() { | |
552 | + this.$refs.form.reset(); | |
553 | + }, | |
554 | + save() { | |
555 | + let imageData = new FormData(); | |
556 | + imageData.append("upload", this.imageFile); | |
557 | + console.log(imageData); | |
558 | + let editNotification = { | |
559 | + notificationId:this.editedItem._id, | |
560 | + title: this.editedItem.title, | |
561 | + description: this.editedItem.description, | |
562 | + // imageData | |
563 | + }; | |
564 | + http() | |
565 | + .put("/updateNotification", editNotification) | |
566 | + .then(response => { | |
567 | + // console.log("editNotification",editNotification); | |
568 | + if ((this.snackbar = true)) { | |
569 | + this.text = "Successfully Edit Notification"; | |
570 | + } | |
571 | + this.getNotifications(); | |
572 | + }) | |
573 | + .catch(error => { | |
574 | + // console.log(error); | |
575 | + }); | |
576 | + this.close(); | |
577 | + }, | |
578 | + handleDrawerToggle() { | |
579 | + window.getApp.$emit("APP_DRAWER_TOGGLED"); | |
580 | + }, | |
581 | + handleFullScreen() { | |
582 | + Util.toggleFullScreen(); | |
583 | + } | |
584 | + }, | |
585 | + mounted() { | |
586 | + this.getNotifications(); | |
587 | + }, | |
588 | + computed: { | |
589 | + toolbarColor() { | |
590 | + return this.$vuetify.options.extra.mainNav; | |
591 | + } | |
592 | + } | |
593 | +}; | |
594 | +</script> | |
595 | +<style scoped> | |
596 | +.v-tabs__div { | |
597 | + text-transform: none; | |
598 | +} | |
599 | +.v-input__prepend-outer { | |
600 | + margin-right: 0px !important; | |
601 | +} | |
602 | +.v-card__actions .v-btn { | |
603 | + margin: 0 15px; | |
604 | + min-width: 120px; | |
605 | +} | |
606 | +.primary { | |
607 | + background-color: #aaa !important; | |
608 | + border-color: #aaa !important; | |
609 | +} | |
610 | +h4 { | |
611 | + background-repeat: no-repeat; | |
612 | + padding: 8px; | |
613 | + margin: auto; | |
614 | + font-size: 25px; | |
615 | +} | |
616 | +#name { | |
617 | + position: absolute; | |
618 | + left: 100px; | |
619 | + top: 17px; | |
620 | +} | |
621 | +#icon { | |
622 | + position: absolute; | |
623 | + right: 8px; | |
624 | + top: 8px; | |
625 | +} | |
626 | +#m { | |
627 | + position: relative; | |
628 | + left: 135px; | |
629 | + top: -15px; | |
630 | +} | |
631 | +#G { | |
632 | + position: absolute; | |
633 | + top: 38px; | |
634 | + color: white; | |
635 | +} | |
636 | +#bt { | |
637 | + position: relative; | |
638 | + top: -20px; | |
639 | + left: 115px; | |
640 | +} | |
641 | +#e { | |
642 | + position: relative; | |
643 | + top: 5px; | |
644 | + right: -30px; | |
645 | + height: 17px; | |
646 | + cursor: pointer; | |
647 | +} | |
648 | +#d { | |
649 | + position: relative; | |
650 | + top: 5px; | |
651 | + right: -70px; | |
652 | + height: 17px; | |
653 | + cursor: pointer; | |
654 | +} | |
655 | +#td { | |
656 | + border: 1px solid #dddddd; | |
657 | + text-align: left; | |
658 | + padding: 8px; | |
659 | +} | |
660 | +#dialog { | |
661 | + height: 550px; | |
662 | +} | |
663 | +.active { | |
664 | + background-color: black; | |
665 | + color: white !important; | |
666 | +} | |
667 | +.activebtn { | |
668 | + color: black !important; | |
669 | +} | |
670 | +#flex { | |
671 | + height: 300px; | |
672 | +} | |
673 | +.top { | |
674 | + margin-top: 100px; | |
675 | +} | |
676 | +.v-tabs__item a { | |
677 | + font-size: 16px !important; | |
678 | +} | |
679 | +@media screen and (max-width: 769px) { | |
680 | + .top { | |
681 | + margin-top: 0 !important; | |
682 | + } | |
683 | + .userSearch .v-icon { | |
684 | + font-size: 20px !important; | |
685 | + margin-left: 20px; | |
686 | + } | |
687 | +} | |
688 | +@media screen and (max-width: 380px) { | |
689 | + .right { | |
690 | + float: none !important; | |
691 | + } | |
692 | + .subheading { | |
693 | + font-size: 14px !important; | |
694 | + } | |
695 | + .v-card__actions .v-btn { | |
696 | + margin: 0 0px; | |
697 | + min-width: 100px; | |
698 | + } | |
699 | + /* .searchIcon .v-icon { | |
700 | + font-size: 20px; | |
701 | + margin-left: 20px; | |
702 | +} */ | |
703 | + .subheading { | |
704 | + font-size: 12px !important; | |
705 | + } | |
706 | + h5 { | |
707 | + font-size: 13px; | |
708 | + } | |
709 | +} | |
710 | +.v-icon { | |
711 | + font-size: 30px; | |
712 | +} | |
713 | +@media screen and (min-width: 1270px) { | |
714 | + .hide { | |
715 | + display: none; | |
716 | + } | |
717 | + /* } | |
718 | +@media screen and (max-width: 962px) { | |
719 | +.imglogo{ | |
720 | + position: absolute; | |
721 | + top: 13px; | |
722 | + left: 13px !important; | |
723 | + width: 70px; | |
724 | + height: 24px; | |
725 | +} */ | |
726 | +} | |
727 | +@media screen and (max-width: 420px) { | |
728 | + .userSearch .v-text-field .v-label { | |
729 | + line-height: 24px !important; | |
730 | + } | |
731 | + .userSearch .v-label { | |
732 | + font-size: 13px !important; | |
733 | + } | |
734 | + .v-list__tile { | |
735 | + font-size: 14px; | |
736 | + padding: 0 10px; | |
737 | + } | |
738 | + .name { | |
739 | + font-size: 15px; | |
740 | + } | |
741 | +} | |
742 | +</style> | |
0 | 743 | \ No newline at end of file | ... | ... |
src/pages/Reminder/reminder.vue
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 | <v-text-field |
10 | 10 | flat |
11 | 11 | append-icon="search" |
12 | - label="Find your Teachers" | |
12 | + label="Find your Reminder Data" | |
13 | 13 | v-model="search" |
14 | 14 | color="white" |
15 | 15 | dark |
... | ... | @@ -354,16 +354,11 @@ export default { |
354 | 354 | date: null, |
355 | 355 | search: "", |
356 | 356 | showLoader:false, |
357 | - menu: false, | |
358 | - menu1: false, | |
359 | 357 | dialog: false, |
360 | 358 | dialog1: false, |
361 | 359 | valid: true, |
362 | 360 | isActive: true, |
363 | 361 | newActive: false, |
364 | - addclass: [], | |
365 | - addSection: [], | |
366 | - gender: ["Male", "Female"], | |
367 | 362 | AddUsercredentials: {}, |
368 | 363 | pagination: { |
369 | 364 | rowsPerPage: 15 |
... | ... | @@ -374,13 +369,6 @@ export default { |
374 | 369 | imageFile: "", |
375 | 370 | titleRules: [v => !!v || " Tilte is required"], |
376 | 371 | descriptionRules: [v => !!v || " Description is required"], |
377 | - errorMessages: "", | |
378 | - emailRules: [ | |
379 | - v => !!v || "E-mail is required", | |
380 | - v => | |
381 | - /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(v) || | |
382 | - "E-mail must be valid" | |
383 | - ], | |
384 | 372 | headers: [ |
385 | 373 | { |
386 | 374 | text: "No", |
... | ... | @@ -424,14 +412,6 @@ export default { |
424 | 412 | } |
425 | 413 | ] |
426 | 414 | }), |
427 | - watch: { | |
428 | - menu(val) { | |
429 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); | |
430 | - }, | |
431 | - menu1(val) { | |
432 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); | |
433 | - } | |
434 | - }, | |
435 | 415 | methods: { |
436 | 416 | pickFile() { |
437 | 417 | this.$refs.image.click(); |
... | ... | @@ -601,19 +581,6 @@ export default { |
601 | 581 | }, |
602 | 582 | mounted() { |
603 | 583 | this.getReminderList(); |
604 | - // var token = this.$store.state.token; | |
605 | - // http() | |
606 | - // .get("/getReminderList", { | |
607 | - // headers: { Authorization: "Bearer " + token } | |
608 | - // }) | |
609 | - // .then(response => { | |
610 | - // this.addclass = response.data.data; | |
611 | - // // console.log("getClassesList=====>",this.addclass) | |
612 | - // }) | |
613 | - // .catch(err => { | |
614 | - // // console.log("err====>", err); | |
615 | - // this.$router.replace({ path: "/" }); | |
616 | - // }); | |
617 | 584 | }, |
618 | 585 | computed: { |
619 | 586 | toolbarColor() { | ... | ... |
src/pages/Section/section.vue
... | ... | @@ -13,7 +13,7 @@ |
13 | 13 | <v-text-field |
14 | 14 | flat |
15 | 15 | append-icon="search" |
16 | - label="Find your Teachers" | |
16 | + label="Find your Section Data" | |
17 | 17 | v-model="search" |
18 | 18 | color="white" |
19 | 19 | dark |
... | ... | @@ -325,8 +325,6 @@ export default { |
325 | 325 | loading: false, |
326 | 326 | date:null, |
327 | 327 | search: '', |
328 | - menu: false, | |
329 | - menu1:false, | |
330 | 328 | dialog: false, |
331 | 329 | dialog1: false, |
332 | 330 | valid: true, |
... | ... | @@ -348,8 +346,8 @@ export default { |
348 | 346 | sortable: false, |
349 | 347 | value: "No" |
350 | 348 | }, |
351 | - { text: "Class Name", value: "name", sortable: false, align: "center" }, | |
352 | - { text: "Section Name", value: "sectionName", sortable: false, align: "center" }, | |
349 | + { text: "Class Name", value: "classData.classNum", sortable: false, align: "center" }, | |
350 | + { text: "Section Name", value: "name", sortable: false, align: "center" }, | |
353 | 351 | { text: "Action", value: "", sortable: false, align: "center" } |
354 | 352 | ], |
355 | 353 | desserts: [], |
... | ... | @@ -384,15 +382,7 @@ export default { |
384 | 382 | } |
385 | 383 | ] |
386 | 384 | }), |
387 | - watch: { | |
388 | - menu (val) { | |
389 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = 'YEAR')) | |
390 | - }, | |
391 | - menu1 (val) { | |
392 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = 'YEAR')) | |
393 | - } | |
394 | - }, | |
395 | - methods: { | |
385 | + methods: { | |
396 | 386 | getSectionList() { |
397 | 387 | this.showLoader = true; |
398 | 388 | var token = this.$store.state.token; | ... | ... |
src/pages/TimeTable/timeTable.vue
... | ... | @@ -9,7 +9,7 @@ |
9 | 9 | <v-text-field |
10 | 10 | flat |
11 | 11 | append-icon="search" |
12 | - label="Find your Teachers" | |
12 | + label="Find your Time Talbe" | |
13 | 13 | v-model="search" |
14 | 14 | color="white" |
15 | 15 | dark |
... | ... | @@ -111,12 +111,12 @@ |
111 | 111 | <label class="right">class No:</label> |
112 | 112 | </v-flex> |
113 | 113 | <v-flex xs12 sm5 class="ml-3"> |
114 | - <v-select | |
114 | + <v-select | |
115 | 115 | :items="addclass" |
116 | 116 | label="Select Class" |
117 | 117 | v-model="editedItem.classNum" |
118 | 118 | item-text="classNum" |
119 | - item-value= "_id" | |
119 | + item-value="_id" | |
120 | 120 | @change="getSections(editedItem.classNum)" |
121 | 121 | ></v-select> |
122 | 122 | </v-flex> |
... | ... | @@ -133,7 +133,7 @@ |
133 | 133 | label="Select Section" |
134 | 134 | v-model="editedItem.selectSection" |
135 | 135 | item-text="name" |
136 | - item-value="_id" | |
136 | + item-value="_id" | |
137 | 137 | ></v-select> |
138 | 138 | </v-flex> |
139 | 139 | </v-layout> |
... | ... | @@ -235,7 +235,6 @@ |
235 | 235 | <v-spacer></v-spacer> |
236 | 236 | <!-- <v-btn round dark @click="updateParticularTable">Save</v-btn> --> |
237 | 237 | <v-btn round dark @click="AddLecture">Save</v-btn> |
238 | - | |
239 | 238 | </v-card-actions> |
240 | 239 | </v-flex> |
241 | 240 | </v-layout> |
... | ... | @@ -322,7 +321,6 @@ |
322 | 321 | <v-btn round dark @click.native="closeUpdateLectures">Cancel</v-btn> |
323 | 322 | <v-spacer></v-spacer> |
324 | 323 | <v-btn round dark @click="updateParticularTable">Save</v-btn> |
325 | - | |
326 | 324 | </v-card-actions> |
327 | 325 | </v-flex> |
328 | 326 | </v-layout> |
... | ... | @@ -331,7 +329,7 @@ |
331 | 329 | </v-card> |
332 | 330 | </v-flex> |
333 | 331 | </v-dialog> |
334 | - | |
332 | + | |
335 | 333 | <v-snackbar |
336 | 334 | :timeout="timeout" |
337 | 335 | :top="y === 'top'" |
... | ... | @@ -343,7 +341,13 @@ |
343 | 341 | |
344 | 342 | <!-- ****** EXISTING-USERS TIME-TABLE ****** --> |
345 | 343 | <v-flex xs12> |
346 | - <v-data-table :headers="headers" :items="desserts" item-key="_id"> | |
344 | + <v-data-table | |
345 | + :headers="headers" | |
346 | + :items="desserts" | |
347 | + :pagination.sync="pagination" | |
348 | + :search="search" | |
349 | + item-key="_id" | |
350 | + > | |
347 | 351 | <template slot="items" slot-scope="props"> |
348 | 352 | <tr |
349 | 353 | style="cursor: pointer;" |
... | ... | @@ -379,37 +383,50 @@ |
379 | 383 | > |
380 | 384 | <template slot="items" slot-scope="props"> |
381 | 385 | <tr> |
382 | - <td class="text-xs-left subheading"> <b> {{ props.item.day }} </b> </td> | |
386 | + <td class="text-xs-left subheading"> | |
387 | + <b>{{ props.item.day }}</b> | |
388 | + </td> | |
383 | 389 | <td> |
384 | - <b> Subject</b><br/> | |
385 | - <b> Time In</b><br/> | |
386 | - <b> Time Out</b> | |
390 | + <b>Subject</b> | |
391 | + <br> | |
392 | + <b>Time In</b> | |
393 | + <br> | |
394 | + <b>Time Out</b> | |
387 | 395 | </td> |
388 | 396 | <td v-for="list in props.item.lectures"> |
389 | - <b> {{ list.subjectName }} </b> | |
397 | + <b>{{ list.subjectName }}</b> | |
390 | 398 | <img |
391 | - style="cursor:pointer; width:20px; height:18px; " | |
392 | - class="mr-2 ml-2" | |
393 | - src="/static/icon/edit1.png" | |
394 | - @click="updateTimeTable(list, timeTableList)" | |
395 | - > | |
396 | - <img | |
397 | - style="cursor:pointer; height:20px; " | |
398 | - src="/static/icon/delete1.png" | |
399 | - @click="deleteTimeTable(list, timeTableList)" | |
400 | - > | |
401 | - <br/> {{list.timeIn.slice(0,16)}} <br/> {{list.timeOut.slice(0,16)}} | |
399 | + style="cursor:pointer; width:20px; height:18px; " | |
400 | + class="mr-2 ml-2" | |
401 | + src="/static/icon/edit1.png" | |
402 | + @click="updateTimeTable(list, timeTableList)" | |
403 | + > | |
404 | + <img | |
405 | + style="cursor:pointer; height:20px; " | |
406 | + src="/static/icon/delete1.png" | |
407 | + @click="deleteTimeTable(list, timeTableList)" | |
408 | + > | |
409 | + <br> | |
410 | + {{list.timeIn.slice(0,16)}} | |
411 | + <br> | |
412 | + {{list.timeOut.slice(0,16)}} | |
402 | 413 | </td> |
403 | - <td > | |
404 | - <v-icon | |
405 | - color="black" | |
406 | - @click="addLecture(props.item._id, timeTableList._id)" | |
407 | - >add_circle_outline</v-icon> | |
414 | + <td> | |
415 | + <v-icon | |
416 | + color="black" | |
417 | + @click="addLecture(props.item._id, timeTableList._id)" | |
418 | + >add_circle_outline</v-icon> | |
408 | 419 | </td> |
409 | 420 | </tr> |
410 | 421 | </template> |
411 | 422 | </v-data-table> |
412 | 423 | </template> |
424 | + <v-alert | |
425 | + slot="no-results" | |
426 | + :value="true" | |
427 | + color="error" | |
428 | + icon="warning" | |
429 | + >Your search for "{{ search }}" found no results.</v-alert> | |
413 | 430 | </v-data-table> |
414 | 431 | <br> |
415 | 432 | <br> |
... | ... | @@ -625,11 +642,9 @@ export default { |
625 | 642 | snackbar: false, |
626 | 643 | loading: false, |
627 | 644 | showLoader: false, |
628 | - menu: false, | |
629 | - menu1: false, | |
630 | 645 | dialog: false, |
631 | - dialogAddLecture : false, | |
632 | - dialogUpdateLectures:false, | |
646 | + dialogAddLecture: false, | |
647 | + dialogUpdateLectures: false, | |
633 | 648 | dialog1: false, |
634 | 649 | valid: true, |
635 | 650 | // validLeacture:true, |
... | ... | @@ -660,13 +675,13 @@ export default { |
660 | 675 | }, |
661 | 676 | { |
662 | 677 | text: "Class Name", |
663 | - value: "subjectName", | |
678 | + value: "classData.classNum", | |
664 | 679 | sortable: false, |
665 | 680 | align: "center" |
666 | 681 | }, |
667 | 682 | { |
668 | 683 | text: "Section Name", |
669 | - value: "sectionData", | |
684 | + value: "sectionData.name", | |
670 | 685 | sortable: false, |
671 | 686 | align: "center" |
672 | 687 | }, |
... | ... | @@ -706,24 +721,24 @@ export default { |
706 | 721 | selectTeacher: "" |
707 | 722 | }, |
708 | 723 | editedItem: { |
709 | - classNum:"", | |
724 | + classNum: "", | |
710 | 725 | selectSection: "" |
711 | 726 | }, |
712 | 727 | addlectures: { |
713 | - timeIn: "", | |
714 | - timeOut: "", | |
715 | - subjectName: "", | |
716 | - teacherId: "", | |
717 | - scheduleId:"", | |
718 | - timeTableId:"" | |
728 | + timeIn: "", | |
729 | + timeOut: "", | |
730 | + subjectName: "", | |
731 | + teacherId: "", | |
732 | + scheduleId: "", | |
733 | + timeTableId: "" | |
719 | 734 | }, |
720 | - updateLectures:{ | |
721 | - timeIn: "", | |
722 | - timeOut: "", | |
723 | - subjectName: "", | |
724 | - teacherId: "", | |
725 | - lectureId:"", | |
726 | - scheduleId:"", | |
735 | + updateLectures: { | |
736 | + timeIn: "", | |
737 | + timeOut: "", | |
738 | + subjectName: "", | |
739 | + teacherId: "", | |
740 | + lectureId: "", | |
741 | + scheduleId: "" | |
727 | 742 | }, |
728 | 743 | items: [ |
729 | 744 | { |
... | ... | @@ -742,14 +757,6 @@ export default { |
742 | 757 | } |
743 | 758 | ] |
744 | 759 | }), |
745 | - watch: { | |
746 | - menu(val) { | |
747 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); | |
748 | - }, | |
749 | - menu1(val) { | |
750 | - val && this.$nextTick(() => (this.$refs.picker.activePicker = "YEAR")); | |
751 | - } | |
752 | - }, | |
753 | 760 | methods: { |
754 | 761 | getSections(_id) { |
755 | 762 | var token = this.$store.state.token; |
... | ... | @@ -841,31 +848,35 @@ export default { |
841 | 848 | this.editedItem = Object.assign({}, item); |
842 | 849 | this.dialog = true; |
843 | 850 | }, |
844 | - updateTimeTable(timeToUpdate, classToUpdate){ | |
845 | - console.log('timeToUpdate, classToUpdate', timeToUpdate._id, classToUpdate.schedule); | |
846 | - for (let i = 0; i < classToUpdate.schedule.length; i++){ | |
847 | - this.updateLectures.scheduleId = classToUpdate.schedule[i]._id; | |
851 | + updateTimeTable(timeToUpdate, classToUpdate) { | |
852 | + console.log( | |
853 | + "timeToUpdate, classToUpdate", | |
854 | + timeToUpdate._id, | |
855 | + classToUpdate.schedule | |
856 | + ); | |
857 | + for (let i = 0; i < classToUpdate.schedule.length; i++) { | |
858 | + this.updateLectures.scheduleId = classToUpdate.schedule[i]._id; | |
848 | 859 | } |
849 | - this.updateLectures.lectureId = timeToUpdate._id, | |
850 | - this.updateLectures= timeToUpdate | |
860 | + (this.updateLectures.lectureId = timeToUpdate._id), | |
861 | + (this.updateLectures = timeToUpdate); | |
851 | 862 | this.dialogUpdateLectures = true; |
852 | 863 | }, |
853 | - addLecture(scheduleId, timeTableId){ | |
864 | + addLecture(scheduleId, timeTableId) { | |
854 | 865 | // console.log('timeToAdd, classToAdd', scheduleId, timeTableId); |
855 | - this.addlectures.scheduleId = scheduleId | |
856 | - this.addlectures.timeTableId = timeTableId | |
866 | + this.addlectures.scheduleId = scheduleId; | |
867 | + this.addlectures.timeTableId = timeTableId; | |
857 | 868 | this.dialogAddLecture = true; |
858 | 869 | }, |
859 | - AddLecture(){ | |
870 | + AddLecture() { | |
860 | 871 | if (this.$refs.form.validate()) { |
861 | - http() | |
872 | + http() | |
862 | 873 | .post("/addLecture", this.addlectures) |
863 | 874 | .then(response => { |
864 | 875 | // console.log("addTimeTable=====>", this.addlectures); |
865 | 876 | if ((this.snackbar = true)) { |
866 | 877 | this.text = "New Add Lecture successfully"; |
867 | 878 | } |
868 | - this.closedialogLecture(); | |
879 | + this.closedialogLecture(); | |
869 | 880 | }) |
870 | 881 | .catch(error => { |
871 | 882 | if ((this.snackbar = true)) { |
... | ... | @@ -874,31 +885,31 @@ export default { |
874 | 885 | }); |
875 | 886 | } |
876 | 887 | }, |
877 | - updateParticularTable(){ | |
878 | - let EditLecture = { | |
879 | - lectureId:this.updateLectures.lectureId, | |
880 | - scheduleId:this.updateLectures.scheduleId, | |
881 | - updatedLecture:{ | |
882 | - timeIn:this.updateLectures.timeIn, | |
883 | - timeOut: this.updateLectures.timeOut, | |
884 | - subjectName: this.updateLectures.subjectName, | |
885 | - teacherId: this.updateLectures.teacherId, | |
886 | - } | |
887 | - } | |
888 | + updateParticularTable() { | |
889 | + let EditLecture = { | |
890 | + lectureId: this.updateLectures.lectureId, | |
891 | + scheduleId: this.updateLectures.scheduleId, | |
892 | + updatedLecture: { | |
893 | + timeIn: this.updateLectures.timeIn, | |
894 | + timeOut: this.updateLectures.timeOut, | |
895 | + subjectName: this.updateLectures.subjectName, | |
896 | + teacherId: this.updateLectures.teacherId | |
897 | + } | |
898 | + }; | |
888 | 899 | console.log("updateLecture", EditLecture); |
889 | - http() | |
890 | - .put("/updateLecture", EditLecture) | |
891 | - .then(response => { | |
892 | - console.log("updateLecture", EditLecture); | |
893 | - if ((this.snackbar = true)) { | |
894 | - this.text = "Successfully Edit Update Lecture"; | |
895 | - } | |
896 | - this.$router.go(0) | |
897 | - }) | |
898 | - .catch(error => { | |
899 | - // console.log(error); | |
900 | - }); | |
901 | - this.closeUpdateLectures() | |
900 | + http() | |
901 | + .put("/updateLecture", EditLecture) | |
902 | + .then(response => { | |
903 | + console.log("updateLecture", EditLecture); | |
904 | + if ((this.snackbar = true)) { | |
905 | + this.text = "Successfully Edit Update Lecture"; | |
906 | + } | |
907 | + this.$router.go(0); | |
908 | + }) | |
909 | + .catch(error => { | |
910 | + // console.log(error); | |
911 | + }); | |
912 | + this.closeUpdateLectures(); | |
902 | 913 | }, |
903 | 914 | deleteItem(item) { |
904 | 915 | let deleteTimeTable = { |
... | ... | @@ -942,14 +953,14 @@ export default { |
942 | 953 | this.editedIndex = -1; |
943 | 954 | }, 300); |
944 | 955 | }, |
945 | - close1() { | |
956 | + close1() { | |
946 | 957 | this.dialog1 = false; |
947 | 958 | }, |
948 | 959 | closedialogLecture() { |
949 | 960 | this.dialogAddLecture = false; |
950 | - this.$router.go(0) | |
961 | + this.$router.go(0); | |
951 | 962 | }, |
952 | - closeUpdateLectures(){ | |
963 | + closeUpdateLectures() { | |
953 | 964 | this.dialogUpdateLectures = false; |
954 | 965 | }, |
955 | 966 | submit() { |
... | ... | @@ -1008,18 +1019,18 @@ export default { |
1008 | 1019 | sectionId: this.editedItem.selectSection |
1009 | 1020 | // imageData |
1010 | 1021 | }; |
1011 | - http() | |
1012 | - .put("/updateTimeTable", editTimeTable) | |
1013 | - .then(response => { | |
1014 | - console.log("editTimeTable",editTimeTable); | |
1015 | - if ((this.snackbar = true)) { | |
1016 | - this.text = "Successfully Edit Existing User"; | |
1017 | - } | |
1018 | - this.getTimeTableList(); | |
1019 | - }) | |
1020 | - .catch(error => { | |
1021 | - // console.log(error); | |
1022 | - }); | |
1022 | + http() | |
1023 | + .put("/updateTimeTable", editTimeTable) | |
1024 | + .then(response => { | |
1025 | + console.log("editTimeTable", editTimeTable); | |
1026 | + if ((this.snackbar = true)) { | |
1027 | + this.text = "Successfully Edit Existing User"; | |
1028 | + } | |
1029 | + this.getTimeTableList(); | |
1030 | + }) | |
1031 | + .catch(error => { | |
1032 | + // console.log(error); | |
1033 | + }); | |
1023 | 1034 | this.close(); |
1024 | 1035 | }, |
1025 | 1036 | handleDrawerToggle() { |
... | ... | @@ -1028,7 +1039,7 @@ export default { |
1028 | 1039 | handleFullScreen() { |
1029 | 1040 | Util.toggleFullScreen(); |
1030 | 1041 | }, |
1031 | - deleteTimeTable(timeToDelete){ | |
1042 | + deleteTimeTable(timeToDelete) { | |
1032 | 1043 | // console.log('timeToUpdate', timeToDelete._id); |
1033 | 1044 | let deleteLecture = { |
1034 | 1045 | lectureId: timeToDelete._id |
... | ... | @@ -1045,13 +1056,13 @@ export default { |
1045 | 1056 | if ((this.snackbar = true)) { |
1046 | 1057 | this.text = "Successfully delete Existing User"; |
1047 | 1058 | } |
1048 | - this.$router.go(0) | |
1059 | + this.$router.go(0); | |
1049 | 1060 | // this.getTimeTable(); |
1050 | 1061 | }) |
1051 | 1062 | .catch(error => { |
1052 | 1063 | console.log(error); |
1053 | 1064 | }); |
1054 | - }, | |
1065 | + } | |
1055 | 1066 | }, |
1056 | 1067 | mounted() { |
1057 | 1068 | this.getTimeTableList(); |
... | ... | @@ -1088,8 +1099,9 @@ export default { |
1088 | 1099 | }; |
1089 | 1100 | </script> |
1090 | 1101 | <style scoped> |
1091 | -.theme--light .v-label, .application .theme--light.v-label { | |
1092 | - color: black; | |
1102 | +.theme--light .v-label, | |
1103 | +.application .theme--light.v-label { | |
1104 | + color: black; | |
1093 | 1105 | } |
1094 | 1106 | .v-tabs__div { |
1095 | 1107 | text-transform: none; | ... | ... |
src/router/paths.js
... | ... | @@ -154,5 +154,16 @@ export default [ |
154 | 154 | /* webpackMode: "lazy-once" */ |
155 | 155 | `@/pages/TimeTable/timeTable.vue` |
156 | 156 | ) |
157 | + }, | |
158 | + { | |
159 | + path: '/notification', | |
160 | + meta: { }, | |
161 | + name: 'notification', | |
162 | + props: (route) => ({ type: route.query.type }), | |
163 | + component: () => import( | |
164 | + /* webpackChunkName: "routes" */ | |
165 | + /* webpackMode: "lazy-once" */ | |
166 | + `@/pages/Notification/notification.vue` | |
167 | + ) | |
157 | 168 | } |
158 | 169 | ]; | ... | ... |