Blame view
src/pages/Account/paymentHistory.vue
9.23 KB
687e0b929
|
1 |
<template> |
68d742034
|
2 |
<v-container fluid class="body-color"> |
acb6c9e2b
|
3 |
<!-- ****** Edit Payment History ****** --> |
db965de89
|
4 |
<v-dialog v-model="editPaymentDialog" max-width="400px" persistent> |
acb6c9e2b
|
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<v-card flat class="card-style pa-2" dark> <v-layout> <v-flex xs12> <label class="title text-xs-center">Edit Payment History</label> <v-icon size="24" class="right" @click="editPaymentDialog = 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">Amount:</label> </v-flex> <v-flex xs8 sm7 class="ml-3"> <v-text-field |
109a6218c
|
21 |
v-model="editedItem.paidAmount" |
acb6c9e2b
|
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 |
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">Method:</label> </v-flex> <v-flex xs8 sm7 class="ml-3"> <v-select :items="paymentMethod" v-model="editedItem.paymentMethod" label="please fill this field" required ></v-select> </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 Payment History</v-btn> <v-spacer></v-spacer> </v-layout> </v-flex> </v-layout> </v-container> </v-form> </v-card> </v-dialog> <!-- ****** PAYMENT HISTORY TABLE ****** --> |
68d742034
|
57 58 59 60 61 |
<v-toolbar color="transparent" flat> <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
|
62 |
<img src="/static/icon/search.png" alt="icon" /> |
68d742034
|
63 64 65 |
</v-avatar> </v-btn> </v-card-title> |
612b79bb4
|
66 |
<v-flex xs8 sm8 md3 lg2 v-if="showSearch"> |
687e0b929
|
67 |
<v-layout> |
860da881d
|
68 69 70 71 72 73 74 |
<v-text-field autofocus v-model="search" label="Search" prepend-inner-icon="search" color="primary" ></v-text-field> |
68d742034
|
75 |
<v-icon @click="closeSearch" color="error">close</v-icon> |
687e0b929
|
76 |
</v-layout> |
68d742034
|
77 78 |
</v-flex> </v-toolbar> |
687e0b929
|
79 80 81 82 83 84 85 |
<v-data-table :headers="headers" :items="paymentHistory" :pagination.sync="pagination" :search="search" > <template slot="items" slot-scope="props"> |
68d742034
|
86 |
<tr class="tr"> |
acb6c9e2b
|
87 88 |
<td class="td td-row">{{ props.index + 1 }}</td> <td class="td td-row text-xs-center">{{ props.item.studentId.name }}</td> |
68d742034
|
89 |
<td class="td td-row text-xs-center">{{ props.item.classId.classNum }}</td> |
acb6c9e2b
|
90 |
<td class="td td-row text-xs-center">{{ props.item.feeType.feeTypeName }}</td> |
68d742034
|
91 |
<td class="td td-row text-xs-center">{{ props.item.paymentMethod }}</td> |
0e46192a0
|
92 |
<td class="td td-row text-xs-center">{{ props.item.feeType.paidAmount }}</td> |
68d742034
|
93 |
<td class="td td-row text-xs-center">{{ dates(props.item.date) }}</td> |
acb6c9e2b
|
94 95 96 97 98 |
<td class="td td-row text-xs-center"> <span> <v-tooltip top> <img slot="activator" |
109a6218c
|
99 100 |
style="cursor:pointer; width:20px; height:18px;" class="mr-3" |
acb6c9e2b
|
101 |
@click="editItem(props.item)" |
109a6218c
|
102 |
src="/static/icon/edit.png" |
acb6c9e2b
|
103 104 105 106 107 108 |
/> <span>Edit</span> </v-tooltip> <v-tooltip top> <img slot="activator" |
109a6218c
|
109 110 |
style="cursor:pointer;width:20px; height:20px;" class="mr-3" |
acb6c9e2b
|
111 |
@click="deleteItem(props.item)" |
109a6218c
|
112 |
src="/static/icon/delete.png" |
acb6c9e2b
|
113 114 115 116 117 |
/> <span>Delete</span> </v-tooltip> </span> </td> |
68d742034
|
118 |
</tr> |
687e0b929
|
119 120 121 122 123 124 125 126 127 128 129 |
</template> <v-alert slot="no-results" :value="true" color="error" icon="warning" >Your search for "{{ search }}" found no results.</v-alert> </v-data-table> <div class="loader" v-if="showLoader"> <v-progress-circular indeterminate color="white"></v-progress-circular> </div> |
59793b95a
|
130 131 132 133 134 135 136 137 |
<v-snackbar :timeout="timeout" :top="y === 'top'" :right="x === 'right'" :vertical="mode === 'vertical'" v-model="snackbar" :color="color" >{{ text }}</v-snackbar> |
68d742034
|
138 |
</v-container> |
687e0b929
|
139 140 141 142 143 144 145 146 |
</template> <script> import http from "@/Services/http.js"; import moment from "moment"; export default { data: () => ({ |
acb6c9e2b
|
147 |
snackbar: false, |
687e0b929
|
148 149 |
showLoader: false, search: "", |
68d742034
|
150 151 |
show: true, showSearch: false, |
687e0b929
|
152 |
pagination: { |
860da881d
|
153 |
rowsPerPage: 10, |
687e0b929
|
154 |
}, |
acb6c9e2b
|
155 |
paymentMethod: ["Cash", "Cheque"], |
687e0b929
|
156 157 158 |
headers: [ { text: "No", |
68d742034
|
159 |
align: "", |
687e0b929
|
160 |
sortable: false, |
860da881d
|
161 |
value: "No", |
687e0b929
|
162 |
}, |
acb6c9e2b
|
163 164 165 166 |
{ text: "Student", value: "name", sortable: false, |
860da881d
|
167 |
align: "center", |
acb6c9e2b
|
168 |
}, |
687e0b929
|
169 |
{ text: "Class", value: "class", sortable: false, align: "center" }, |
ab54b5656
|
170 171 172 173 |
{ text: "Fee Type", value: "feeTypeName", sortable: false, |
860da881d
|
174 |
align: "center", |
ab54b5656
|
175 176 177 178 179 |
}, { text: "Method", value: "paymentMethod", sortable: false, |
860da881d
|
180 |
align: "center", |
ab54b5656
|
181 |
}, |
687e0b929
|
182 183 184 185 |
{ text: "Paid Amount", value: "totalPaidAmount", sortable: false, |
860da881d
|
186 |
align: "center", |
687e0b929
|
187 188 189 190 191 |
}, { text: "Date", value: "date", sortable: false, |
860da881d
|
192 |
align: "center", |
acb6c9e2b
|
193 |
}, |
860da881d
|
194 |
{ text: "Action", value: "", sortable: false, align: "center" }, |
687e0b929
|
195 |
], |
68d742034
|
196 |
paymentHistory: [], |
acb6c9e2b
|
197 198 |
addPaymentHistoryDialog: "", editPaymentDialog: false, |
59793b95a
|
199 200 201 202 203 204 205 |
editedItem: {}, y: "top", x: "right", mode: "", timeout: 5000, text: "", color: "", |
860da881d
|
206 |
snackbar: false, |
687e0b929
|
207 208 |
}), methods: { |
acb6c9e2b
|
209 210 211 |
editItem(item) { this.editedIndex = this.paymentHistory.indexOf(item); this.editedItem = Object.assign({}, item); |
109a6218c
|
212 |
this.editedItem.paidAmount = this.editedItem.feeType.paidAmount; |
acb6c9e2b
|
213 214 215 216 217 |
this.editPaymentDialog = true; }, deleteItem(item) { let deleteGrade = { invoiceId: item._id, |
860da881d
|
218 |
feeTypeId: item.feeType._id, |
acb6c9e2b
|
219 220 221 |
}; http() .put( |
109a6218c
|
222 223 |
"/deleteFeeType", confirm("Are you sure you want to delete this?") && deleteGrade, |
acb6c9e2b
|
224 225 |
{ headers: { |
860da881d
|
226 227 |
Authorization: "Bearer " + this.token, }, |
acb6c9e2b
|
228 229 |
} ) |
860da881d
|
230 |
.then((response) => { |
acb6c9e2b
|
231 232 233 234 235 236 |
this.snackbar = true; // this.text = "Successfully Delete Salary "; this.text = response.data.message; this.color = "green"; this.getPaymentHistory(); }) |
860da881d
|
237 238 |
.catch((error) => { // console.log("error", error); |
acb6c9e2b
|
239 240 241 242 243 |
this.snackbar = true; this.text = error.response.data.message; this.color = "red"; }); }, |
860da881d
|
244 |
dates: function (date) { |
687e0b929
|
245 246 247 248 249 250 |
return moment(date).format("MMMM DD, YYYY"); }, getPaymentHistory() { this.showLoader = true; var token = this.$store.state.token; http() |
acb6c9e2b
|
251 |
.get("/getPaymentHistory", { |
99cd79184
|
252 253 |
params: { paymentStatus: "FULLY_PAID", |
860da881d
|
254 |
schoolId: this.$store.state.schoolId, |
99cd79184
|
255 |
}, |
860da881d
|
256 |
headers: { Authorization: "Bearer " + token }, |
687e0b929
|
257 |
}) |
860da881d
|
258 |
.then((response) => { |
687e0b929
|
259 260 261 |
this.paymentHistory = response.data.data; this.showLoader = false; }) |
860da881d
|
262 |
.catch((error) => { |
687e0b929
|
263 264 265 266 267 |
this.showLoader = false; if (error.response.status === 401) { this.$router.replace({ path: "/" }); this.$store.dispatch("setToken", null); this.$store.dispatch("Id", null); |
00e4bc4e1
|
268 |
this.$store.dispatch("Role", null); |
687e0b929
|
269 270 |
} }); |
68d742034
|
271 |
}, |
acb6c9e2b
|
272 273 274 275 |
save() { var updatePayment = { invoiceId: this.editedItem._id, feeTypeId: this.editedItem.feeType._id, |
109a6218c
|
276 |
paidAmount: this.editedItem.paidAmount, |
860da881d
|
277 |
paymentMethod: this.editedItem.paymentMethod, |
acb6c9e2b
|
278 279 280 281 |
}; http() .put("/updateFeeType", updatePayment, { headers: { |
860da881d
|
282 283 |
Authorization: "Bearer " + this.token, }, |
acb6c9e2b
|
284 |
}) |
860da881d
|
285 |
.then((response) => { |
acb6c9e2b
|
286 287 288 289 290 291 |
this.getPaymentHistory(); this.snackbar = true; this.text = response.data.message; this.color = "green"; this.editPaymentDialog = false; }) |
860da881d
|
292 293 |
.catch((error) => { // console.log("error", error.response); |
acb6c9e2b
|
294 |
this.snackbar = true; |
59793b95a
|
295 |
this.text = error.response.data.message; |
acb6c9e2b
|
296 297 298 |
this.color = "red"; }); }, |
68d742034
|
299 |
displaySearch() { |
109a6218c
|
300 301 |
this.show = false; this.showSearch = true; |
68d742034
|
302 303 304 305 306 |
}, closeSearch() { this.showSearch = false; this.show = true; this.search = ""; |
860da881d
|
307 |
}, |
687e0b929
|
308 309 |
}, mounted() { |
acb6c9e2b
|
310 |
this.token = this.$store.state.token; |
687e0b929
|
311 |
this.getPaymentHistory(); |
860da881d
|
312 |
}, |
687e0b929
|
313 |
}; |
68d742034
|
314 |
</script> |