Blame view

src/pages/Payroll/hourlyTemplate.vue 12.5 KB
7fea6db0b   Shikha Mishra   added feature of ...
1
2
3
  <template>
    <v-container fluid class="body-color">
      <!-- ****** Edit  Hourly Template  ****** -->
db965de89   Amber Dev   added dialog pers...
4
      <v-dialog v-model="editHourDialog" max-width="400px" persistent>
4dd422bef   Shikha Mishra   change ui of card...
5
        <v-card flat class="Card-style pa-2">
7fea6db0b   Shikha Mishra   added feature of ...
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
          <v-layout>
            <v-flex xs12>
              <label class="title text-xs-center">Edit Hourly Template</label>
              <v-icon size="24" class="right" @click="editHourDialog = false">cancel</v-icon>
            </v-flex>
          </v-layout>
          <v-form ref="form">
            <v-container fluid>
              <v-flex xs12 sm12>
                <v-layout>
                  <v-flex xs3 class="pt-4 subheading">
                    <label class="right">Hourly Grades:</label>
                  </v-flex>
                  <v-flex xs8 sm7 class="ml-3">
                    <v-text-field
                      v-model="editedItem.hourlyGrades"
                      placeholder="please fill this field"
                    ></v-text-field>
                  </v-flex>
                </v-layout>
              </v-flex>
              <v-flex xs12 sm12>
                <v-layout>
                  <v-flex xs3 class="pt-4 subheading">
                    <label class="right">Hourly Reates:</label>
                  </v-flex>
                  <v-flex xs8 sm7 class="ml-3">
                    <v-text-field
                      v-model="editedItem.hourlyRate"
                      placeholder="please fill this field"
                    ></v-text-field>
                  </v-flex>
                </v-layout>
              </v-flex>
              <v-layout>
                <v-flex xs12>
                  <v-layout>
                    <v-spacer></v-spacer>
                    <v-btn round dark @click="save" class="add-button">Update Hourly Template</v-btn>
                    <v-spacer></v-spacer>
                  </v-layout>
                </v-flex>
              </v-layout>
            </v-container>
          </v-form>
        </v-card>
      </v-dialog>
  
      <!-- **** HOURLY TEMPLATE **** -->
      <v-toolbar color="transparent" flat>
        <v-btn
          fab
          dark
          class="open-dialog-button hidden-xl-only hidden-md-only hidden-lg-only"
          small
          @click="addHourDialog = true"
        >
          <v-icon dark>add</v-icon>
        </v-btn>
        <v-btn
          round
          class="open-dialog-button hidden-sm-only hidden-xs-only"
          dark
          @click="addHourDialog = true"
        >
          <v-icon class="white--text pr-1" size="20">add</v-icon>Add Hourly Template
        </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">
              <img src="/static/icon/search.png" alt="icon" />
            </v-avatar>
          </v-btn>
        </v-card-title>
612b79bb4   Amber Dev   made serch auto f...
81
        <v-flex xs8 sm8 md3 lg2 v-if="showSearch">
7fea6db0b   Shikha Mishra   added feature of ...
82
          <v-layout>
8e8d14254   Shikha Mishra   Cleared data whil...
83
84
85
86
87
88
89
            <v-text-field
              autofocus
              v-model="search"
              label="Search"
              prepend-inner-icon="search"
              color="primary"
            ></v-text-field>
7fea6db0b   Shikha Mishra   added feature of ...
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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
            <v-icon @click="closeSearch" color="error">close</v-icon>
          </v-layout>
        </v-flex>
      </v-toolbar>
  
      <v-data-table
        :headers="headers"
        :items="hourlyData"
        :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="td td-row text-xs-center">{{ props.item.hourlyGrades}}</td>
            <td class="td td-row text-xs-center">{{ props.item.hourlyRate}}</td>
            <!-- <td class="td td-row text-xs-center">{{ props.item.overtimeRate}}</td> -->
            <td class="td td-row text-xs-center">
              <span>
                <v-tooltip top>
                  <img
                    slot="activator"
                    style="cursor:pointer; width:20px; height:18px; "
                    class="mr-3"
                    @click="editItem(props.item)"
                    src="/static/icon/edit.png"
                  />
                  <span>Edit</span>
                </v-tooltip>
                <v-tooltip top>
                  <img
                    slot="activator"
                    style="cursor:pointer; width:20px; height:20px; "
                    class="mr-3"
                    @click="deleteItem(props.item)"
                    src="/static/icon/delete.png"
                  />
                  <span>Delete</span>
                </v-tooltip>
              </span>
            </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 Hourly Template **** -->
