Blame view

src/pages/Attendence/teacherAttendence.vue 11.2 KB
687e0b929   Neeraj Sharma   add user,attenden...
1
  <template>
68d742034   Neeraj Sharma   implement new des...
2
3
4
5
6
7
8
9
10
11
12
13
14
    <v-container fluid class="body-color">
      <!-- ****** ATTENDENCE TACHERS TABLE ****** -->
      <v-toolbar color="transparent" flat>
        <v-btn
          fab
          dark
          class="open-dialog-button hidden-xl-only hidden-md-only hidden-lg-only"
          small
          @click="addTeacherAttendenceDialog = true"
        >
          <v-icon dark>add</v-icon>
        </v-btn>
        <v-btn
710438de6   Shikha Mishra   added teacher mod...
15
          v-if="role != 'TEACHER' "
68d742034   Neeraj Sharma   implement new des...
16
17
18
19
20
21
22
23
24
25
26
          round
          class="open-dialog-button hidden-sm-only hidden-xs-only"
          dark
          @click="addTeacherAttendenceDialog = true"
        >
          <v-icon class="white--text pr-1" size="20">add</v-icon>Add Teacher Attendence
        </v-btn>
        <v-spacer></v-spacer>
        <v-card-title class="body-1" v-show="show">
          <v-btn icon large flat @click="displaySearch">
            <v-avatar size="27">
aa310d61a   Shikha Mishra   added functionali...
27
              <img src="/static/icon/search.png" alt="icon" />
68d742034   Neeraj Sharma   implement new des...
28
29
30
            </v-avatar>
          </v-btn>
        </v-card-title>
612b79bb4   Amber Dev   made serch auto f...
31
        <v-flex xs8 sm8 md3 lg2 v-if="showSearch">
68d742034   Neeraj Sharma   implement new des...
32
          <v-layout>
8e8d14254   Shikha Mishra   Cleared data whil...
33
34
35
36
37
38
39
            <v-text-field
              autofocus
              v-model="search"
              label="Search"
              prepend-inner-icon="search"
              color="primary"
            ></v-text-field>
68d742034   Neeraj Sharma   implement new des...
40
41
42
43
44
45
            <v-icon @click="closeSearch" color="error">close</v-icon>
          </v-layout>
        </v-flex>
      </v-toolbar>
      <v-data-table
        :headers="headers"
7151b71ec   Shikha Mishra   show detail of te...
46
        :items="teachersData"
68d742034   Neeraj Sharma   implement new des...
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
        :pagination.sync="pagination"
        :search="search"
      >
        <template slot="items" slot-scope="props">
          <tr class="tr">
            <td class="td td-row">{{ props.index + 1}}</td>
            <td class="text-xs-center td td-row">
              <v-avatar size="40">
                <img :src="props.item.profilePicUrl" v-if="props.item.profilePicUrl" />
                <img src="/static/icon/user.png" v-else-if="!props.item.profilePicUrl" />
              </v-avatar>
            </td>
            <td class="td td-row text-xs-center">{{ props.item.name}}</td>
            <td class="td td-row text-xs-center">{{ props.item.email }}</td>
            <td class="td td-row text-xs-center">{{ props.item.mobileNo }}</td>
            <td class="text-xs-center td td-row">
              <router-link
2fe1115d8   Shikha Mishra   added csv button ...
64
                :to="{ name:'View Teacher Attendence',params: { teacherId:props.item._id } }"
68d742034   Neeraj Sharma   implement new des...
65
66
67
68
69
70
              >
                <span>
                  <v-tooltip top>
                    <img
                      slot="activator"
                      style="cursor:pointer; width:25px; height:25px; "
aa310d61a   Shikha Mishra   added functionali...
71
                      src="/static/icon/view.png"
68d742034   Neeraj Sharma   implement new des...
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
                    />
                    <span>View</span>
                  </v-tooltip>
                </span>
              </router-link>
            </td>
          </tr>
        </template>
        <v-alert
          slot="no-results"
          :value="true"
          color="error"
          icon="warning"
        >Your search for "{{ search }}" found no results.</v-alert>
      </v-data-table>
      <!-- ****** Add Teachers Attendece****** -->
4dd422bef   Shikha Mishra   change ui of card...
88
89
90
91
92
93
      <v-dialog
        v-model="addTeacherAttendenceDialog"
        width="1600"
        v-if="addTeacherAttendenceDialog"
        persistent
      >
68d742034   Neeraj Sharma   implement new des...
94
95
        <v-card flat class="pa-2">
          <v-layout>
0cd2fbfba   Neeraj Sharma   implement create ...
96
            <v-flex xs12>
68d742034   Neeraj Sharma   implement new des...
97
              <label class="title text-xs-center">Add Teacher Attendence</label>
