Commit 1c69557ac3f458e77fc45d3ca2622783b10cc2dc

Authored by Neeraj Sharma
1 parent 00e4bc4e16

implement design bulkImport

1 const adminMenu = [ 1 const adminMenu = [
2 // { header: 'Apps' }, 2 // { header: 'Apps' },
3 { 3 {
4 title: 'Dashboard', 4 title: 'Dashboard',
5 // group: 'apps', 5 // group: 'apps',
6 path: '/dashboard', 6 path: '/dashboard',
7 icon: '/static/schoolIcons/Dashboard.png', 7 icon: '/static/schoolIcons/Dashboard.png',
8 }, 8 },
9 { 9 {
10 title: 'Class', 10 title: 'Class',
11 // group: 'apps', 11 // group: 'apps',
12 path: '/addclass', 12 path: '/addclass',
13 icon: '/static/schoolIcons/Class.png', 13 icon: '/static/schoolIcons/Class.png',
14 }, 14 },
15 { 15 {
16 title: 'Section', 16 title: 'Section',
17 // group: 'apps', 17 // group: 'apps',
18 path: '/section', 18 path: '/section',
19 icon: '/static/schoolIcons/Section.png', 19 icon: '/static/schoolIcons/Section.png',
20 }, 20 },
21 { 21 {
22 title: 'Subjects', 22 title: 'Subjects',
23 path: '/subject', 23 path: '/subject',
24 icon: '/static/schoolIcons/Subjects.png', 24 icon: '/static/schoolIcons/Subjects.png',
25 }, 25 },
26 { 26 {
27 title: 'Parents', 27 title: 'Parents',
28 // group: 'apps', 28 // group: 'apps',
29 path: '/parents', 29 path: '/parents',
30 icon: '/static/schoolIcons/Parents.png', 30 icon: '/static/schoolIcons/Parents.png',
31 }, 31 },
32 { 32 {
33 title: 'Teachers', 33 title: 'Teachers',
34 // group: '', 34 // group: '',
35 path: 'teachers', 35 path: 'teachers',
36 icon: '/static/schoolIcons/Teachers.png', 36 icon: '/static/schoolIcons/Teachers.png',
37 }, 37 },
38 { 38 {
39 title: 'Students', 39 title: 'Students',
40 // group: 'apps', 40 // group: 'apps',
41 path: '/Students', 41 path: '/Students',
42 icon: '/static/schoolIcons/Students.png', 42 icon: '/static/schoolIcons/Students.png',
43 }, 43 },
44 { 44 {
45 title: 'User', 45 title: 'User',
46 path: '/User', 46 path: '/User',
47 icon: '/static/schoolIcons/User.png', 47 icon: '/static/schoolIcons/User.png',
48 }, 48 },
49 { 49 {
50 title: 'Attendance', 50 title: 'Attendance',
51 group: 'Attendance', 51 group: 'Attendance',
52 component: 'Attendance', 52 component: 'Attendance',
53 icon: '/static/schoolIcons/Attendance.png', 53 icon: '/static/schoolIcons/Attendance.png',
54 items: [ 54 items: [
55 { name: 'studentAttendence', title: 'Student Attendance', component: 'studentAttendence', action: '', }, 55 { name: 'studentAttendence', title: 'Student Attendance', component: 'studentAttendence', action: '', },
56 // { name: 'teacherAttendence', title: 'Teacher Attendance', component: 'teacherAttendence', action: '', }, 56 // { name: 'teacherAttendence', title: 'Teacher Attendance', component: 'teacherAttendence', action: '', },
57 // { name: 'userAttendence', title: 'User Attendance', component: 'userAttendence', action: '', }, 57 // { name: 'userAttendence', title: 'User Attendance', component: 'userAttendence', action: '', },
58 ] 58 ]
59 }, 59 },
60 { 60 {
61 title: 'Exam', 61 title: 'Exam',
62 group: 'Exam', 62 group: 'Exam',
63 component: 'Exam', 63 component: 'Exam',
64 icon: '/static/schoolIcons/exam.png', 64 icon: '/static/schoolIcons/exam.png',
65 items: [ 65 items: [
66 { name: 'Exam', title: 'Exam', component: 'Exam', action: '', }, 66 { name: 'Exam', title: 'Exam', component: 'Exam', action: '', },
67 { name: 'ExamSchedule', title: 'Exam Schedule', component: 'ExamSchedule', action: '', }, 67 { name: 'ExamSchedule', title: 'Exam Schedule', component: 'ExamSchedule', action: '', },
68 { name: 'Grade', title: 'Grade', component: 'Grade', action: '', }, 68 { name: 'Grade', title: 'Grade', component: 'Grade', action: '', },
69 // { name: 'userAttendence', title: 'User Attendance', component: 'userAttendence', action: '', }, 69 // { name: 'userAttendence', title: 'User Attendance', component: 'userAttendence', action: '', },
70 ] 70 ]
71 }, 71 },
72 { 72 {
73 title: 'Mark', 73 title: 'Mark',
74 group: 'Mark', 74 group: 'Mark',
75 component: 'Mark', 75 component: 'Mark',
76 icon: '/static/schoolIcons/marks.png', 76 icon: '/static/schoolIcons/marks.png',
77 items: [ 77 items: [
78 { name: 'Mark', title: 'Mark', component: 'Mark', action: '', }, 78 { name: 'Mark', title: 'Mark', component: 'Mark', action: '', },
79 { name: 'markDistribution', title: 'Mark Distribution', component: 'markDistribution', action: '', }, 79 { name: 'markDistribution', title: 'Mark Distribution', component: 'markDistribution', action: '', },
80 { name: 'Promotion', title: 'promotion', component: 'Promotion', action: '', }, 80 { name: 'Promotion', title: 'promotion', component: 'Promotion', action: '', },
81 // { name: 'userAttendence', title: 'User Attendance', component: 'userAttendence', action: '', }, 81 // { name: 'userAttendence', title: 'User Attendance', component: 'userAttendence', action: '', },
82 ] 82 ]
83 }, 83 },
84 { 84 {
85 title: 'Administrator', 85 title: 'Administrator',
86 group: 'Administrator', 86 group: 'Administrator',
87 component: 'Administrator', 87 component: 'Administrator',
88 icon: '/static/schoolIcons/administrator.png', 88 icon: '/static/schoolIcons/administrator.png',
89 items: [ 89 items: [
90 { name: 'academicYear', title: 'Academic Year', component: 'academicYear', action: '', }, 90 { name: 'academicYear', title: 'Academic Year', component: 'academicYear', action: '', },
91 { name: 'systemAdmin', title: 'System Admin', component: 'systemAdmin', action: '', }, 91 { name: 'systemAdmin', title: 'System Admin', component: 'systemAdmin', action: '', },
92 { name: 'resetPassword', title: 'Reset Password', component: 'resetPassword', action: '', }, 92 { name: 'resetPassword', title: 'Reset Password', component: 'resetPassword', action: '', },
93 { name: 'Role', title: 'Role', component: 'Role', action: '', }, 93 { name: 'Role', title: 'Role', component: 'Role', action: '', },
94 { name: 'bulkImportole', title: 'Bulk Import', component: 'bulkImport', action: '', },
95
94 ] 96 ]
95 }, 97 },
96 { 98 {
97 title: 'Notice Board', 99 title: 'Notice Board',
98 path: '/NoticeBoard', 100 path: '/NoticeBoard',
99 icon: '/static/schoolIcons/Notice_board.png', 101 icon: '/static/schoolIcons/Notice_board.png',
100 }, 102 },
101 { 103 {
102 title: 'News', 104 title: 'News',
103 path: '/news', 105 path: '/news',
104 icon: '/static/schoolIcons/News.png', 106 icon: '/static/schoolIcons/News.png',
105 }, 107 },
106 // { 108 // {
107 // title: 'Reminder', 109 // title: 'Reminder',
108 // name: 'reminder', 110 // name: 'reminder',
109 // icon: 'alarm_add', 111 // icon: 'alarm_add',
110 // }, 112 // },
111 { 113 {
112 title: 'Time Table', 114 title: 'Time Table',
113 path: '/timeTable', 115 path: '/timeTable',
114 icon: '/static/schoolIcons/Time_table.png', 116 icon: '/static/schoolIcons/Time_table.png',
115 }, 117 },
116 { 118 {
117 title: 'Library', 119 title: 'Library',
118 group: 'Library', 120 group: 'Library',
119 component: 'Library', 121 component: 'Library',
120 icon: '/static/schoolIcons/Library.png', 122 icon: '/static/schoolIcons/Library.png',
121 items: [ 123 items: [
122 { name: 'libraryMember', title: ' Library Member', component: 'libraryMember', action: '', }, 124 { name: 'libraryMember', title: ' Library Member', component: 'libraryMember', action: '', },
123 { name: 'Books', title: 'Books', component: 'Books', action: '', }, 125 { name: 'Books', title: 'Books', component: 'Books', action: '', },
124 { name: 'Issue', title: ' Issue', component: 'Issue', action: '', }, 126 { name: 'Issue', title: ' Issue', component: 'Issue', action: '', },
125 { name: 'eBooks', title: 'E-Books', component: 'eBooks', action: '', } 127 { name: 'eBooks', title: 'E-Books', component: 'eBooks', action: '', }
126 128
127 ] 129 ]
128 }, 130 },
129 { 131 {
130 title: 'Report', 132 title: 'Report',
131 group: 'Report', 133 group: 'Report',
132 component: 'Report', 134 component: 'Report',
133 icon: '/static/schoolIcons/reports.png', 135 icon: '/static/schoolIcons/reports.png',
134 items: [ 136 items: [
135 { name: 'studentReport', title: 'Student Report', component: 'studentReport', action: '', }, 137 { name: 'studentReport', title: 'Student Report', component: 'studentReport', action: '', },
136 { name: 'progressCardReport', title: 'Progress Card Report', component: 'progressCardReport', action: '', } 138 { name: 'progressCardReport', title: 'Progress Card Report', component: 'progressCardReport', action: '', }
137 ] 139 ]
138 }, 140 },
139 { 141 {
140 title: 'Notification', 142 title: 'Notification',
141 path: '/notification', 143 path: '/notification',
142 icon: '/static/schoolIcons/Notification.png', 144 icon: '/static/schoolIcons/Notification.png',
143 }, 145 },
144 { 146 {
145 title: 'Social Media', 147 title: 'Social Media',
146 path: '/SocialMedia', 148 path: '/SocialMedia',
147 icon: '/static/schoolIcons/Social_Media.png', 149 icon: '/static/schoolIcons/Social_Media.png',
148 }, 150 },
149 { 151 {
150 title: 'Gallery', 152 title: 'Gallery',
151 path: '/Gallery', 153 path: '/Gallery',
152 icon: '/static/schoolIcons/Gallery.png', 154 icon: '/static/schoolIcons/Gallery.png',
153 }, 155 },
154 { 156 {
155 title: 'Event', 157 title: 'Event',
156 path: '/Event', 158 path: '/Event',
157 icon: '/static/schoolIcons/Events.png', 159 icon: '/static/schoolIcons/Events.png',
158 }, 160 },
159 { 161 {
160 title: 'Account', 162 title: 'Account',
161 group: 'Account', 163 group: 'Account',
162 component: 'Account', 164 component: 'Account',
163 icon: '/static/schoolIcons/Account.png', 165 icon: '/static/schoolIcons/Account.png',
164 items: [ 166 items: [
165 { name: 'feeTypes', title: 'Fee Types', component: 'feeTypes', action: '', }, 167 { name: 'feeTypes', title: 'Fee Types', component: 'feeTypes', action: '', },
166 { name: 'Invoice', title: 'Invoice', component: 'Invoice', action: '', }, 168 { name: 'Invoice', title: 'Invoice', component: 'Invoice', action: '', },
167 { name: 'paymentHistory', title: 'Payment History', component: 'paymentHistory', action: '', }, 169 { name: 'paymentHistory', title: 'Payment History', component: 'paymentHistory', action: '', },
168 { name: 'Expense', title: 'Expense', component: 'Expense', action: '', }, 170 { name: 'Expense', title: 'Expense', component: 'Expense', action: '', },
169 { name: 'Income', title: 'Income', component: 'Income', action: '', }, 171 { name: 'Income', title: 'Income', component: 'Income', action: '', },
170 ] 172 ]
171 }, 173 },
172 { 174 {
173 title: 'Holiday', 175 title: 'Holiday',
174 path: '/Holiday', 176 path: '/Holiday',
175 icon: '/static/schoolIcons/Holidays.png', 177 icon: '/static/schoolIcons/Holidays.png',
176 }, 178 },
177 { 179 {
178 title: 'General Setting', 180 title: 'General Setting',
179 path: '/generalSetting', 181 path: '/generalSetting',
180 icon: '/static/schoolIcons/settings.png', 182 icon: '/static/schoolIcons/settings.png',
181 } 183 }
182 ]; 184 ];
183 185
184 const schoolMenu = [ 186 const schoolMenu = [
185 // { header: 'Apps' }, 187 // { header: 'Apps' },
186 { 188 {
187 title: 'School', 189 title: 'School',
188 // group: 'apps', 190 // group: 'apps',
189 path: '/school', 191 path: '/school',
190 icon: '/static/schoolIcons/Dashboard.png', 192 icon: '/static/schoolIcons/Dashboard.png',
191 }, 193 }
192 ]; 194 ];
193 195
194 // reorder menu 196 // reorder menu
195 // Menu.forEach((item) => { 197 // Menu.forEach((item) => {
196 // if (item.items) { 198 // if (item.items) {
197 // item.items.sort((x, y) => { 199 // item.items.sort((x, y) => {
198 // let textA = x.title.toUpperCase(); 200 // let textA = x.title.toUpperCase();
199 // let textB = y.title.toUpperCase(); 201 // let textB = y.title.toUpperCase();
200 // return (textA < textB) ? -1 : (textA > textB) ? 1 : 0; 202 // return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
201 // }); 203 // });
202 // } 204 // }
203 // }); 205 // });
204 206
205 export default { adminMenu, schoolMenu }; 207 export default { adminMenu, schoolMenu };
src/components/pageHeader/AppToolbar.vue
1 <template> 1 <template>
2 <v-toolbar class="fixcolors" fixed app> 2 <v-toolbar class="fixcolors" fixed app>
3 <v-toolbar-title class="ml-0"> 3 <v-toolbar-title class="ml-0">
4 <v-toolbar-side-icon @click.stop="handleDrawerToggle" class="hide white--text"></v-toolbar-side-icon> 4 <v-toolbar-side-icon @click.stop="handleDrawerToggle" class="hide white--text"></v-toolbar-side-icon>
5 </v-toolbar-title> 5 </v-toolbar-title>
6 6
7 <!-- ****** SEARCH ALL EXISTING STUDENTS ****** --> 7 <!-- ****** SEARCH ALL EXISTING STUDENTS ****** -->
8 <v-flex 8 <v-flex
9 xs7 9 xs7
10 sm3 10 sm3
11 class="userSearch" 11 class="userSearch"
12 v-if="$route.name != 'Dashboard' && $route.name != 'changepassword' && $route.name != 'generalSetting' && $route.name != 'resetPassword'" 12 v-if="$route.name != 'Dashboard' && $route.name != 'changepassword' && $route.name != 'generalSetting' && $route.name != 'resetPassword' && $route.name != 'bulkImport'"
13 > 13 >
14 <v-text-field 14 <v-text-field
15 flat 15 flat
16 append-icon="search" 16 append-icon="search"
17 label="Seacrh" 17 label="Seacrh"
18 class="pl-3" 18 class="pl-3"
19 color="white" 19 color="white"
20 @input.native="emitSearch" 20 @input.native="emitSearch"
21 type="text" 21 type="text"
22 dark 22 dark
23 ></v-text-field> 23 ></v-text-field>
24 </v-flex> 24 </v-flex>
25 <v-spacer></v-spacer> 25 <v-spacer></v-spacer>
26 <v-menu offset-y origin="center center" :nudge-bottom="10" transition="scale-transition"> 26 <v-menu offset-y origin="center center" :nudge-bottom="10" transition="scale-transition">
27 <v-btn icon large flat slot="activator"> 27 <v-btn icon large flat slot="activator">
28 <v-avatar> 28 <v-avatar>
29 <!-- <img src="/static/icon/user.png" /> --> 29 <!-- <img src="/static/icon/user.png" /> -->
30 <v-icon dark size="40px">account_circle</v-icon> 30 <v-icon dark size="40px">account_circle</v-icon>
31 </v-avatar> 31 </v-avatar>
32 </v-btn> 32 </v-btn>
33 <v-list class="pa-0"> 33 <v-list class="pa-0">
34 <v-list-tile 34 <v-list-tile
35 v-for="(item,index) in items" 35 v-for="(item,index) in items"
36 :to="!item.href ? { name: item.name } : null" 36 :to="!item.href ? { name: item.name } : null"
37 :href="item.href" 37 :href="item.href"
38 @click="item.click" 38 @click="item.click"
39 ripple="ripple" 39 ripple="ripple"
40 :disabled="item.disabled" 40 :disabled="item.disabled"
41 :target="item.target" 41 :target="item.target"
42 rel="noopener" 42 rel="noopener"
43 :key="index" 43 :key="index"
44 > 44 >
45 <v-list-tile-action v-if="item.icon"> 45 <v-list-tile-action v-if="item.icon">
46 <v-icon class="iconSize">{{ item.icon }}</v-icon> 46 <v-icon class="iconSize">{{ item.icon }}</v-icon>
47 </v-list-tile-action> 47 </v-list-tile-action>
48 <v-list-tile-content> 48 <v-list-tile-content>
49 <v-list-tile-title>{{ item.title }}</v-list-tile-title> 49 <v-list-tile-title>{{ item.title }}</v-list-tile-title>
50 </v-list-tile-content> 50 </v-list-tile-content>
51 </v-list-tile> 51 </v-list-tile>
52 </v-list> 52 </v-list>
53 </v-menu> 53 </v-menu>
54 </v-toolbar> 54 </v-toolbar>
55 </template> 55 </template>
56 <script> 56 <script>
57 import Util from "@/util"; 57 import Util from "@/util";
58 export default { 58 export default {
59 name: "app-toolbar", 59 name: "app-toolbar",
60 data: () => ({ 60 data: () => ({
61 userName: "", 61 userName: "",
62 search: "", 62 search: "",
63 items: [ 63 items: [
64 { 64 {
65 icon: "account_circle", 65 icon: "account_circle",
66 href: "/resetPassword", 66 href: "/resetPassword",
67 title: "Change Password", 67 title: "Change Password",
68 click: e => { 68 click: e => {
69 console.log(e); 69 console.log(e);
70 } 70 }
71 }, 71 },
72 // { 72 // {
73 // icon: 'settings', 73 // icon: 'settings',
74 // href: '#', 74 // href: '#',
75 // title: 'Settings', 75 // title: 'Settings',
76 // click: (e) => { 76 // click: (e) => {
77 // console.log(e); 77 // console.log(e);
78 // } 78 // }
79 // }, 79 // },
80 { 80 {
81 icon: "lock", 81 icon: "lock",
82 href: "#", 82 href: "#",
83 title: "Logout", 83 title: "Logout",
84 click: e => { 84 click: e => {
85 window.getApp.$emit("APP_LOGOUT"); 85 window.getApp.$emit("APP_LOGOUT");
86 } 86 }
87 } 87 }
88 ] 88 ]
89 }), 89 }),
90 computed: { 90 computed: {
91 toolbarColor() { 91 toolbarColor() {
92 return this.$vuetify.options.extra.mainNav; 92 return this.$vuetify.options.extra.mainNav;
93 } 93 }
94 }, 94 },
95 methods: { 95 methods: {
96 emitSearch(ev) { 96 emitSearch(ev) {
97 this.$root.$emit("app:search", ev.target.value); 97 this.$root.$emit("app:search", ev.target.value);
98 console.log("ev.target.value", ev.target.value); 98 console.log("ev.target.value", ev.target.value);
99 }, 99 },
100 handleDrawerToggle() { 100 handleDrawerToggle() {
101 window.getApp.$emit("APP_DRAWER_TOGGLED"); 101 window.getApp.$emit("APP_DRAWER_TOGGLED");
102 }, 102 },
103 handleFullScreen() { 103 handleFullScreen() {
104 Util.toggleFullScreen(); 104 Util.toggleFullScreen();
105 } 105 }
106 } 106 }
107 }; 107 };
108 </script> 108 </script>
109 <style> 109 <style>
110 .v-icon { 110 .v-icon {
111 font-size: 30px; 111 font-size: 30px;
112 } 112 }
113 .fixcolors { 113 .fixcolors {
114 background: #444b54 !important; 114 background: #444b54 !important;
115 } 115 }
116 @media screen and (min-width: 1270px) { 116 @media screen and (min-width: 1270px) {
117 .hide { 117 .hide {
118 display: none; 118 display: none;
119 } 119 }
120 /* } 120 /* }
121 @media screen and (max-width: 962px) { 121 @media screen and (max-width: 962px) {
122 .imglogo{ 122 .imglogo{
123 position: absolute; 123 position: absolute;
124 top: 13px; 124 top: 13px;
125 left: 13px !important; 125 left: 13px !important;
126 width: 70px; 126 width: 70px;
127 height: 24px; 127 height: 24px;
128 } */ 128 } */
129 } 129 }
130 @media screen and (max-width: 420px) { 130 @media screen and (max-width: 420px) {
131 .v-list__tile { 131 .v-list__tile {
132 font-size: 14px; 132 font-size: 14px;
133 padding: 0 10px; 133 padding: 0 10px;
134 } 134 }
135 .name { 135 .name {
136 font-size: 15px; 136 font-size: 15px;
137 } 137 }
138 } 138 }
139 </style> 139 </style>
140 140
src/pages/Administrator/bulkImport.vue
File was created 1 <template>
2 <v-container fluid grid-list-md>
3 <v-card flat>
4 <v-toolbar class="fixcolors" dark flat>
5 <v-spacer></v-spacer>
6 <v-toolbar-title>Import</v-toolbar-title>
7 <v-spacer></v-spacer>
8 </v-toolbar>
9 <v-container fluid>
10 <v-layout>
11 <v-flex xs12>
12 <v-layout wrap>
13 <v-flex xs6 sm5 lg2 class="pt-4">
14 <label class="title right">Add Teacher:</label>
15 </v-flex>
16 <v-flex xs12 sm6 lg3>
17 <v-text-field v-model="teacherFileName" placeholder="Choose file" :disabled="true"></v-text-field>
18 <input
19 type="file"
20 style="display: none"
21 ref="file"
22 @change="picFileTeacher($event)"
23 />
24 </v-flex>
25 <v-flex xs6 sm4 lg2 class="mt-1">
26 <v-btn class="grey" dark block @click="pickFile">
27 <v-icon small class="pr-1">refresh</v-icon>Upload
28 </v-btn>
29 </v-flex>
30 <v-flex xs6 sm4 lg2 class="mt-1">
31 <v-btn class="grey" dark block>import</v-btn>
32 </v-flex>
33 <v-flex xs12 sm4 lg2 class="mt-1">
34 <download-csv :data="teacherData">
35 <v-btn class="blue lighten-2" dark block>
36 <v-icon small class="pr-1">archive</v-icon>sample download
37 </v-btn>
38 </download-csv>
39 </v-flex>
40 </v-layout>
41 </v-flex>
42 </v-layout>
43 <v-layout>
44 <v-flex xs12>
45 <v-layout wrap>
46 <v-flex xs6 sm5 lg2 class="pt-4">
47 <label class="title right">Add Parent:</label>
48 </v-flex>
49 <v-flex xs12 sm6 lg3>
50 <v-text-field v-model="parentFileName" placeholder="Choose file" :disabled="true"></v-text-field>
51 </v-flex>
52 <v-flex xs6 sm4 lg2 class="mt-1">
53 <v-btn class="grey" dark block @click="pickFile">
54 <v-icon small class="pr-1">refresh</v-icon>Upload
55 </v-btn>
56 </v-flex>
57 <v-flex xs6 sm4 lg2 class="mt-1">
58 <v-btn class="grey" dark block>import</v-btn>
59 </v-flex>
60 <v-flex xs12 sm4 lg2 class="mt-1">
61 <download-csv :data="parentData">
62 <v-btn class="blue lighten-2" dark block>
63 <v-icon small class="pr-1">archive</v-icon>sample download
64 </v-btn>
65 </download-csv>
66 </v-flex>
67 </v-layout>
68 </v-flex>
69 </v-layout>
70 <v-layout>
71 <v-flex xs12>
72 <v-layout wrap>
73 <v-flex xs6 sm5 lg2 class="pt-4">
74 <label class="title right">Add User:</label>
75 </v-flex>
76 <v-flex xs12 sm6 lg3>
77 <v-text-field placeholder="Choose file" :disabled="true"></v-text-field>
78 </v-flex>
79 <v-flex xs6 sm4 lg2 class="mt-1">
80 <v-btn class="grey" dark block>
81 <v-icon small class="pr-1">refresh</v-icon>Upload
82 </v-btn>
83 </v-flex>
84 <v-flex xs6 sm4 lg2 class="mt-1">
85 <v-btn class="grey" dark block>import</v-btn>
86 </v-flex>
87 <v-flex xs12 sm4 lg2 class="mt-1">
88 <download-csv :data="userData">
89 <v-btn class="blue lighten-2" dark block>
90 <v-icon small class="pr-1">archive</v-icon>sample download
91 </v-btn>
92 </download-csv>
93 </v-flex>
94 </v-layout>
95 </v-flex>
96 </v-layout>
97 <v-layout>
98 <v-flex xs12>
99 <v-layout wrap>
100 <v-flex xs6 sm5 lg2 class="pt-4">
101 <label class="title right">Add Book:</label>
102 </v-flex>
103 <v-flex xs12 sm6 lg3>
104 <v-text-field placeholder="Choose file" :disabled="true"></v-text-field>
105 </v-flex>
106 <v-flex xs6 sm4 lg2 class="mt-1">
107 <v-btn class="grey" dark block>
108 <v-icon small class="pr-1">refresh</v-icon>Upload
109 </v-btn>
110 </v-flex>
111 <v-flex xs6 sm4 lg2 class="mt-1">
112 <v-btn class="grey" dark block>import</v-btn>
113 </v-flex>
114 <v-flex xs12 sm4 lg2 class="mt-1">
115 <download-csv :data="bookData">
116 <v-btn class="blue lighten-2" dark block>
117 <v-icon small class="pr-1">archive</v-icon>sample download
118 </v-btn>
119 </download-csv>
120 </v-flex>
121 </v-layout>
122 </v-flex>
123 </v-layout>
124 <v-layout>
125 <v-flex xs12>
126 <v-layout wrap>
127 <v-flex xs6 sm5 lg2 class="pt-4">
128 <label class="title right">Add Student:</label>
129 </v-flex>
130 <v-flex xs12 sm6 lg3>
131 <v-text-field placeholder="Choose file" :disabled="true"></v-text-field>
132 </v-flex>
133 <v-flex xs6 sm4 lg2 class="mt-1">
134 <v-btn class="grey" dark block>
135 <v-icon small class="pr-1">refresh</v-icon>Upload
136 </v-btn>
137 </v-flex>
138 <v-flex xs6 sm4 lg2 class="mt-1">
139 <v-btn class="grey" dark block>import</v-btn>
140 </v-flex>
141 <v-flex xs12 sm4 lg2 class="mt-1">
142 <download-csv :data="studentData">
143 <v-btn class="blue lighten-2" dark block>
144 <v-icon small class="pr-1">archive</v-icon>sample download
145 </v-btn>
146 </download-csv>
147 </v-flex>
148 </v-layout>
149 </v-flex>
150 </v-layout>
151 <v-layout>
152 <v-flex xs12>
153 <v-layout wrap>
154 <v-flex xs9 sm5 lg2 class="pt-4">
155 <label class="title right">Students & Parents:</label>
156 </v-flex>
157 <v-flex xs12 sm6 lg3>
158 <v-text-field placeholder="Choose file" :disabled="true"></v-text-field>
159 </v-flex>
160 <v-flex xs6 sm4 lg2 class="mt-1">
161 <v-btn class="grey" dark block>
162 <v-icon small class="pr-1">refresh</v-icon>Upload
163 </v-btn>
164 </v-flex>
165 <v-flex xs6 sm4 lg2 class="mt-1">
166 <v-btn class="grey" dark block>import</v-btn>
167 </v-flex>
168 <v-flex xs12 sm4 lg2 class="mt-1">
169 <v-btn class="blue lighten-2" dark block>
170 <v-icon small class="pr-1">archive</v-icon>sample download
171 </v-btn>
172 </v-flex>
173 </v-layout>
174 </v-flex>
175 </v-layout>
176 </v-container>
177 </v-card>
178 </v-container>
179 </template>
180
181
182 <script>
183 import http from "@/Services/http.js";
184 import moment from "moment";
185 import teacherData from "@/script/teachers.js";
186 import studentData from "@/script/students.js";
187 import parentData from "@/script/parents.js";
188 import userData from "@/script/users.js";
189 import bookData from "@/script/books.js";
190
191 export default {
192 data: () => ({
193 teacherData: [],
194 studentData: [],
195 parentData: [],
196 userData: [],
197 bookData: [],
198 teacher: "TEACHER",
199 teacherFileName: "",
200 teacherFileUrl: "",
201 parent: "PARENT",
202 parentFileName: "",
203 parentFileUrl: ""
204 }),
205 methods: {
206 pickFile() {
207 this.$refs.file.click();
208 },
209 picFileTeacher(e) {
210 console.log(this.parent);
211 if (this.teacher === "TEACHER") {
212 var vm = this;
213 if (window.FileReader) {
214 var reader = new FileReader();
215 this.teacherFileName = e.target.files[0].name;
216 this.teacherFileUrl = e.target.files[0];
217 console.log("this.teacherFileUrl", this.teacherFileUrl);
218 }
219 }
220 // if (this.parent === "PARENT") {
221 // var vm = this;
222 // if (window.FileReader) {
223 // var reader = new FileReader();
224 // this.parentFileName = e.target.files[0].name;
225 // this.parentFileUrl = e.target.files[0];
226 // console.log("this.teacherFileUrl", this.parentFileUrl);
227 // }
228 // }
229 // if (this.teacher === "TEACHER") {
230 // const files = e.target.files;
231 // if (files[0] !== undefined) {
232 // this.teacherFileName = files[0].name;
233 // if (this.teacherFileName.lastIndexOf(".") <= 0) {
234 // return;
235 // }
236 // const fr = new FileReader();
237 // fr.readAsDataURL(files[0]);
238 // fr.addEventListener("load", () => {
239 // this.teacherFileUrl = fr.result;
240 // // this.imageFile = files[0]; // this is an image file that can be sent to server...
241 // });
242 // } else {
243 // this.teacherFileName = "";
244 // this.teacherFileUrl = "";
245 // }
246 // }
247 }
248 },
249 mounted() {
250 /** TEACHERS SAMPLE CSV */
251 const getTeacherData = teacherData();
252 this.teacherData = getTeacherData;
253
254 /** STUDENTS SAMPLE CSV */
255 const getstudentData = studentData();
256 this.studentData = getstudentData;
257
258 /** PARENTS SAMPLE CSV */
259 const getparentData = parentData();
260 this.parentData = getparentData;
261
262 /** USERS SAMPLE CSV */
263 const getUserData = userData();
264 this.userData = getUserData;
265
266 /** BOOKS SAMPLE CSV */
267 const getBookData = bookData();
268 this.bookData = getBookData;
269 }
270 };
271 </script>
src/pages/Attendence/viewStudentsAttendence.vue
1 <template> 1 <template>
2 <v-container fluid grid-list-md> 2 <v-container fluid grid-list-md>
3 <div v-show="hideData"> 3 <div v-show="hideData">
4 <v-layout row> 4 <v-layout row>
5 <v-btn color="grey" @click="exportPdf" class="right" dark> 5 <v-btn color="grey" @click="exportPdf" class="right" dark>
6 Export Pdf 6 Export Pdf
7 <v-icon dark right size="20">save_alt</v-icon> 7 <v-icon dark right size="20">save_alt</v-icon>
8 </v-btn> 8 </v-btn>
9 <v-dialog v-model="dialogExport" max-width="500px"> 9 <v-dialog v-model="dialogExport" max-width="500px">
10 <v-btn slot="activator" color="grey" class="right" dark> 10 <v-btn slot="activator" color="grey" class="right" dark>
11 Export csv 11 Export csv
12 <v-icon dark right size="20">save_alt</v-icon> 12 <v-icon dark right size="20">save_alt</v-icon>
13 </v-btn> 13 </v-btn>
14 <v-card> 14 <v-card>
15 <h3 class="text-xs-center py-2 grey lighten-1 white--text">Export</h3> 15 <h3 class="text-xs-center py-2 grey lighten-1 white--text">Export</h3>
16 <v-card-text> 16 <v-card-text>
17 <v-container grid-list-md> 17 <v-container grid-list-md>
18 <v-layout wrap> 18 <v-layout wrap>
19 <v-flex xs12> 19 <v-flex xs12>
20 <v-menu 20 <v-menu
21 ref="menuStartDate" 21 ref="menuStartDate"
22 :close-on-content-click="false" 22 :close-on-content-click="false"
23 v-model="menuStartDate" 23 v-model="menuStartDate"
24 :nudge-right="40" 24 :nudge-right="40"
25 :return-value.sync="startDate" 25 :return-value.sync="startDate"
26 lazy 26 lazy
27 transition="scale-transition" 27 transition="scale-transition"
28 offset-y 28 offset-y
29 full-width 29 full-width
30 min-width="290px" 30 min-width="290px"
31 > 31 >
32 <v-text-field 32 <v-text-field
33 slot="activator" 33 slot="activator"
34 v-model="startDate" 34 v-model="startDate"
35 label="Select Start Date" 35 label="Select Start Date"
36 prepend-icon="event" 36 prepend-icon="event"
37 readonly 37 readonly
38 ></v-text-field> 38 ></v-text-field>
39 <v-date-picker 39 <v-date-picker
40 v-model="startDate" 40 v-model="startDate"
41 @input="$refs.menuStartDate.save(startDate)" 41 @input="$refs.menuStartDate.save(startDate)"
42 ></v-date-picker> 42 ></v-date-picker>
43 </v-menu> 43 </v-menu>
44 </v-flex> 44 </v-flex>
45 <v-flex xs12> 45 <v-flex xs12>
46 <v-menu 46 <v-menu
47 ref="menuEndDate" 47 ref="menuEndDate"
48 :close-on-content-click="false" 48 :close-on-content-click="false"
49 v-model="menuEndDate" 49 v-model="menuEndDate"
50 :nudge-right="40" 50 :nudge-right="40"
51 :return-value.sync="endDate" 51 :return-value.sync="endDate"
52 lazy 52 lazy
53 transition="scale-transition" 53 transition="scale-transition"
54 offset-y 54 offset-y
55 full-width 55 full-width
56 min-width="290px" 56 min-width="290px"
57 > 57 >
58 <v-text-field 58 <v-text-field
59 slot="activator" 59 slot="activator"
60 v-model="endDate" 60 v-model="endDate"
61 label="Select End Date" 61 label="Select End Date"
62 prepend-icon="event" 62 prepend-icon="event"
63 readonly 63 readonly
64 ></v-text-field> 64 ></v-text-field>
65 <v-date-picker v-model="endDate" @input="$refs.menuEndDate.save(endDate)"></v-date-picker> 65 <v-date-picker v-model="endDate" @input="$refs.menuEndDate.save(endDate)"></v-date-picker>
66 </v-menu> 66 </v-menu>
67 </v-flex> 67 </v-flex>
68 </v-layout> 68 </v-layout>
69 </v-container> 69 </v-container>
70 </v-card-text> 70 </v-card-text>
71 <v-card-actions> 71 <v-card-actions>
72 <v-spacer></v-spacer> 72 <v-spacer></v-spacer>
73 <v-btn color="blue darken-1" flat @click.native="dialogExport = false">Close</v-btn> 73 <v-btn color="blue darken-1" flat @click.native="dialogExport = false">Close</v-btn>
74 <download-csv :data="json_data"> 74 <download-csv :data="json_data">
75 <v-btn color="blue darken-1" flat @click.native="exportData">Export</v-btn> 75 <v-btn color="blue darken-1" flat @click.native="exportData">Export</v-btn>
76 </download-csv> 76 </download-csv>
77 </v-card-actions> 77 </v-card-actions>
78 </v-card> 78 </v-card>
79 </v-dialog> 79 </v-dialog>
80 </v-layout> 80 </v-layout>
81 <v-layout wrap> 81 <v-layout wrap>
82 <v-flex xs12 sm12 md4> 82 <v-flex xs12 sm12 md4>
83 <v-card flat> 83 <v-card flat>
84 <h3 class="text-xs-center py-2 grey lighten-1 white--text">Profile</h3> 84 <h3 class="text-xs-center py-2 grey lighten-1 white--text">Profile</h3>
85 <v-card-text> 85 <v-card-text>
86 <v-container> 86 <v-container>
87 <v-layout wrap> 87 <v-layout wrap>
88 <v-flex xs12> 88 <v-flex xs12>
89 <v-layout> 89 <v-layout>
90 <v-flex 90 <v-flex
91 xs12 91 xs12
92 class="text-xs-center text-sm-center text-md-center text-lg-center" 92 class="text-xs-center text-sm-center text-md-center text-lg-center"
93 > 93 >
94 <v-avatar size="160px"> 94 <v-avatar size="160px">
95 <img src="/static/icon/user.png" v-if="!studentData.profilePicUrl" /> 95 <img src="/static/icon/user.png" v-if="!studentData.profilePicUrl" />
96 <img 96 <img
97 :src="studentData.profilePicUrl" 97 :src="studentData.profilePicUrl"
98 v-else-if="studentData.profilePicUrl" 98 v-else-if="studentData.profilePicUrl"
99 /> 99 />
100 </v-avatar> 100 </v-avatar>
101 </v-flex> 101 </v-flex>
102 </v-layout> 102 </v-layout>
103 <v-layout> 103 <v-layout>
104 <v-flex xs12 sm12> 104 <v-flex xs12 sm12>
105 <h3 class="text-xs-center"> 105 <h3 class="text-xs-center">
106 <b>{{ studentData.name }}</b> 106 <b>{{ studentData.name }}</b>
107 </h3> 107 </h3>
108 <p class="text-xs-center grey--text">Student</p> 108 <p class="text-xs-center grey--text">Student</p>
109 </v-flex> 109 </v-flex>
110 </v-layout> 110 </v-layout>
111 <v-layout style="border: 1px solid lightgrey;"> 111 <v-layout style="border: 1px solid lightgrey;">
112 <v-flex xs6 sm6 class="pa-0"> 112 <v-flex xs6 sm6 class="pa-0">
113 <h4 class="right"> 113 <h4 class="right">
114 <b>Roll No :</b> 114 <b>Roll No :</b>
115 </h4> 115 </h4>
116 </v-flex> 116 </v-flex>
117 <v-flex sm6 xs6 class="pa-0"> 117 <v-flex sm6 xs6 class="pa-0">
118 <h4>{{ studentData.rollNo }}</h4> 118 <h4>{{ studentData.rollNo }}</h4>
119 </v-flex> 119 </v-flex>
120 </v-layout> 120 </v-layout>
121 <v-layout style="border: 1px solid lightgrey;"> 121 <v-layout style="border: 1px solid lightgrey;">
122 <v-flex xs6 sm6 class="pa-0"> 122 <v-flex xs6 sm6 class="pa-0">
123 <h4 class="right"> 123 <h4 class="right">
124 <b>Class :</b> 124 <b>Class :</b>
125 </h4> 125 </h4>
126 </v-flex> 126 </v-flex>
127 <v-flex sm6 xs6 class="right pa-0"> 127 <v-flex sm6 xs6 class="right pa-0">
128 <h4>{{ studentData.classId.classNum }}</h4> 128 <h4>{{ studentData.classId.classNum }}</h4>
129 </v-flex> 129 </v-flex>
130 </v-layout> 130 </v-layout>
131 <v-layout style="border: 1px solid lightgrey;"> 131 <v-layout style="border: 1px solid lightgrey;">
132 <v-flex xs6 sm6 class="right pa-0"> 132 <v-flex xs6 sm6 class="right pa-0">
133 <h4 class="right"> 133 <h4 class="right">
134 <b>Section :</b> 134 <b>Section :</b>
135 </h4> 135 </h4>
136 </v-flex> 136 </v-flex>
137 <v-flex sm6 xs6 class="right pa-0"> 137 <v-flex sm6 xs6 class="right pa-0">
138 <h4>{{ studentData.sectionId.name}}</h4> 138 <h4>{{ studentData.sectionId.name}}</h4>
139 </v-flex> 139 </v-flex>
140 </v-layout> 140 </v-layout>
141 </v-flex> 141 </v-flex>
142 </v-layout> 142 </v-layout>
143 </v-container> 143 </v-container>
144 </v-card-text> 144 </v-card-text>
145 </v-card> 145 </v-card>
146 </v-flex> 146 </v-flex>
147 <v-flex xs12 sm12 md8> 147 <v-flex xs12 sm12 md8>
148 <v-card flat> 148 <v-card flat>
149 <h3 class="py-2 text-xs-center grey lighten-1 white--text"> 149 <h3 class="py-2 text-xs-center grey lighten-1 white--text">
150 Attendence 150 Attendence
151 <span class="ml-4"> 151 <span class="ml-4">
152 <v-avatar class="green caption" size="12"></v-avatar> 152 <v-avatar class="green caption" size="12"></v-avatar>
153 <span class="subheading">Present</span> 153 <span class="subheading">Present</span>
154 </span> 154 </span>
155 <span class="ml-4"> 155 <span class="ml-4">
156 <v-avatar color="red caption" size="12" class></v-avatar> 156 <v-avatar color="red caption" size="12" class></v-avatar>
157 <span class="subheading">Absent</span> 157 <span class="subheading">Absent</span>
158 </span> 158 </span>
159 </h3> 159 </h3>
160 <YearCalendar 160 <YearCalendar
161 v-model="year" 161 v-model="year"
162 :activeDates="activeDates" 162 :activeDates="activeDates"
163 prefixClass="your_customized_wrapper_class" 163 prefixClass="your_customized_wrapper_class"
164 :activeClass="activeClass" 164 :activeClass="activeClass"
165 ></YearCalendar> 165 ></YearCalendar>
166 </v-card> 166 </v-card>
167 </v-flex> 167 </v-flex>
168 </v-layout> 168 </v-layout>
169 </div> 169 </div>
170 <v-layout v-show="showPdfData"> 170 <v-layout v-show="showPdfData">
171 <v-container> 171 <v-container>
172 <v-flex xs12 sm12 md8 offset-sm2> 172 <v-flex xs12 sm12 md8 offset-sm2>
173 <v-btn 173 <v-btn
174 color="grey" 174 color="grey"
175 @click="generatePDF2Canvas()" 175 @click="generatePDF2Canvas()"
176 :loading="loadingPdf" 176 :loading="loadingPdf"
177 class="right" 177 class="right"
178 dark 178 dark
179 > 179 >
180 Download 180 Download
181 <v-icon dark right size="20">save_alt</v-icon> 181 <v-icon dark right size="20">save_alt</v-icon>
182 </v-btn> 182 </v-btn>
183 </v-flex> 183 </v-flex>
184 </v-container> 184 </v-container>
185 </v-layout> 185 </v-layout>
186 <v-layout v-show="showPdfData"> 186 <v-layout v-show="showPdfData">
187 <v-container> 187 <v-container>
188 <v-layout v-show="showPdfData"> 188 <v-layout v-show="showPdfData">
189 <v-flex xs12 sm12 md8 offset-sm2> 189 <v-flex xs12 sm12 md8 offset-sm2>
190 <div ref="printMe"> 190 <div ref="printMe">
191 <v-flex xs12 class="pl-3"> 191 <v-flex xs12 class="pl-3">
192 <v-layout> 192 <v-layout>
193 <v-flex xs6 sm2 class="pa-0 mb-1"> 193 <v-flex xs6 sm2 class="pa-0 mb-1">
194 <h4> 194 <h4>
195 <b>Name</b> 195 <b>Name</b>
196 </h4> 196 </h4>
197 </v-flex> 197 </v-flex>
198 <v-flex sm10 xs6 class="pa-0"> 198 <v-flex sm10 xs6 class="pa-0">
199 <h4>: {{ studentData.name }}</h4> 199 <h4>: {{ studentData.name }}</h4>
200 </v-flex> 200 </v-flex>
201 </v-layout> 201 </v-layout>
202 <v-layout> 202 <v-layout>
203 <v-flex xs6 sm2 class="pa-0 mb-1"> 203 <v-flex xs6 sm2 class="pa-0 mb-1">
204 <h4> 204 <h4>
205 <b>Type</b> 205 <b>Type</b>
206 </h4> 206 </h4>
207 </v-flex> 207 </v-flex>
208 <v-flex sm10 xs6 class="pa-0 mb-1"> 208 <v-flex sm10 xs6 class="pa-0 mb-1">
209 <h4>: Student</h4> 209 <h4>: Student</h4>
210 </v-flex> 210 </v-flex>
211 </v-layout> 211 </v-layout>
212 <v-layout> 212 <v-layout>
213 <v-flex xs6 sm2 class="pa-0 mb-1"> 213 <v-flex xs6 sm2 class="pa-0 mb-1">
214 <h4> 214 <h4>
215 <b>Roll No</b> 215 <b>Roll No</b>
216 </h4> 216 </h4>
217 </v-flex> 217 </v-flex>
218 <v-flex sm10 xs6 class="pa-0 mb-1"> 218 <v-flex sm10 xs6 class="pa-0 mb-1">
219 <h4>: {{ studentData.rollNo }}</h4> 219 <h4>: {{ studentData.rollNo }}</h4>
220 </v-flex> 220 </v-flex>
221 </v-layout> 221 </v-layout>
222 <v-layout> 222 <v-layout>
223 <v-flex xs6 sm2 class="pa-0 mb-1"> 223 <v-flex xs6 sm2 class="pa-0 mb-1">
224 <h4> 224 <h4>
225 <b>Class</b> 225 <b>Class</b>
226 </h4> 226 </h4>
227 </v-flex> 227 </v-flex>
228 <v-flex sm10 xs6 class="pa-0 mb-1"> 228 <v-flex sm10 xs6 class="pa-0 mb-1">
229 <h4>: {{ studentData.classId.classNum }}</h4> 229 <h4>: {{ studentData.classId.classNum }}</h4>
230 </v-flex> 230 </v-flex>
231 </v-layout> 231 </v-layout>
232 <v-layout> 232 <v-layout>
233 <v-flex xs6 sm2 class="pa-0 mb-1"> 233 <v-flex xs6 sm2 class="pa-0 mb-1">
234 <h4> 234 <h4>
235 <b>Section</b> 235 <b>Section</b>
236 </h4> 236 </h4>
237 </v-flex> 237 </v-flex>
238 <v-flex sm10 xs6 class="pa-0 mb-3"> 238 <v-flex sm10 xs6 class="pa-0 mb-3">
239 <h4>: {{ studentData.sectionId.name}}</h4> 239 <h4>: {{ studentData.sectionId.name}}</h4>
240 </v-flex> 240 </v-flex>
241 </v-layout> 241 </v-layout>
242 </v-flex> 242 </v-flex>
243 <v-card flat> 243 <v-card flat>
244 <h3 class="py-2 text-xs-center grey lighten-1 white--text"> 244 <h3 class="py-2 text-xs-center grey lighten-1 white--text">
245 Attendence 245 Attendence
246 <span class="ml-4"> 246 <span class="ml-4">
247 <v-avatar class="green caption" size="12"></v-avatar> 247 <v-avatar class="green caption" size="12"></v-avatar>
248 <span class="subheading">Present</span> 248 <span class="subheading">Present</span>
249 </span> 249 </span>
250 <span class="ml-4"> 250 <span class="ml-4">
251 <v-avatar color="red caption" size="12" class></v-avatar> 251 <v-avatar color="red caption" size="12" class></v-avatar>
252 <span class="subheading">Absent</span> 252 <span class="subheading">Absent</span>
253 </span> 253 </span>
254 </h3> 254 </h3>
255 <YearCalendar 255 <YearCalendar
256 v-model="year" 256 v-model="year"
257 :activeDates="activeDates" 257 :activeDates="activeDates"
258 prefixClass="your_customized_wrapper_class" 258 prefixClass="your_customized_wrapper_class"
259 :activeClass="activeClass" 259 :activeClass="activeClass"
260 ></YearCalendar> 260 ></YearCalendar>
261 </v-card> 261 </v-card>
262 </div> 262 </div>
263 </v-flex> 263 </v-flex>
264 </v-layout> 264 </v-layout>
265 </v-container> 265 </v-container>
266 </v-layout> 266 </v-layout>
267 <img :src="output" v-show="false"/> 267 <img :src="output" v-show="false"/>
268 <div class="loader" v-if="showLoader"> 268 <div class="loader" v-if="showLoader">
269 <v-progress-circular indeterminate color="white"></v-progress-circular> 269 <v-progress-circular indeterminate color="white"></v-progress-circular>
270 </div> 270 </div>
271 </v-container> 271 </v-container>
272 </template> 272 </template>
273 273
274 <script lang="js"> 274 <script lang="js">
275 import moment from "moment"; 275 import moment from "moment";
276 import http from "@/Services/http.js"; 276 import http from "@/Services/http.js";
277 import YearCalendar from "vue-material-year-calendar"; 277 import YearCalendar from "vue-material-year-calendar";
278 import jsPDF from 'jspdf'; 278 import jsPDF from 'jspdf';
279 // eslint-disable-next-line 279 // eslint-disable-next-line
280 import autoTable from 'jspdf-autotable'; 280 import autoTable from 'jspdf-autotable';
281 281
282 export default { 282 export default {
283 components: { YearCalendar }, 283 components: { YearCalendar },
284 data() { 284 data() {
285 return { 285 return {
286 showPdfData:false, 286 showPdfData:false,
287 hideData:true, 287 hideData:true,
288 loadingPdf:false, 288 loadingPdf:false,
289 output:null, 289 output:null,
290 studentsList: [], 290 studentsList: [],
291 json_data: [], 291 json_data: [],
292 dialogExport: false, 292 dialogExport: false,
293 startDate: "", 293 startDate: "",
294 endDate: "", 294 endDate: "",
295 menuEndDate: false, 295 menuEndDate: false,
296 menuStartDate: false, 296 menuStartDate: false,
297 showLoader: false, 297 showLoader: false,
298 token: "", 298 token: "",
299 year: new Date().getFullYear(), 299 year: new Date().getFullYear(),
300 activeDates: [], 300 activeDates: [],
301 activeClass: "", 301 activeClass: "",
302 studentData: {} 302 studentData: {}
303 }; 303 };
304 }, 304 },
305 mounted() { 305 mounted() {
306 this.token = this.$store.state.token; 306 this.token = this.$store.state.token;
307 this.getStudentAttendence(); 307 this.getStudentAttendence();
308 this.getStudentData(); 308 this.getStudentData();
309 }, 309 },
310 methods: { 310 methods: {
311 dates: function(date) { 311 dates: function(date) {
312 return moment(date).format("MMMM DD, YYYY"); 312 return moment(date).format("MMMM DD, YYYY");
313 }, 313 },
314 getStudentAttendence() { 314 getStudentAttendence() {
315 this.showLoader = true; 315 this.showLoader = true;
316 http() 316 http()
317 .get( 317 .get(
318 "/studentAttendance", 318 "/studentAttendance",
319 { params: { studentId: this.$route.params.id } }, 319 { params: { studentId: this.$route.params.id } },
320 { 320 {
321 headers: { Authorization: "Bearer " + this.token } 321 headers: { Authorization: "Bearer " + this.token }
322 } 322 }
323 ) 323 )
324 .then(response => { 324 .then(response => {
325 this.showLoader = false; 325 this.showLoader = false;
326 let array = []; 326 let array = [];
327 for (let i = 0; i < response.data.data.length; i++) { 327 for (let i = 0; i < response.data.data.length; i++) {
328 if (response.data.data[i].students[0].isPresent == true) { 328 if (response.data.data[i].students[0].isPresent == true) {
329 array.push({ 329 array.push({
330 date: response.data.data[i].date, 330 date: response.data.data[i].date,
331 className: "green" 331 className: "green"
332 }); 332 });
333 } else if (response.data.data[i].students[0].isPresent == false) { 333 } else if (response.data.data[i].students[0].isPresent == false) {
334 array.push({ 334 array.push({
335 date: response.data.data[i].date, 335 date: response.data.data[i].date,
336 className: "red" 336 className: "red"
337 }); 337 });
338 } 338 }
339 } 339 }
340 this.activeDates = array; 340 this.activeDates = array;
341 }) 341 })
342 .catch(error => { 342 .catch(error => {
343 this.showLoader = false; 343 this.showLoader = false;
344 if (error.response.status === 401) { 344 if (error.response.status === 401) {
345 this.$router.replace({ path: "/" }); 345 this.$router.replace({ path: "/" });
346 this.$store.dispatch("setToken", null); 346 this.$store.dispatch("setToken", null);
347 this.$store.dispatch("Id", null); 347 this.$store.dispatch("Id", null);
348 this.$store.dispatch("Role", null); 348 this.$store.dispatch("Role", null);
349 } 349 }
350 }); 350 });
351 }, 351 },
352 getStudentData() { 352 getStudentData() {
353 http() 353 http()
354 .get( 354 .get(
355 "/getParticularStudentDetail", 355 "/getParticularStudentDetail",
356 { params: { studentId: this.$route.params.id } }, 356 { params: { studentId: this.$route.params.id } },
357 { 357 {
358 headers: { Authorization: "Bearer " + this.token } 358 headers: { Authorization: "Bearer " + this.token }
359 } 359 }
360 ) 360 )
361 .then(response => { 361 .then(response => {
362 this.studentData = response.data.data; 362 this.studentData = response.data.data;
363 }) 363 })
364 .catch(err => { 364 .catch(err => {
365 console.log("err====>", err); 365 console.log("err====>", err);
366 // this.$router.replace({ path: '/' }); 366 // this.$router.replace({ path: '/' });
367 }); 367 });
368 }, 368 },
369 exportData() { 369 exportData() {
370 http() 370 http()
371 .get( 371 .get(
372 "/studentAttendanceByMonth", 372 "/studentAttendanceByMonth",
373 { 373 {
374 params: { 374 params: {
375 studentId: this.$route.params.id, 375 studentId: this.$route.params.id,
376 startDate: this.startDate, 376 startDate: this.startDate,
377 endDate: this.endDate 377 endDate: this.endDate
378 } 378 }
379 }, 379 },
380 { 380 {
381 headers: { Authorization: "Bearer " + this.token } 381 headers: { Authorization: "Bearer " + this.token }
382 } 382 }
383 ) 383 )
384 .then(response => { 384 .then(response => {
385 this.json_data = response.data.data; 385 this.json_data = response.data.data;
386 this.dialogExport = true; 386 this.dialogExport = true;
387 }) 387 })
388 .catch(err => { 388 .catch(err => {
389 console.log("err====>", err); 389 console.log("err====>", err);
390 // this.$router.replace({ path: '/' }); 390 // this.$router.replace({ path: '/' });
391 }); 391 });
392 }, 392 },
393 exportPdf(){ 393 exportPdf(){
394 this.hideData = false; 394 this.hideData = false;
395 this.showPdfData = true 395 this.showPdfData = true
396 }, 396 },
397 async generatePDF2Canvas(){ 397 async generatePDF2Canvas(){
398 this.loadingPdf = true 398 this.loadingPdf = true
399 const el = this.$refs.printMe; 399 const el = this.$refs.printMe;
400 // add option type to get the image version 400 // add option type to get the image version
401 // if not provided the promise will return 401 // if not provided the promise will return
402 // the canvas. 402 // the canvas.
403 const options = { 403 const options = {
404 type: 'dataURL' 404 type: 'dataURL'
405 } 405 }
406 this.output = await this.$html2canvas(el, options); 406 this.output = await this.$html2canvas(el, options);
407 console.log(this.output);
408 if(this.output) { 407 if(this.output) {
409 this.loadingPdf = false 408 this.loadingPdf = false
410 } 409 }
411 let doc = new jsPDF(); 410 let doc = new jsPDF();
412 doc.addImage(this.output, 'JPEG', 5, 10, 200, 280); 411 doc.addImage(this.output, 'JPEG', 5, 10, 200, 280);
413 doc.save("Attendance.pdf"); 412 doc.save("Attendance.pdf");
414 } 413 }
415 } 414 }
416 }; 415 };
417 </script> 416 </script>
418 417
419 <style lang="stylus"> 418 <style lang="stylus">
420 .your_customized_wrapper_class { 419 .your_customized_wrapper_class {
421 background-color: #0aa; 420 background-color: #0aa;
422 color: white; 421 color: white;
423 422
424 &.red { 423 &.red {
425 background-color: red; 424 background-color: red;
426 color: white; 425 color: white;
427 426
428 &:after { 427 &:after {
429 background-size: 100% 100%; 428 background-size: 100% 100%;
430 } 429 }
431 } 430 }
432 431
433 &.blue { 432 &.blue {
434 background-color: #0000aa; 433 background-color: #0000aa;
435 color: white; 434 color: white;
436 } 435 }
437 436
438 &.your_customized_classname { 437 &.your_customized_classname {
439 background-color: yellow; 438 background-color: yellow;
440 color: black; 439 color: black;
441 } 440 }
442 } 441 }
443 </style> 442 </style>
src/router/paths.js
1 export default [{ 1 export default [{
2 path: '*', 2 path: '*',
3 meta: { 3 meta: {
4 public: true, 4 public: true,
5 }, 5 },
6 redirect: { 6 redirect: {
7 path: '/404' 7 path: '/404'
8 } 8 }
9 }, 9 },
10 { 10 {
11 path: '/404', 11 path: '/404',
12 meta: { 12 meta: {
13 public: true, 13 public: true,
14 }, 14 },
15 name: 'NotFound', 15 name: 'NotFound',
16 component: () => 16 component: () =>
17 import ( 17 import (
18 /* webpackChunkName: "routes" */ 18 /* webpackChunkName: "routes" */
19 /* webpackMode: "lazy-once" */ 19 /* webpackMode: "lazy-once" */
20 `@/pages/NotFound/NotFound.vue` 20 `@/pages/NotFound/NotFound.vue`
21 ) 21 )
22 }, 22 },
23 { 23 {
24 path: '/500', 24 path: '/500',
25 meta: { 25 meta: {
26 public: true, 26 public: true,
27 }, 27 },
28 name: 'ServerError', 28 name: 'ServerError',
29 component: () => 29 component: () =>
30 import ( 30 import (
31 /* webpackChunkName: "routes" */ 31 /* webpackChunkName: "routes" */
32 /* webpackMode: "lazy-once" */ 32 /* webpackMode: "lazy-once" */
33 `@/pages/NotFound/Error.vue` 33 `@/pages/NotFound/Error.vue`
34 ) 34 )
35 }, 35 },
36 { 36 {
37 path: '/changepassword', 37 path: '/changepassword',
38 meta: {}, 38 meta: {},
39 name: 'changepassword', 39 name: 'changepassword',
40 props: (route) => ({ type: route.query.type }), 40 props: (route) => ({ type: route.query.type }),
41 component: () => 41 component: () =>
42 import ( 42 import (
43 /* webpackChunkName: "routes" */ 43 /* webpackChunkName: "routes" */
44 /* webpackMode: "lazy-once" */ 44 /* webpackMode: "lazy-once" */
45 `@/pages/Authentication/changepassword.vue` 45 `@/pages/Authentication/changepassword.vue`
46 ) 46 )
47 }, 47 },
48 { 48 {
49 path: '/teachers', 49 path: '/teachers',
50 meta: { breadcrumb: false }, 50 meta: { breadcrumb: false },
51 name: 'teachers', 51 name: 'teachers',
52 component: () => 52 component: () =>
53 import ( 53 import (
54 /* webpackChunkName: "routes" */ 54 /* webpackChunkName: "routes" */
55 /* webpackMode: "lazy-once" */ 55 /* webpackMode: "lazy-once" */
56 `@/pages/Teachers/teachers.vue` 56 `@/pages/Teachers/teachers.vue`
57 ) 57 )
58 }, 58 },
59 { 59 {
60 path: '/', 60 path: '/',
61 meta: { 61 meta: {
62 public: true, 62 public: true,
63 }, 63 },
64 name: 'Login', 64 name: 'Login',
65 component: () => 65 component: () =>
66 import ( 66 import (
67 /* webpackChunkName: "routes" */ 67 /* webpackChunkName: "routes" */
68 /* webpackMode: "lazy-once" */ 68 /* webpackMode: "lazy-once" */
69 `@/pages/Authentication/Login.vue` 69 `@/pages/Authentication/Login.vue`
70 ) 70 )
71 }, 71 },
72 { 72 {
73 path: '/forgetpassword', 73 path: '/forgetpassword',
74 meta: { 74 meta: {
75 public: true, 75 public: true,
76 }, 76 },
77 name: 'forgetpassword', 77 name: 'forgetpassword',
78 component: () => 78 component: () =>
79 import ( 79 import (
80 /* webpackChunkName: "routes" */ 80 /* webpackChunkName: "routes" */
81 /* webpackMode: "lazy-once" */ 81 /* webpackMode: "lazy-once" */
82 `@/pages/Authentication/forgetpassword.vue` 82 `@/pages/Authentication/forgetpassword.vue`
83 ) 83 )
84 }, 84 },
85 { 85 {
86 path: '/students', 86 path: '/students',
87 meta: {}, 87 meta: {},
88 name: 'Students', 88 name: 'Students',
89 props: (route) => ({ type: route.query.type }), 89 props: (route) => ({ type: route.query.type }),
90 component: () => 90 component: () =>
91 import ( 91 import (
92 /* webpackChunkName: "routes" */ 92 /* webpackChunkName: "routes" */
93 /* webpackMode: "lazy-once" */ 93 /* webpackMode: "lazy-once" */
94 `@/pages/Students/students.vue` 94 `@/pages/Students/students.vue`
95 ) 95 )
96 }, 96 },
97 { 97 {
98 path: '/addclass', 98 path: '/addclass',
99 meta: {}, 99 meta: {},
100 name: 'addclass', 100 name: 'addclass',
101 props: (route) => ({ type: route.query.type }), 101 props: (route) => ({ type: route.query.type }),
102 component: () => 102 component: () =>
103 import ( 103 import (
104 /* webpackChunkName: "routes" */ 104 /* webpackChunkName: "routes" */
105 /* webpackMode: "lazy-once" */ 105 /* webpackMode: "lazy-once" */
106 `@/pages/Class/addclass.vue` 106 `@/pages/Class/addclass.vue`
107 ) 107 )
108 }, 108 },
109 { 109 {
110 path: '/section', 110 path: '/section',
111 meta: {}, 111 meta: {},
112 name: 'section', 112 name: 'section',
113 props: (route) => ({ type: route.query.type }), 113 props: (route) => ({ type: route.query.type }),
114 component: () => 114 component: () =>
115 import ( 115 import (
116 /* webpackChunkName: "routes" */ 116 /* webpackChunkName: "routes" */
117 /* webpackMode: "lazy-once" */ 117 /* webpackMode: "lazy-once" */
118 `@/pages/Section/section.vue` 118 `@/pages/Section/section.vue`
119 ) 119 )
120 }, 120 },
121 { 121 {
122 path: '/noticeBoard', 122 path: '/noticeBoard',
123 meta: {}, 123 meta: {},
124 name: 'NoticeBoard', 124 name: 'NoticeBoard',
125 props: (route) => ({ type: route.query.type }), 125 props: (route) => ({ type: route.query.type }),
126 component: () => 126 component: () =>
127 import ( 127 import (
128 /* webpackChunkName: "routes" */ 128 /* webpackChunkName: "routes" */
129 /* webpackMode: "lazy-once" */ 129 /* webpackMode: "lazy-once" */
130 `@/pages/NoticeBoard/noticeBoard.vue` 130 `@/pages/NoticeBoard/noticeBoard.vue`
131 ) 131 )
132 }, 132 },
133 { 133 {
134 path: '/news', 134 path: '/news',
135 meta: {}, 135 meta: {},
136 name: 'news', 136 name: 'news',
137 props: (route) => ({ type: route.query.type }), 137 props: (route) => ({ type: route.query.type }),
138 component: () => 138 component: () =>
139 import ( 139 import (
140 /* webpackChunkName: "routes" */ 140 /* webpackChunkName: "routes" */
141 /* webpackMode: "lazy-once" */ 141 /* webpackMode: "lazy-once" */
142 `@/pages/News/news.vue` 142 `@/pages/News/news.vue`
143 ) 143 )
144 }, 144 },
145 // { 145 // {
146 // path: '/reminder', 146 // path: '/reminder',
147 // meta: { }, 147 // meta: { },
148 // name: 'reminder', 148 // name: 'reminder',
149 // props: (route) => ({ type: route.query.type }), 149 // props: (route) => ({ type: route.query.type }),
150 // component: () => import( 150 // component: () => import(
151 // /* webpackChunkName: "routes" */ 151 // /* webpackChunkName: "routes" */
152 // /* webpackMode: "lazy-once" */ 152 // /* webpackMode: "lazy-once" */
153 // `@/pages/Reminder/reminder.vue` 153 // `@/pages/Reminder/reminder.vue`
154 // ) 154 // )
155 // }, 155 // },
156 { 156 {
157 path: '/timeTable', 157 path: '/timeTable',
158 meta: {}, 158 meta: {},
159 name: 'timeTable', 159 name: 'timeTable',
160 props: (route) => ({ type: route.query.type }), 160 props: (route) => ({ type: route.query.type }),
161 component: () => 161 component: () =>
162 import ( 162 import (
163 /* webpackChunkName: "routes" */ 163 /* webpackChunkName: "routes" */
164 /* webpackMode: "lazy-once" */ 164 /* webpackMode: "lazy-once" */
165 `@/pages/TimeTable/timeTable.vue` 165 `@/pages/TimeTable/timeTable.vue`
166 ) 166 )
167 }, 167 },
168 { 168 {
169 path: '/notification', 169 path: '/notification',
170 meta: {}, 170 meta: {},
171 name: 'notification', 171 name: 'notification',
172 props: (route) => ({ type: route.query.type }), 172 props: (route) => ({ type: route.query.type }),
173 component: () => 173 component: () =>
174 import ( 174 import (
175 /* webpackChunkName: "routes" */ 175 /* webpackChunkName: "routes" */
176 /* webpackMode: "lazy-once" */ 176 /* webpackMode: "lazy-once" */
177 `@/pages/Notification/notification.vue` 177 `@/pages/Notification/notification.vue`
178 ) 178 )
179 }, 179 },
180 { 180 {
181 path: '/parents', 181 path: '/parents',
182 meta: {}, 182 meta: {},
183 name: 'parents', 183 name: 'parents',
184 props: (route) => ({ type: route.query.type }), 184 props: (route) => ({ type: route.query.type }),
185 component: () => 185 component: () =>
186 import ( 186 import (
187 /* webpackChunkName: "routes" */ 187 /* webpackChunkName: "routes" */
188 /* webpackMode: "lazy-once" */ 188 /* webpackMode: "lazy-once" */
189 `@/pages/Parent/parents.vue` 189 `@/pages/Parent/parents.vue`
190 ) 190 )
191 }, 191 },
192 { 192 {
193 path: '/subject', 193 path: '/subject',
194 meta: {}, 194 meta: {},
195 name: 'subject', 195 name: 'subject',
196 props: (route) => ({ type: route.query.type }), 196 props: (route) => ({ type: route.query.type }),
197 component: () => 197 component: () =>
198 import ( 198 import (
199 /* webpackChunkName: "routes" */ 199 /* webpackChunkName: "routes" */
200 /* webpackMode: "lazy-once" */ 200 /* webpackMode: "lazy-once" */
201 `@/pages/Subjects/subjects.vue` 201 `@/pages/Subjects/subjects.vue`
202 ) 202 )
203 }, 203 },
204 { 204 {
205 path: '/dashboard', 205 path: '/dashboard',
206 meta: {}, 206 meta: {},
207 name: 'Dashboard', 207 name: 'Dashboard',
208 props: (route) => ({ type: route.query.type }), 208 props: (route) => ({ type: route.query.type }),
209 component: () => 209 component: () =>
210 import ( 210 import (
211 /* webpackChunkName: "routes" */ 211 /* webpackChunkName: "routes" */
212 /* webpackMode: "lazy-once" */ 212 /* webpackMode: "lazy-once" */
213 `@/pages/Dashboard/dashboard.vue` 213 `@/pages/Dashboard/dashboard.vue`
214 ) 214 )
215 }, 215 },
216 { 216 {
217 path: '/socialMedia', 217 path: '/socialMedia',
218 meta: {}, 218 meta: {},
219 name: 'SocialMedia', 219 name: 'SocialMedia',
220 props: (route) => ({ type: route.query.type }), 220 props: (route) => ({ type: route.query.type }),
221 component: () => 221 component: () =>
222 import ( 222 import (
223 /* webpackChunkName: "routes" */ 223 /* webpackChunkName: "routes" */
224 /* webpackMode: "lazy-once" */ 224 /* webpackMode: "lazy-once" */
225 `@/pages/socialMedia/socialMedia.vue` 225 `@/pages/socialMedia/socialMedia.vue`
226 ) 226 )
227 }, 227 },
228 { 228 {
229 path: '/gallery', 229 path: '/gallery',
230 meta: {}, 230 meta: {},
231 name: 'Gallery', 231 name: 'Gallery',
232 props: (route) => ({ type: route.query.type }), 232 props: (route) => ({ type: route.query.type }),
233 component: () => 233 component: () =>
234 import ( 234 import (
235 /* webpackChunkName: "routes" */ 235 /* webpackChunkName: "routes" */
236 /* webpackMode: "lazy-once" */ 236 /* webpackMode: "lazy-once" */
237 `@/pages/Gallery/gallery.vue` 237 `@/pages/Gallery/gallery.vue`
238 ) 238 )
239 }, 239 },
240 { 240 {
241 path: '/event', 241 path: '/event',
242 meta: {}, 242 meta: {},
243 name: 'Event', 243 name: 'Event',
244 props: (route) => ({ type: route.query.type }), 244 props: (route) => ({ type: route.query.type }),
245 component: () => 245 component: () =>
246 import ( 246 import (
247 /* webpackChunkName: "routes" */ 247 /* webpackChunkName: "routes" */
248 /* webpackMode: "lazy-once" */ 248 /* webpackMode: "lazy-once" */
249 `@/pages/Event/event.vue` 249 `@/pages/Event/event.vue`
250 ) 250 )
251 }, 251 },
252 { 252 {
253 path: '/holiday', 253 path: '/holiday',
254 meta: {}, 254 meta: {},
255 name: 'Holiday', 255 name: 'Holiday',
256 props: (route) => ({ type: route.query.type }), 256 props: (route) => ({ type: route.query.type }),
257 component: () => 257 component: () =>
258 import ( 258 import (
259 /* webpackChunkName: "routes" */ 259 /* webpackChunkName: "routes" */
260 /* webpackMode: "lazy-once" */ 260 /* webpackMode: "lazy-once" */
261 `@/pages/Holiday/holiday.vue` 261 `@/pages/Holiday/holiday.vue`
262 ) 262 )
263 }, 263 },
264 { 264 {
265 path: '/user', 265 path: '/user',
266 meta: {}, 266 meta: {},
267 name: 'User', 267 name: 'User',
268 props: (route) => ({ type: route.query.type }), 268 props: (route) => ({ type: route.query.type }),
269 component: () => 269 component: () =>
270 import ( 270 import (
271 /* webpackChunkName: "routes" */ 271 /* webpackChunkName: "routes" */
272 /* webpackMode: "lazy-once" */ 272 /* webpackMode: "lazy-once" */
273 `@/pages/User/user.vue` 273 `@/pages/User/user.vue`
274 ) 274 )
275 }, 275 },
276 { 276 {
277 path: '/AttendenceStudent', 277 path: '/AttendenceStudent',
278 meta: {}, 278 meta: {},
279 name: 'studentAttendence', 279 name: 'studentAttendence',
280 props: (route) => ({ type: route.query.type }), 280 props: (route) => ({ type: route.query.type }),
281 component: () => 281 component: () =>
282 import ( 282 import (
283 /* webpackChunkName: "routes" */ 283 /* webpackChunkName: "routes" */
284 /* webpackMode: "lazy-once" */ 284 /* webpackMode: "lazy-once" */
285 `@/pages/Attendence/studentAttendence.vue` 285 `@/pages/Attendence/studentAttendence.vue`
286 ) 286 )
287 }, 287 },
288 { 288 {
289 path: '/AttendenceTeacher', 289 path: '/AttendenceTeacher',
290 meta: {}, 290 meta: {},
291 name: 'teacherAttendence', 291 name: 'teacherAttendence',
292 props: (route) => ({ type: route.query.type }), 292 props: (route) => ({ type: route.query.type }),
293 component: () => 293 component: () =>
294 import ( 294 import (
295 /* webpackChunkName: "routes" */ 295 /* webpackChunkName: "routes" */
296 /* webpackMode: "lazy-once" */ 296 /* webpackMode: "lazy-once" */
297 `@/pages/Attendence/teacherAttendence.vue` 297 `@/pages/Attendence/teacherAttendence.vue`
298 ) 298 )
299 }, 299 },
300 { 300 {
301 path: '/AttendenceUser', 301 path: '/AttendenceUser',
302 meta: {}, 302 meta: {},
303 name: 'userAttendence', 303 name: 'userAttendence',
304 props: (route) => ({ type: route.query.type }), 304 props: (route) => ({ type: route.query.type }),
305 component: () => 305 component: () =>
306 import ( 306 import (
307 /* webpackChunkName: "routes" */ 307 /* webpackChunkName: "routes" */
308 /* webpackMode: "lazy-once" */ 308 /* webpackMode: "lazy-once" */
309 `@/pages/Attendence/userAttendence.vue` 309 `@/pages/Attendence/userAttendence.vue`
310 ) 310 )
311 }, 311 },
312 { 312 {
313 path: '/feeTypes', 313 path: '/feeTypes',
314 meta: {}, 314 meta: {},
315 name: 'feeTypes', 315 name: 'feeTypes',
316 props: (route) => ({ type: route.query.type }), 316 props: (route) => ({ type: route.query.type }),
317 component: () => 317 component: () =>
318 import ( 318 import (
319 /* webpackChunkName: "routes" */ 319 /* webpackChunkName: "routes" */
320 /* webpackMode: "lazy-once" */ 320 /* webpackMode: "lazy-once" */
321 `@/pages/Account/feeTypes.vue` 321 `@/pages/Account/feeTypes.vue`
322 ) 322 )
323 }, 323 },
324 { 324 {
325 path: '/invoice', 325 path: '/invoice',
326 meta: {}, 326 meta: {},
327 name: 'Invoice', 327 name: 'Invoice',
328 props: (route) => ({ type: route.query.type }), 328 props: (route) => ({ type: route.query.type }),
329 component: () => 329 component: () =>
330 import ( 330 import (
331 /* webpackChunkName: "routes" */ 331 /* webpackChunkName: "routes" */
332 /* webpackMode: "lazy-once" */ 332 /* webpackMode: "lazy-once" */
333 `@/pages/Account/invoice.vue` 333 `@/pages/Account/invoice.vue`
334 ) 334 )
335 }, 335 },
336 { 336 {
337 path: '/paymentHistory', 337 path: '/paymentHistory',
338 meta: {}, 338 meta: {},
339 name: 'paymentHistory', 339 name: 'paymentHistory',
340 props: (route) => ({ type: route.query.type }), 340 props: (route) => ({ type: route.query.type }),
341 component: () => 341 component: () =>
342 import ( 342 import (
343 /* webpackChunkName: "routes" */ 343 /* webpackChunkName: "routes" */
344 /* webpackMode: "lazy-once" */ 344 /* webpackMode: "lazy-once" */
345 `@/pages/Account/paymentHistory.vue` 345 `@/pages/Account/paymentHistory.vue`
346 ) 346 )
347 }, 347 },
348 { 348 {
349 path: '/expense', 349 path: '/expense',
350 meta: {}, 350 meta: {},
351 name: 'Expense', 351 name: 'Expense',
352 props: (route) => ({ type: route.query.type }), 352 props: (route) => ({ type: route.query.type }),
353 component: () => 353 component: () =>
354 import ( 354 import (
355 /* webpackChunkName: "routes" */ 355 /* webpackChunkName: "routes" */
356 /* webpackMode: "lazy-once" */ 356 /* webpackMode: "lazy-once" */
357 `@/pages/Account/expense.vue` 357 `@/pages/Account/expense.vue`
358 ) 358 )
359 }, 359 },
360 { 360 {
361 path: '/income', 361 path: '/income',
362 meta: {}, 362 meta: {},
363 name: 'Income', 363 name: 'Income',
364 props: (route) => ({ type: route.query.type }), 364 props: (route) => ({ type: route.query.type }),
365 component: () => 365 component: () =>
366 import ( 366 import (
367 /* webpackChunkName: "routes" */ 367 /* webpackChunkName: "routes" */
368 /* webpackMode: "lazy-once" */ 368 /* webpackMode: "lazy-once" */
369 `@/pages/Account/income.vue` 369 `@/pages/Account/income.vue`
370 ) 370 )
371 }, 371 },
372 { 372 {
373 path: '/libraryMember', 373 path: '/libraryMember',
374 meta: {}, 374 meta: {},
375 name: 'libraryMember', 375 name: 'libraryMember',
376 props: (route) => ({ type: route.query.type }), 376 props: (route) => ({ type: route.query.type }),
377 component: () => 377 component: () =>
378 import ( 378 import (
379 /* webpackChunkName: "routes" */ 379 /* webpackChunkName: "routes" */
380 /* webpackMode: "lazy-once" */ 380 /* webpackMode: "lazy-once" */
381 `@/pages/Library/member.vue` 381 `@/pages/Library/member.vue`
382 ) 382 )
383 }, 383 },
384 { 384 {
385 path: '/books', 385 path: '/books',
386 meta: {}, 386 meta: {},
387 name: 'Books', 387 name: 'Books',
388 props: (route) => ({ type: route.query.type }), 388 props: (route) => ({ type: route.query.type }),
389 component: () => 389 component: () =>
390 import ( 390 import (
391 /* webpackChunkName: "routes" */ 391 /* webpackChunkName: "routes" */
392 /* webpackMode: "lazy-once" */ 392 /* webpackMode: "lazy-once" */
393 `@/pages/Library/books.vue` 393 `@/pages/Library/books.vue`
394 ) 394 )
395 }, 395 },
396 { 396 {
397 path: '/issue', 397 path: '/issue',
398 meta: {}, 398 meta: {},
399 name: 'Issue', 399 name: 'Issue',
400 props: (route) => ({ type: route.query.type }), 400 props: (route) => ({ type: route.query.type }),
401 component: () => 401 component: () =>
402 import ( 402 import (
403 /* webpackChunkName: "routes" */ 403 /* webpackChunkName: "routes" */
404 /* webpackMode: "lazy-once" */ 404 /* webpackMode: "lazy-once" */
405 `@/pages/Library/issue.vue` 405 `@/pages/Library/issue.vue`
406 ) 406 )
407 }, 407 },
408 { 408 {
409 path: '/e-books', 409 path: '/e-books',
410 meta: {}, 410 meta: {},
411 name: 'eBooks', 411 name: 'eBooks',
412 props: (route) => ({ type: route.query.type }), 412 props: (route) => ({ type: route.query.type }),
413 component: () => 413 component: () =>
414 import ( 414 import (
415 /* webpackChunkName: "routes" */ 415 /* webpackChunkName: "routes" */
416 /* webpackMode: "lazy-once" */ 416 /* webpackMode: "lazy-once" */
417 `@/pages/Library/eBook.vue` 417 `@/pages/Library/eBook.vue`
418 ) 418 )
419 }, 419 },
420 { 420 {
421 path: '/invoiceId/:invoiceid', 421 path: '/invoiceId/:invoiceid',
422 meta: {}, 422 meta: {},
423 name: 'EditInvoice', 423 name: 'EditInvoice',
424 // props: (route) => ({ type: route.query.type }), 424 // props: (route) => ({ type: route.query.type }),
425 component: () => 425 component: () =>
426 import ( 426 import (
427 /* webpackChunkName: "routes" */ 427 /* webpackChunkName: "routes" */
428 /* webpackMode: "lazy-once" */ 428 /* webpackMode: "lazy-once" */
429 `@/pages/Account/editInvoice.vue` 429 `@/pages/Account/editInvoice.vue`
430 ) 430 )
431 }, 431 },
432 { 432 {
433 path: '/StudentsAttendence/:id', 433 path: '/StudentsAttendence/:id',
434 meta: {}, 434 meta: {},
435 name: 'ViewStudentsAttendence', 435 name: 'ViewStudentsAttendence',
436 props: (route) => ({ type: route.query.type }), 436 props: (route) => ({ type: route.query.type }),
437 component: () => 437 component: () =>
438 import ( 438 import (
439 /* webpackChunkName: "routes" */ 439 /* webpackChunkName: "routes" */
440 /* webpackMode: "lazy-once" */ 440 /* webpackMode: "lazy-once" */
441 `@/pages/Attendence/viewStudentsAttendence.vue` 441 `@/pages/Attendence/viewStudentsAttendence.vue`
442 ) 442 )
443 }, 443 },
444 { 444 {
445 path: '/viewInvoice/:viewInvoiceId', 445 path: '/viewInvoice/:viewInvoiceId',
446 meta: {}, 446 meta: {},
447 name: 'ViewInvoice', 447 name: 'ViewInvoice',
448 props: (route) => ({ type: route.query.type }), 448 props: (route) => ({ type: route.query.type }),
449 component: () => 449 component: () =>
450 import ( 450 import (
451 /* webpackChunkName: "routes" */ 451 /* webpackChunkName: "routes" */
452 /* webpackMode: "lazy-once" */ 452 /* webpackMode: "lazy-once" */
453 `@/pages/Account/viewInvoice.vue` 453 `@/pages/Account/viewInvoice.vue`
454 ) 454 )
455 }, 455 },
456 { 456 {
457 path: '/exam', 457 path: '/exam',
458 meta: {}, 458 meta: {},
459 name: 'Exam', 459 name: 'Exam',
460 props: (route) => ({ type: route.query.type }), 460 props: (route) => ({ type: route.query.type }),
461 component: () => 461 component: () =>
462 import ( 462 import (
463 /* webpackChunkName: "routes" */ 463 /* webpackChunkName: "routes" */
464 /* webpackMode: "lazy-once" */ 464 /* webpackMode: "lazy-once" */
465 `@/pages/Exam/exam.vue` 465 `@/pages/Exam/exam.vue`
466 ) 466 )
467 }, 467 },
468 { 468 {
469 path: '/grade', 469 path: '/grade',
470 meta: {}, 470 meta: {},
471 name: 'Grade', 471 name: 'Grade',
472 props: (route) => ({ type: route.query.type }), 472 props: (route) => ({ type: route.query.type }),
473 component: () => 473 component: () =>
474 import ( 474 import (
475 /* webpackChunkName: "routes" */ 475 /* webpackChunkName: "routes" */
476 /* webpackMode: "lazy-once" */ 476 /* webpackMode: "lazy-once" */
477 `@/pages/Exam/grade.vue` 477 `@/pages/Exam/grade.vue`
478 ) 478 )
479 }, 479 },
480 { 480 {
481 path: '/examSchedule', 481 path: '/examSchedule',
482 meta: {}, 482 meta: {},
483 name: 'ExamSchedule', 483 name: 'ExamSchedule',
484 props: (route) => ({ type: route.query.type }), 484 props: (route) => ({ type: route.query.type }),
485 component: () => 485 component: () =>
486 import ( 486 import (
487 /* webpackChunkName: "routes" */ 487 /* webpackChunkName: "routes" */
488 /* webpackMode: "lazy-once" */ 488 /* webpackMode: "lazy-once" */
489 `@/pages/Exam/examSchedule.vue` 489 `@/pages/Exam/examSchedule.vue`
490 ) 490 )
491 }, 491 },
492 { 492 {
493 path: '/mark', 493 path: '/mark',
494 meta: {}, 494 meta: {},
495 name: 'Mark', 495 name: 'Mark',
496 props: (route) => ({ type: route.query.type }), 496 props: (route) => ({ type: route.query.type }),
497 component: () => 497 component: () =>
498 import ( 498 import (
499 /* webpackChunkName: "routes" */ 499 /* webpackChunkName: "routes" */
500 /* webpackMode: "lazy-once" */ 500 /* webpackMode: "lazy-once" */
501 `@/pages/Mark/mark.vue` 501 `@/pages/Mark/mark.vue`
502 ) 502 )
503 }, 503 },
504 { 504 {
505 path: '/viewMark/:markId', 505 path: '/viewMark/:markId',
506 meta: {}, 506 meta: {},
507 name: 'viewMark', 507 name: 'viewMark',
508 props: (route) => ({ type: route.query.type }), 508 props: (route) => ({ type: route.query.type }),
509 component: () => 509 component: () =>
510 import ( 510 import (
511 /* webpackChunkName: "routes" */ 511 /* webpackChunkName: "routes" */
512 /* webpackMode: "lazy-once" */ 512 /* webpackMode: "lazy-once" */
513 `@/pages/Mark/viewMark.vue` 513 `@/pages/Mark/viewMark.vue`
514 ) 514 )
515 }, 515 },
516 { 516 {
517 path: '/markDistribution', 517 path: '/markDistribution',
518 meta: {}, 518 meta: {},
519 name: 'markDistribution', 519 name: 'markDistribution',
520 props: (route) => ({ type: route.query.type }), 520 props: (route) => ({ type: route.query.type }),
521 component: () => 521 component: () =>
522 import ( 522 import (
523 /* webpackChunkName: "routes" */ 523 /* webpackChunkName: "routes" */
524 /* webpackMode: "lazy-once" */ 524 /* webpackMode: "lazy-once" */
525 `@/pages/Mark/markDistribution.vue` 525 `@/pages/Mark/markDistribution.vue`
526 ) 526 )
527 }, 527 },
528 { 528 {
529 path: '/promotion', 529 path: '/promotion',
530 meta: {}, 530 meta: {},
531 name: 'Promotion', 531 name: 'Promotion',
532 props: (route) => ({ type: route.query.type }), 532 props: (route) => ({ type: route.query.type }),
533 component: () => 533 component: () =>
534 import ( 534 import (
535 /* webpackChunkName: "routes" */ 535 /* webpackChunkName: "routes" */
536 /* webpackMode: "lazy-once" */ 536 /* webpackMode: "lazy-once" */
537 `@/pages/Mark/promotion.vue` 537 `@/pages/Mark/promotion.vue`
538 ) 538 )
539 }, 539 },
540 { 540 {
541 path: '/academicYear', 541 path: '/academicYear',
542 meta: {}, 542 meta: {},
543 name: 'academicYear', 543 name: 'academicYear',
544 props: (route) => ({ type: route.query.type }), 544 props: (route) => ({ type: route.query.type }),
545 component: () => 545 component: () =>
546 import ( 546 import (
547 /* webpackChunkName: "routes" */ 547 /* webpackChunkName: "routes" */
548 /* webpackMode: "lazy-once" */ 548 /* webpackMode: "lazy-once" */
549 `@/pages/Administrator/academicYear.vue` 549 `@/pages/Administrator/academicYear.vue`
550 ) 550 )
551 }, 551 },
552 { 552 {
553 path: '/systemAdmin', 553 path: '/systemAdmin',
554 meta: {}, 554 meta: {},
555 name: 'systemAdmin', 555 name: 'systemAdmin',
556 props: (route) => ({ type: route.query.type }), 556 props: (route) => ({ type: route.query.type }),
557 component: () => 557 component: () =>
558 import ( 558 import (
559 /* webpackChunkName: "routes" */ 559 /* webpackChunkName: "routes" */
560 /* webpackMode: "lazy-once" */ 560 /* webpackMode: "lazy-once" */
561 `@/pages/Administrator/systemAdmin.vue` 561 `@/pages/Administrator/systemAdmin.vue`
562 ) 562 )
563 }, 563 },
564 { 564 {
565 path: '/resetPassword', 565 path: '/resetPassword',
566 meta: {}, 566 meta: {},
567 name: 'resetPassword', 567 name: 'resetPassword',
568 props: (route) => ({ type: route.query.type }), 568 props: (route) => ({ type: route.query.type }),
569 component: () => 569 component: () =>
570 import ( 570 import (
571 /* webpackChunkName: "routes" */ 571 /* webpackChunkName: "routes" */
572 /* webpackMode: "lazy-once" */ 572 /* webpackMode: "lazy-once" */
573 `@/pages/Administrator/resetPassword.vue` 573 `@/pages/Administrator/resetPassword.vue`
574 ) 574 )
575 }, 575 },
576 { 576 {
577 path: '/role', 577 path: '/role',
578 meta: {}, 578 meta: {},
579 name: 'Role', 579 name: 'Role',
580 props: (route) => ({ type: route.query.type }), 580 props: (route) => ({ type: route.query.type }),
581 component: () => 581 component: () =>
582 import ( 582 import (
583 /* webpackChunkName: "routes" */ 583 /* webpackChunkName: "routes" */
584 /* webpackMode: "lazy-once" */ 584 /* webpackMode: "lazy-once" */
585 `@/pages/Administrator/role.vue` 585 `@/pages/Administrator/role.vue`
586 ) 586 )
587 }, 587 },
588 { 588 {
589 path: '/bulkImport',
590 meta: {},
591 name: 'bulkImport',
592 props: (route) => ({ type: route.query.type }),
593 component: () =>
594 import (
595 /* webpackChunkName: "routes" */
596 /* webpackMode: "lazy-once" */
597 `@/pages/Administrator/bulkImport.vue`
598 )
599 },
600 {
589 path: '/studentReport', 601 path: '/studentReport',
590 meta: {}, 602 meta: {},
591 name: 'studentReport', 603 name: 'studentReport',
592 props: (route) => ({ type: route.query.type }), 604 props: (route) => ({ type: route.query.type }),
593 component: () => 605 component: () =>
594 import ( 606 import (
595 /* webpackChunkName: "routes" */ 607 /* webpackChunkName: "routes" */
596 /* webpackMode: "lazy-once" */ 608 /* webpackMode: "lazy-once" */
597 `@/pages/Report/studentReport.vue` 609 `@/pages/Report/studentReport.vue`
598 ) 610 )
599 }, 611 },
600 { 612 {
601 path: '/progressCardReport', 613 path: '/progressCardReport',
602 meta: {}, 614 meta: {},
603 name: 'progressCardReport', 615 name: 'progressCardReport',
604 props: (route) => ({ type: route.query.type }), 616 props: (route) => ({ type: route.query.type }),
605 component: () => 617 component: () =>
606 import ( 618 import (
607 /* webpackChunkName: "routes" */ 619 /* webpackChunkName: "routes" */
608 /* webpackMode: "lazy-once" */ 620 /* webpackMode: "lazy-once" */
609 `@/pages/Report/progressCardReport.vue` 621 `@/pages/Report/progressCardReport.vue`
610 ) 622 )
611 }, 623 },
612 { 624 {
613 path: '/generalSetting', 625 path: '/generalSetting',
614 meta: {}, 626 meta: {},
615 name: 'generalSetting', 627 name: 'generalSetting',
616 props: (route) => ({ type: route.query.type }), 628 props: (route) => ({ type: route.query.type }),
617 component: () => 629 component: () =>
618 import ( 630 import (
619 /* webpackChunkName: "routes" */ 631 /* webpackChunkName: "routes" */
620 /* webpackMode: "lazy-once" */ 632 /* webpackMode: "lazy-once" */
621 `@/pages/generalSetting/generalSetting.vue` 633 `@/pages/generalSetting/generalSetting.vue`
622 ) 634 )
623 }, 635 },
624 636
637 //////SCHOOL
638
625 { 639 {
626 path: '/school', 640 path: '/school',
627 meta: {}, 641 meta: {},
628 name: 'School', 642 name: 'School',
629 props: (route) => ({ type: route.query.type }), 643 props: (route) => ({ type: route.query.type }),
630 component: () => 644 component: () =>
631 import ( 645 import (
632 /* webpackChunkName: "routes" */ 646 /* webpackChunkName: "routes" */
633 /* webpackMode: "lazy-once" */ 647 /* webpackMode: "lazy-once" */
634 `@/pages/School/school.vue` 648 `@/pages/School/school.vue`
635 ) 649 )
636 } 650 }
637 ]; 651 ];
src/script/books.js
File was created 1 export default () => {
2
3 const books = [{
4 "Book": "Math",
5 "Subject": "002015",
6 "Author": "R D Sharma",
7 "Price": "600",
8 "Quantity": "15",
9 "Rack": "110",
10 },
11 {
12 "Book": "Hindi",
13 "Subject": "059090",
14 "Author": "V Kumar",
15 "Price": "400",
16 "Quantity": "5",
17 "Rack": "10",
18 },
19 ]
20 return books;
21
22 }
src/script/parents.js
File was created 1 export default () => {
2
3 const parents = [{
4 "email": "digital@theideazfactory.com",
5 "fatherName": "Abhishek",
6 "fatherCellNo": "9898981234",
7 "motherName": "Rita",
8 "motherCellNo": "8989786789",
9 },
10 {
11 "email": "Rampal@viithiisys.com",
12 "fatherName": "suresh",
13 "fatherCellNo": "9898987867",
14 "motherName": "rita kumari",
15 "motherCellNo": "9768576536",
16 }
17 ]
18 return parents;
19
20 }
src/script/students.js
File was created 1 export default () => {
2
3 const students = [{
4 "name": "Rishav Singla",
5 "email": "rsingla.rishu@gmail.com",
6 "rollNo": "1",
7 "dob": "1993-10-08",
8 "gender": "Male",
9 "bloodGroup": "A+",
10 "mobile": "9914092452",
11 "city": "Chandigarh",
12 "country": "India",
13 "presentAddress": "Mohali Sector ",
14 "state": "Punjab",
15 },
16 {
17 "name": "Shubham Chugh",
18 "email": "shubham@theideazfactory.com",
19 "rollNo": "2",
20 "dob": "1994-05-29",
21 "gender": "Male",
22 "bloodGroup": "A+",
23 "mobile": "8077362128",
24 "city": "Chandigarh",
25 "country": "India",
26 "presentAddress": "#1571, ground floor, sector 7C",
27 "state": "Chandigarh",
28 },
29 ]
30 return students;
31 }
src/script/teachers.js
File was created 1 export default () => {
2
3 const teachers = [{
4 "name": "Test Teacher",
5 "email": "shubhamchugh1992@gmail.com",
6 "dob": "1994-05-01",
7 "city": "Chandigarh",
8 "country": "India",
9 "presentAddress": "SCO 34, second floor",
10 "mobileNo": "08558875847",
11 "state": "Chandigarh",
12 "joinDate": "2019-11-18",
13 },
14 {
15 "name": "Neeraj Sharma",
16 "email": "neeraj.sharma@viithiisys.com",
17 "dob": "1995-01-14",
18 "city": "Mohali",
19 "country": "India",
20 "presentAddress": "sector 71 ,Mohali",
21 "mobileNo": "7009191451",
22 "state": "Punjab",
23 "joinDate": "2018-04-23",
24 }
25 ]
26 return teachers;
27 }
src/script/users.js
File was created 1 export default () => {
2
3 const users = [{
4 "name": "Neeraj",
5 "email": "neeraj.sharma@viithiisys.com",
6 "dob": "1995-01-14",
7 "gender": "Male",
8 "religion": "Hindu",
9 "address": "Mohali",
10 "phone": "1234567890",
11 "joiningDate": "2016-08-17",
12 },
13 {
14 "name": "Rishav",
15 "email": "rishav.singla@viithiisys.com",
16 "dob": "1995-01-14",
17 "gender": "Male",
18 "religion": "Hindu",
19 "address": "Punjab",
20 "phone": "9878768790",
21 "joiningDate": "2016-08-17",
22 }
23 ]
24 return users;
25
26 }