db965de89   Amber Dev   added dialog pers...
142
      <v-dialog v-model="addHourDialog" max-width="400px" v-if="addHourDialog" persistent>
4dd422bef   Shikha Mishra   change ui of card...
143
        <v-card flat class="Card-style pa-2">
7fea6db0b   Shikha Mishra   added feature of ...
144
145
146
          <v-layout>
            <v-flex xs12>
              <label class="title text-xs-center">Add Hourly Template</label>
8e8d14254   Shikha Mishra   Cleared data whil...
147
              <v-icon size="24" class="right" @click="closeAddHourModel">cancel</v-icon>
7fea6db0b   Shikha Mishra   added feature of ...
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
            </v-flex>
          </v-layout>
          <v-form ref="form" v-model="valid" lazy-validation>
            <v-container fluid>
              <v-flex xs12>
                <v-layout>
                  <v-flex xs4 class="pt-4 subheading">
                    <label class="right">Hourly Grades:</label>
                  </v-flex>
                  <v-flex xs8 sm7 class="ml-3">
                    <v-text-field
                      placeholder="Please fill this field"
                      :rules="hourRules"
                      v-model="hourlyTypes.hourlyGrades"
                    ></v-text-field>
                  </v-flex>
                </v-layout>
              </v-flex>
              <v-flex xs12>
                <v-layout>
                  <v-flex xs4 class="pt-4 subheading">
                    <label class="right">Hourly Rate:</label>
                  </v-flex>
                  <v-flex xs8 sm7 class="ml-3">
                    <v-text-field
                      placeholder="Please fill this field"
                      :rules="hourRules"
                      v-model="hourlyTypes.hourlyRate"
                    ></v-text-field>
                  </v-flex>
                </v-layout>
              </v-flex>
              <v-layout>
                <v-flex xs12 sm12>
                  <v-layout>
                    <v-spacer></v-spacer>
                    <!-- <v-btn @click="clear" round class="add-button" dark>clear</v-btn> -->
                    <v-btn
                      @click="submit"
                      round
                      dark
                      :loading="loading"
                      class="add-button"
                    >Add Hourly Template</v-btn>
                    <v-spacer></v-spacer>
                  </v-layout>
                </v-flex>
              </v-layout>
            </v-container>
          </v-form>
        </v-card>
      </v-dialog>
  
      <v-snackbar
        :timeout="timeout"
        :top="y === 'top'"
        :right="x === 'right'"
        :vertical="mode === 'vertical'"
        v-model="snackbar"
        :color="color"
      >{{ text }}</v-snackbar>
      <div class="loader" v-if="showLoader">
        <v-progress-circular indeterminate color="white"></v-progress-circular>
      </div>
    </v-container>
  </template>
  
  <script>
  import http from "@/Services/http.js";
  import moment from "moment";
  
  export default {
    data: () => ({
      snackbar: false,
      date: null,
      color: "",
      y: "top",
      x: "right",
      mode: "",
      timeout: 10000,
      text: "",
      show: true,
      showSearch: false,
      addHourDialog: false,
      loading: false,
      loadingSearch: false,
      search: "",
      showLoader: false,
      editHourDialog: false,
      valid: true,
      disabled: true,
      pagination: {
8e8d14254   Shikha Mishra   Cleared data whil...
240
        rowsPerPage: 10,
7fea6db0b   Shikha Mishra   added feature of ...
241
      },
8e8d14254   Shikha Mishra   Cleared data whil...
242
      hourRules: [(v) => !!v || "Field is required"],
7fea6db0b   Shikha Mishra   added feature of ...
243
244
245
246
247
248
  
      headers: [
        {
          align: "",
          text: "No",
          sortable: false,
8e8d14254   Shikha Mishra   Cleared data whil...
249
          value: "No",
7fea6db0b   Shikha Mishra   added feature of ...
250
251
252
253
254
        },
        {
          text: "Hourly Grades",
          value: "hourlyGrades",
          sortable: false,
8e8d14254   Shikha Mishra   Cleared data whil...
255
          align: "center",
7fea6db0b   Shikha Mishra   added feature of ...
256
257
258
259
260
        },
        {
          text: "Hourly Rate",
          value: "hourlyRate",
          sortable: false,
8e8d14254   Shikha Mishra   Cleared data whil...
261
          align: "center",
7fea6db0b   Shikha Mishra   added feature of ...
262
        },
8e8d14254   Shikha Mishra   Cleared data whil...
263
        { text: "Action", value: "", sortable: false, align: "center" },
7fea6db0b   Shikha Mishra   added feature of ...
264
265
266
      ],
      hourlyTypes: [],
      hourlyData: [],
8e8d14254   Shikha Mishra   Cleared data whil...
267
      editedItem: {},
7fea6db0b   Shikha Mishra   added feature of ...
268
    }),
8e8d14254   Shikha Mishra   Cleared data whil...
269
270
271
272
273
274
275
    watch: {
      addHourDialog: function (val) {
        if (!val) {
          this.hourlyTypes = [];
        }
      },
    },
7fea6db0b   Shikha Mishra   added feature of ...
276
    methods: {
8e8d14254   Shikha Mishra   Cleared data whil...
277
      close() {
7fea6db0b   Shikha Mishra   added feature of ...
278
279
        this.editHourDialog = false;
      },
8e8d14254   Shikha Mishra   Cleared data whil...
280
281
      closeAddHourModel() {
        this.addHourDialog = false;
01a4a5246   Shikha Mishra   When the modal wa...
282
        //   this.hourlyData = [];
8e8d14254   Shikha Mishra   Cleared data whil...
283
284
        this.hourlyTypes = [];
      },
7fea6db0b   Shikha Mishra   added feature of ...
285
286
287
      submit() {
        var Hour = {
          hourlyGrades: this.hourlyTypes.hourlyGrades,
8e8d14254   Shikha Mishra   Cleared data whil...
288
          hourlyRate: this.hourlyTypes.hourlyRate,
7fea6db0b   Shikha Mishra   added feature of ...
289
290
291
292
293
        };
        if (this.$refs.form.validate()) {
          this.loading = true;
          http()
            .post("/createHourly", Hour, {
8e8d14254   Shikha Mishra   Cleared data whil...
294
              headers: { Authorization: "Bearer " + this.token },
7fea6db0b   Shikha Mishra   added feature of ...
295
            })
8e8d14254   Shikha Mishra   Cleared data whil...
296
            .then((response) => {
7fea6db0b   Shikha Mishra   added feature of ...
297
298
299
300
301
302
303
304
305
              this.snackbar = true;
              this.text = response.data.message;
              this.getHourlyList();
              this.color = "green";
              this.addHourDialog = false;
              // this.color = "success";
              this.clear();
              this.loading = false;
            })
8e8d14254   Shikha Mishra   Cleared data whil...
306
            .catch((error) => {
860da881d   Shikha Mishra   comment all consoles
307
              // console.log("error", error);
7fea6db0b   Shikha Mishra   added feature of ...
308
309
310
311
312
313
314
315
316
317
318
319
              this.snackbar = true;
              this.color = "red";
              // this.text = error.response.data.message;
              this.loading = false;
            });
        }
      },
      getHourlyList() {
        this.showLoader = true;
        this.loadingSearch = true;
        http()
          .get("/getHourlyList", {
8e8d14254   Shikha Mishra   Cleared data whil...
320
            headers: { Authorization: "Bearer " + this.token },
7fea6db0b   Shikha Mishra   added feature of ...
321
          })
8e8d14254   Shikha Mishra   Cleared data whil...
322
          .then((response) => {
7fea6db0b   Shikha Mishra   added feature of ...
323
324
325
326
            this.hourlyData = response.data.data;
            this.showLoader = false;
            this.loadingSearch = false;
          })
8e8d14254   Shikha Mishra   Cleared data whil...
327
          .catch((error) => {
7fea6db0b   Shikha Mishra   added feature of ...
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
            // console.log("err====>", err);
            this.showLoader = false;
            this.loadingSearch = false;
            this.snackbar = true;
            this.text = error.response.data.message;
            if (error.response.status === 401) {
              this.$router.replace({ path: "/" });
              this.$store.dispatch("setToken", null);
              this.$store.dispatch("Id", null);
            }
          });
      },
  
      editItem(item) {
        this.editedIndex = this.hourlyData.indexOf(item);
        this.editedItem = Object.assign({}, item);
        this.editHourDialog = true;
      },
      deleteItem(item) {
        let deleteGrade = {
8e8d14254   Shikha Mishra   Cleared data whil...
348
          hourlyId: item._id,
7fea6db0b   Shikha Mishra   added feature of ...
349
350
351
352
353
        };
        http()
          .delete(
            "/deleteHourly",
            confirm("Are you sure you want to delete this?") && {
8e8d14254   Shikha Mishra   Cleared data whil...
354
              params: deleteGrade,
7fea6db0b   Shikha Mishra   added feature of ...
355
356
357
            },
            {
              headers: {
8e8d14254   Shikha Mishra   Cleared data whil...
358
359
                Authorization: "Bearer " + this.token,
              },
7fea6db0b   Shikha Mishra   added feature of ...
360
361
            }
          )
8e8d14254   Shikha Mishra   Cleared data whil...
362
          .then((response) => {
7fea6db0b   Shikha Mishra   added feature of ...
363
            this.snackbar = true;
8e8d14254   Shikha Mishra   Cleared data whil...
364
            //   this.text = "Successfully Delete Salary ";
7fea6db0b   Shikha Mishra   added feature of ...
365
366
367
368
            this.text = response.data.message;
            this.color = "green";
            this.getHourlyList();
          })
8e8d14254   Shikha Mishra   Cleared data whil...
369
          .catch((error) => {
860da881d   Shikha Mishra   comment all consoles
370
            //   console.log("error", error);
7fea6db0b   Shikha Mishra   added feature of ...
371
372
373
374
375
376
377
            this.snackbar = true;
            this.text = error.response.data.message;
            this.color = "red";
          });
      },
  
      save() {
8e8d14254   Shikha Mishra   Cleared data whil...
378
379
380
381
382
        var updateHourly = {
          hourlyId: this.editedItem._id,
          hourlyGrades: this.editedItem.hourlyGrades,
          hourlyRate: this.editedItem.hourlyRate,
        };
7fea6db0b   Shikha Mishra   added feature of ...
383
384
385
        http()
          .put("/updateHourly", updateHourly, {
            headers: {
8e8d14254   Shikha Mishra   Cleared data whil...
386
387
              Authorization: "Bearer " + this.token,
            },
7fea6db0b   Shikha Mishra   added feature of ...
388
          })
8e8d14254   Shikha Mishra   Cleared data whil...
389
390
          .then((response) => {
            //   this.text = "Successfully Edit Notification";
7fea6db0b   Shikha Mishra   added feature of ...
391
392
393
394
395
396
397
            this.getHourlyList();
            this.close();
            this.snackbar = true;
            this.text = response.data.message;
            this.color = "green";
            this.editHourDialog = false;
          })
8e8d14254   Shikha Mishra   Cleared data whil...
398
          .catch((error) => {
860da881d   Shikha Mishra   comment all consoles
399
            //   console.log("error", error);
7fea6db0b   Shikha Mishra   added feature of ...
400
            this.snackbar = true;
8e8d14254   Shikha Mishra   Cleared data whil...
401
            //   this.text = error.response.data.message;
860da881d   Shikha Mishra   comment all consoles
402
403
404
            this.snackbar = true;
            this.color = "error";
            this.text = error.response.data.message;
7fea6db0b   Shikha Mishra   added feature of ...
405
406
407
408
409
410
411
412
413
414
415
416
417
          });
      },
  
      displaySearch() {
        (this.show = false), (this.showSearch = true);
      },
      closeSearch() {
        this.showSearch = false;
        this.show = true;
        this.search = "";
      },
      clear() {
        this.$refs.form.reset();
8e8d14254   Shikha Mishra   Cleared data whil...
418
      },
7fea6db0b   Shikha Mishra   added feature of ...
419
420
421
422
    },
    mounted() {
      this.token = this.$store.state.token;
      this.getHourlyList();
8e8d14254   Shikha Mishra   Cleared data whil...
423
    },
7fea6db0b   Shikha Mishra   added feature of ...
424
425
426
427
428
  };
  </script>
  
  <style scoped>
  </style>