8e8d14254   Shikha Mishra   Cleared data whil...
98
99
100
101
102
              <v-icon
                size="24"
                class="right"
                @click="$refs.form.reset();addTeacherAttendenceDialog = false"
              >cancel</v-icon>
0cd2fbfba   Neeraj Sharma   implement create ...
103
            </v-flex>
68d742034   Neeraj Sharma   implement new des...
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
          </v-layout>
          <v-flex xs12 class="mt-4">
            <v-form ref="form" v-model="valid" lazy-validation>
              <v-layout wrap>
                <v-flex xs12 class="px-4">
                  <v-layout>
                    <v-flex xs6 sm6 lg3 md4>
                      <v-menu
                        ref="menu"
                        :close-on-content-click="false"
                        v-model="menu"
                        :nudge-right="40"
                        lazy
                        transition="scale-transition"
                        offset-y
                        full-width
                        min-width="290px"
                      >
                        <v-text-field
                          slot="activator"
                          v-model="date"
                          label="Select Date"
                          append-icon="event"
                          :rules="dataValid"
                          readonly
                        ></v-text-field>
                        <v-date-picker
                          ref="picker"
                          v-model="date"
                          :max="new Date().toISOString().substr(0, 10)"
                          min="1950-01-01"
                          @change="save"
                        ></v-date-picker>
                      </v-menu>
                    </v-flex>
                    <v-flex xs6 sm6 lg9 md8>
                      <v-btn class="right mt-3 add-button" dark round @click="showTable">Attendence</v-btn>
                    </v-flex>
                  </v-layout>
                </v-flex>
              </v-layout>
            </v-form>
          </v-flex>
          <v-flex xs12 v-show="attendeceTable" class>
0cd2fbfba   Neeraj Sharma   implement create ...
148
149
150
151
152
153
154
            <v-data-table
              :headers="headers"
              :items="teachersData"
              :pagination.sync="pagination"
              :search="search"
            >
              <template slot="items" slot-scope="props">
68d742034   Neeraj Sharma   implement new des...
155
156
157
158
159
160
161
162
                <tr class="tr">
                  <td class="td td-row">{{ props.index + 1}}</td>
                  <td class="text-xs-center td td-row">
                    <v-avatar size="40">
                      <img :src="props.item.profilePicUrl" v-if="props.item.profilePicUrl" />
                      <img src="/static/icon/user.png" v-else-if="!props.item.profilePicUrl" />
                    </v-avatar>
                  </td>
7151b71ec   Shikha Mishra   show detail of te...
163
164
165
                  <td class="text-xs-center td td-row">{{ props.item.name}}</td>
                  <td class="text-xs-center td td-row">{{ props.item.email }}</td>
                  <td class="text-xs-center td td-row">{{ props.item.mobileNo }}</td>
68d742034   Neeraj Sharma   implement new des...
166
167
168
169
170
171
172
173
174
175
176
                  <td class="text-xs-center td td-row">
                    <v-radio-group v-model="props.item.attendence" :mandatory="false" row>
                      <v-radio
                        v-for="attendences in attendenceType"
                        :key="attendences.value"
                        :label="`${attendences.label}`"
                        :value="attendences.value"
                      ></v-radio>
                    </v-radio-group>
                  </td>
                </tr>
0cd2fbfba   Neeraj Sharma   implement create ...
177
178
              </template>
            </v-data-table>
68d742034   Neeraj Sharma   implement new des...
179
180
181
182
183
184
            <v-flex xs12>
              <v-card-actions>
                <v-spacer></v-spacer>
                <v-btn @click="submit()" class="add-button" round dark>Submit</v-btn>
              </v-card-actions>
            </v-flex>
0cd2fbfba   Neeraj Sharma   implement create ...
185
          </v-flex>
68d742034   Neeraj Sharma   implement new des...
186
187
        </v-card>
      </v-dialog>
0cd2fbfba   Neeraj Sharma   implement create ...
188
189
190
191
192
193
194
195
      <v-snackbar
        :timeout="timeout"
        :top="y === 'top'"
        :right="x === 'right'"
        :vertical="mode === 'vertical'"
        v-model="snackbar"
        color="success"
      >{{ text }}</v-snackbar>
687e0b929   Neeraj Sharma   add user,attenden...
196
197
198
      <div class="loader" v-if="showLoader">
        <v-progress-circular indeterminate color="white"></v-progress-circular>
      </div>
68d742034   Neeraj Sharma   implement new des...
199
    </v-container>
687e0b929   Neeraj Sharma   add user,attenden...
200
201
202
203
  </template>
  
  <script>
  import http from "@/Services/http.js";
687e0b929   Neeraj Sharma   add user,attenden...
204
205
206
207
  import moment from "moment";
  
  export default {
    data: () => ({
0cd2fbfba   Neeraj Sharma   implement create ...
208
209
210
      snackbar: false,
      y: "top",
      x: "right",
710438de6   Shikha Mishra   added teacher mod...
211
      role: "",
0cd2fbfba   Neeraj Sharma   implement create ...
212
      mode: "",
68d742034   Neeraj Sharma   implement new des...
213
      timeout: 5000,
0cd2fbfba   Neeraj Sharma   implement create ...
214
215
216
      text: "",
      date: null,
      menu: false,
68d742034   Neeraj Sharma   implement new des...
217
218
219
      show: true,
      showSearch: false,
      addTeacherAttendenceDialog: false,
0cd2fbfba   Neeraj Sharma   implement create ...
220
      attendeceTable: false,
687e0b929   Neeraj Sharma   add user,attenden...
221
      showLoader: false,
0cd2fbfba   Neeraj Sharma   implement create ...
222
      loading: false,
687e0b929   Neeraj Sharma   add user,attenden...
223
      search: "",
0cd2fbfba   Neeraj Sharma   implement create ...
224
225
226
      valid: true,
      isActive: true,
      newActive: false,
8e8d14254   Shikha Mishra   Cleared data whil...
227
      dataValid: [(v) => !!v || "Date is required"],
0cd2fbfba   Neeraj Sharma   implement create ...
228
229
230
      attendenceType: [
        {
          label: "Present",
8e8d14254   Shikha Mishra   Cleared data whil...
231
          value: "present",
0cd2fbfba   Neeraj Sharma   implement create ...
232
233
234
        },
        {
          label: "Late Present With Excuset",
8e8d14254   Shikha Mishra   Cleared data whil...
235
          value: "latePresentWithExcuse",
0cd2fbfba   Neeraj Sharma   implement create ...
236
237
238
        },
        {
          label: "Late Present",
8e8d14254   Shikha Mishra   Cleared data whil...
239
          value: "latePresent",
0cd2fbfba   Neeraj Sharma   implement create ...
240
241
242
        },
        {
          label: "Absent",
8e8d14254   Shikha Mishra   Cleared data whil...
243
244
          value: "absent",
        },
0cd2fbfba   Neeraj Sharma   implement create ...
245
      ],
687e0b929   Neeraj Sharma   add user,attenden...
246
      pagination: {
8e8d14254   Shikha Mishra   Cleared data whil...
247
        rowsPerPage: 8,
687e0b929   Neeraj Sharma   add user,attenden...
248
249
250
251
      },
      headers: [
        {
          text: "No",
68d742034   Neeraj Sharma   implement new des...
252
          align: "",
687e0b929   Neeraj Sharma   add user,attenden...
253
          sortable: false,
8e8d14254   Shikha Mishra   Cleared data whil...
254
          value: "No",
687e0b929   Neeraj Sharma   add user,attenden...
255
256
257
258
259
        },
        {
          text: "Profile Pic",
          value: "profilePicUrl",
          sortable: false,
8e8d14254   Shikha Mishra   Cleared data whil...
260
          align: "center",
687e0b929   Neeraj Sharma   add user,attenden...
261
262
263
        },
        { text: "Name", value: "name", sortable: false, align: "center" },
        { text: "Email", value: "email", sortable: false, align: "center" },
687e0b929   Neeraj Sharma   add user,attenden...
264
265
266
267
        {
          text: "Mobile No",
          value: "mobileNo",
          sortable: false,
8e8d14254   Shikha Mishra   Cleared data whil...
268
          align: "center",
687e0b929   Neeraj Sharma   add user,attenden...
269
        },
8e8d14254   Shikha Mishra   Cleared data whil...
270
        { text: "Attendance", value: "", sortable: false, align: "center" },
687e0b929   Neeraj Sharma   add user,attenden...
271
      ],
0cd2fbfba   Neeraj Sharma   implement create ...
272
273
      desserts: [],
      teachersData: [],
8e8d14254   Shikha Mishra   Cleared data whil...
274
      addTeachers: {},
687e0b929   Neeraj Sharma   add user,attenden...
275
    }),
0cd2fbfba   Neeraj Sharma   implement create ...
276
277
278
    watch: {
      menu(val) {
        val && this.$nextTick(() => (this.$refs.picker.activePicker = "DAY"));
8e8d14254   Shikha Mishra   Cleared data whil...
279
280
281
      },
      addTeacherAttendenceDialog: function (val) {
        if (!val) {
2f9211c74   Shikha Mishra   done one round of...
282
          // this.teachersData = [];
8e8d14254   Shikha Mishra   Cleared data whil...
283
284
285
286
          this.date = null;
          this.menu = false;
        }
      },
0cd2fbfba   Neeraj Sharma   implement create ...
287
    },
687e0b929   Neeraj Sharma   add user,attenden...
288
    methods: {
0cd2fbfba   Neeraj Sharma   implement create ...
289
290
291
292
293
294
      save(date) {
        this.$refs.menu.save(date);
      },
      showTable() {
        this.attendeceTable = true;
        this.getTeacherList();
687e0b929   Neeraj Sharma   add user,attenden...
295
296
297
298
299
300
      },
      getTeacherList() {
        this.showLoader = true;
        var token = this.$store.state.token;
        http()
          .get("/getTeachersList", {
8e8d14254   Shikha Mishra   Cleared data whil...
301
            headers: { Authorization: "Bearer " + token },
687e0b929   Neeraj Sharma   add user,attenden...
302
          })
8e8d14254   Shikha Mishra   Cleared data whil...
303
          .then((response) => {
0cd2fbfba   Neeraj Sharma   implement create ...
304
            this.teachersData = response.data.data;
7151b71ec   Shikha Mishra   show detail of te...
305
            // this.desserts = response.data.data;
0cd2fbfba   Neeraj Sharma   implement create ...
306
307
308
309
            var attendence = "";
            for (let i = 0; i < this.teachersData.length; i++) {
              this.teachersData[i].attendence = "present";
            }
687e0b929   Neeraj Sharma   add user,attenden...
310
311
            this.showLoader = false;
            // console.log("getTeacherList=====>",this.desserts)
7151b71ec   Shikha Mishra   show detail of te...
312
            // console.log("getTeacherList=====>",this.teachersData)
687e0b929   Neeraj Sharma   add user,attenden...
313
          })
8e8d14254   Shikha Mishra   Cleared data whil...
314
          .catch((error) => {
687e0b929   Neeraj Sharma   add user,attenden...
315
316
317
318
319
320
321
            this.showLoader = false;
            if (error.response.status === 401) {
              this.$router.replace({ path: "/" });
              this.$store.dispatch("setToken", null);
              this.$store.dispatch("Id", null);
            }
          });
0cd2fbfba   Neeraj Sharma   implement create ...
322
      },
0cd2fbfba   Neeraj Sharma   implement create ...
323
324
325
326
327
      submit() {
        var teachersAttendence = [];
        for (var j = 0; j < this.teachersData.length; j++) {
          teachersAttendence.push({
            teacherId: this.teachersData[j]._id,
8e8d14254   Shikha Mishra   Cleared data whil...
328
            attendanceType: this.teachersData[j].attendence,
0cd2fbfba   Neeraj Sharma   implement create ...
329
330
          });
        }
1c0938369   Neeraj Sharma   fixed validation ...
331
332
333
        if (this.$refs.form.validate()) {
          let attendanceData = {
            date: this.date,
8e8d14254   Shikha Mishra   Cleared data whil...
334
            teachers: teachersAttendence,
1c0938369   Neeraj Sharma   fixed validation ...
335
336
337
          };
          http()
            .post("/createTeacherAttendance", attendanceData)
8e8d14254   Shikha Mishra   Cleared data whil...
338
            .then((response) => {
1c0938369   Neeraj Sharma   fixed validation ...
339
340
              this.snackbar = true;
              this.text = response.data.message;
68d742034   Neeraj Sharma   implement new des...
341
              this.addTeacherAttendenceDialog = false;
7efe02762   Amber Dev   made forms reset
342
              this.clear();
1c0938369   Neeraj Sharma   fixed validation ...
343
            })
8e8d14254   Shikha Mishra   Cleared data whil...
344
            .catch((error) => {
1c0938369   Neeraj Sharma   fixed validation ...
345
346
347
348
              this.snackbar = true;
              this.text = error.response.data.message;
            });
        }
0cd2fbfba   Neeraj Sharma   implement create ...
349
350
351
352
      },
      clear() {
        this.$refs.form.reset();
        this.imageUrl = "";
68d742034   Neeraj Sharma   implement new des...
353
354
355
356
357
358
359
360
361
      },
  
      displaySearch() {
        (this.show = false), (this.showSearch = true);
      },
      closeSearch() {
        this.showSearch = false;
        this.show = true;
        this.search = "";
8e8d14254   Shikha Mishra   Cleared data whil...
362
      },
687e0b929   Neeraj Sharma   add user,attenden...
363
364
365
    },
    mounted() {
      this.getTeacherList();
710438de6   Shikha Mishra   added teacher mod...
366
      this.role = this.$store.state.role;
8e8d14254   Shikha Mishra   Cleared data whil...
367
    },
687e0b929   Neeraj Sharma   add user,attenden...
368
  };
68d742034   Neeraj Sharma   implement new des...
369
  </script>