Blame view
src/pages/Dashboard.vue
12 KB
93a68cfa1
|
1 2 |
<template> <v-tabs |
ee83012b3
|
3 4 |
grow slider-color="black" |
93a68cfa1
|
5 |
> |
ee83012b3
|
6 7 |
<v-tab ripple @click="activeTab('existing')" v-bind:class="{ active: isActive }" id="tab"> |
93a68cfa1
|
8 9 |
Existing user </v-tab> |
ee83012b3
|
10 11 |
<v-tab ripple @click="activeTab('new')" v-bind:class="{ active: newActive }" id="tab1"> |
93a68cfa1
|
12 13 |
Add New Users </v-tab> |
ee83012b3
|
14 |
|
93a68cfa1
|
15 |
<v-tab-item> |
c35a8dafd
|
16 17 18 19 20 21 22 23 |
<v-dialog v-model="dialog" max-width="500px"> <v-toolbar color="white"> <v-spacer></v-spacer> <v-toolbar-title>Edit Profile</v-toolbar-title> <v-spacer></v-spacer> </v-toolbar> <v-card> <v-flex align-center justify-center layout text-xs-center> |
8fc85e8ec
|
24 |
<v-avatar size="50px" style="position:absolute; top:10px; "> |
269061695
|
25 |
<img src="/static/icon/user.png"/> </v-avatar> |
c35a8dafd
|
26 27 |
</v-flex> <v-card-text> |
e2e46164f
|
28 |
<v-container> |
c35a8dafd
|
29 |
<v-layout wrap justify-center> |
e2e46164f
|
30 |
<v-flex xs12 sm9> |
c35a8dafd
|
31 |
<v-form> |
e2e46164f
|
32 33 34 35 36 37 38 39 |
<v-layout style="position:relative; top:15px;"> <v-flex xs4 class="pt-4 subheading"> <label>First Name: </label> </v-flex> <v-flex xs8> <v-text-field v-model="editedItem.Name" |
269061695
|
40 |
v-validate="'required'" |
e2e46164f
|
41 |
:rules="nameRules" |
c35a8dafd
|
42 |
data-vv-name="Name" |
e2e46164f
|
43 44 45 46 47 48 49 |
required ></v-text-field></v-flex></v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> <label>Last Name: </label> </v-flex> <v-flex xs8> |
c35a8dafd
|
50 |
<v-text-field |
c35a8dafd
|
51 |
v-model="editedItem.LName" |
e2e46164f
|
52 53 54 55 56 57 58 59 60 61 62 63 64 |
v-validate="'required'" :rules="lnameRules" data-vv-name="Name" required ></v-text-field></v-flex></v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> <label>Email ID: </label> </v-flex> <v-flex xs8> <v-text-field v-model="editedItem.Email" |
c35a8dafd
|
65 |
v-validate="'required|email'" |
e2e46164f
|
66 67 68 69 70 71 72 73 74 75 76 77 78 |
:rules="emailRules" data-vv-name="E-mail" required ></v-text-field></v-flex></v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> <label>Date of Birth: </label> </v-flex> <v-flex xs8> <v-text-field v-model="editedItem.DOB" :rules="[rules.required, rules.min]" ></v-text-field></v-flex></v-layout> |
c35a8dafd
|
79 80 81 82 83 84 85 86 |
<v-card-actions> <v-btn round dark @click.native="close">Cancel</v-btn> <v-spacer></v-spacer> <v-btn round dark @click.native="save">Save</v-btn> </v-card-actions> </v-form> |
e2e46164f
|
87 |
</v-flex> |
c35a8dafd
|
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
</v-layout> </v-container> </v-card-text> </v-card> </v-dialog> <v-dialog v-model="dialog1" max-width="500px"> <v-toolbar color="white"> <v-spacer></v-spacer> <v-toolbar-title>Profile</v-toolbar-title> <v-spacer></v-spacer> <v-icon @click="close1">close</v-icon> </v-toolbar> <v-card> <v-flex align-center justify-center layout text-xs-center> |
e2e46164f
|
105 |
<v-avatar size="50px" style="position:absolute; top:20px;"> |
269061695
|
106 |
<img src="/static/icon/user.png"/> </v-avatar> |
c35a8dafd
|
107 108 109 110 |
</v-flex> <v-card-text> <v-container grid-list-md> <v-layout wrap justify-center> |
e2e46164f
|
111 |
<v-flex offset-xs3 id="flex"> |
c35a8dafd
|
112 113 |
<br><br> |
e2e46164f
|
114 |
<table style="position:absolute; top:110px;"> |
c35a8dafd
|
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
<th> <tr><h5><b>First Name:</b></h5></tr><br> <tr><h5><b>Last Name:</b></h5></tr><br> <tr><h5><b>Email:</b></h5></tr><br> <tr><h5><b>Date Of Birth:</b></h5></tr> </th> <th> <tr><td><h5><b>{{ editedItem.Name }}</b></h5></td></tr><br> <tr> <td><h5><b>{{ editedItem.LName }}</b></h5></td></tr><br> <tr><td><h5><b>{{ editedItem.Email }}</b></h5></td></tr><br> <tr><td><h5><b>{{ editedItem.DOB }}</b></h5></td></tr> </th> </table> </v-flex> </v-layout> </v-container> </v-card-text> </v-card> </v-dialog> |
c35a8dafd
|
136 |
|
269061695
|
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
<v-dialog v-model="dialog2" max-width="800px"> <v-card> <div id="dialog"> <h4><b> Report </b> </h4> <h5 id="name"><b>Patient Name:</b> {{ editedItem.Name+' '+editedItem.LName }}</h5> <h5 id="m">Select Month:</h5> <v-btn flat id="G">Generate</v-btn> <v-spacer></v-spacer> <v-icon id="icon" @click="close2">close</v-icon> <span id="bt"> <v-btn flat>1 month</v-btn> <v-btn flat>3 Month</v-btn> <v-btn flat>6 Month</v-btn> <v-btn flat>12 Month</v-btn> |
789f8298f
|
152 |
<img id="e" @click="mail" src="/static/icon/email1.png"/> |
269061695
|
153 |
|
789f8298f
|
154 |
<img id="d" @click="download" src="/static/icon/download1.png"/> |
269061695
|
155 |
</span> |
8fc85e8ec
|
156 157 158 |
<v-card-text> <h5 style="position: absolute; top:275px; left:270px"><b>Select month to generate report</b></h5> </v-card-text> |
269061695
|
159 160 |
</div> </v-card> |
269061695
|
161 |
</v-dialog> |
93a68cfa1
|
162 |
<v-data-table |
c35a8dafd
|
163 164 |
:headers="headers" :items="desserts" |
c35a8dafd
|
165 166 |
> <template slot="items" slot-scope="props"> |
e2e46164f
|
167 168 169 |
<td id="td" class="text-xs-center">{{ props.item.No }}</td> <td id="td" class="text-xs-center">{{ props.item.Name+' '+props.item.LName }}</td> <td id="td" class="text-xs-center">{{ props.item.Email }}</td> |
269061695
|
170 171 |
|
4413a8d93
|
172 |
<td class="text-xs-center"> |
269061695
|
173 174 |
<span> |
4413a8d93
|
175 176 177 |
<img style="cursor:pointer; height:20px; " class="mr-5" @click="report(props.item)" src="/static/icon/List1.png"/> <img style="cursor:pointer; width:25px; height:18px; " class="mr-5" @click="profile(props.item)" src="/static/icon/eye1.png"/> <img style="cursor:pointer; width:20px; height:18px; " class="mr-5" @click="editItem(props.item)" src="/static/icon/edit1.png"/> |
269061695
|
178 179 |
<img style="cursor:pointer; height:20px; " class="mr-2" @click="deleteItem(props.item)" src="/static/icon/delete1.png"/> </span> |
c35a8dafd
|
180 |
</td> |
269061695
|
181 |
|
c35a8dafd
|
182 |
</template> |
4413a8d93
|
183 |
|
c35a8dafd
|
184 |
</v-data-table> |
e2e46164f
|
185 |
|
93a68cfa1
|
186 187 188 189 190 |
</v-tab-item> <v-tab-item> <v-flex xs12 sm6 offset-sm3> |
04e3fbc56
|
191 |
<v-card flat> |
04e3fbc56
|
192 |
<v-container fluid fill-height> |
93a68cfa1
|
193 |
<v-layout align-center> |
04e3fbc56
|
194 195 |
<v-flex xs12 sm8 offset-sm2> <v-flex offset-sm5> |
269061695
|
196 197 |
<v-avatar size="55px"> <img src="/static/icon/user.png"/> </v-avatar> |
04e3fbc56
|
198 |
</v-flex> |
c35a8dafd
|
199 |
<v-form ref="form" v-model="valid" lazy-validation> |
4413a8d93
|
200 201 |
<v-layout> <v-flex xs4 class="pt-4 subheading"> |
e2e46164f
|
202 |
<label>First Name: </label> |
4413a8d93
|
203 204 205 206 207 208 209 210 211 212 213 214 215 216 |
</v-flex> <v-flex xs8> <v-text-field v-model="Name" :rules="nameRules" required ></v-text-field> </v-flex> </v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> <label>Last Name: </label> </v-flex> <v-flex xs8> |
c35a8dafd
|
217 |
<v-text-field |
4413a8d93
|
218 |
:rules="lnameRules" |
c35a8dafd
|
219 |
v-model="LName" |
c35a8dafd
|
220 221 |
required ></v-text-field> |
4413a8d93
|
222 223 224 225 |
</v-flex> </v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> |
e2e46164f
|
226 |
<label>Email ID: </label> |
4413a8d93
|
227 228 |
</v-flex> <v-flex xs8> |
c35a8dafd
|
229 |
<v-text-field |
c35a8dafd
|
230 |
:rules="emailRules" |
4413a8d93
|
231 |
v-model="email" |
c35a8dafd
|
232 |
required |
4413a8d93
|
233 234 235 236 237 238 239 240 241 |
></v-text-field> </v-flex> </v-layout> <v-layout> <v-flex xs4 class="pt-4 subheading"> <label>Date of Birth: </label> </v-flex> <v-flex xs8> |
93a68cfa1
|
242 |
<v-text-field |
04e3fbc56
|
243 |
:rules="[rules.required, rules.min]" |
c35a8dafd
|
244 |
v-model="DOB" |
4413a8d93
|
245 246 247 248 249 |
required ></v-text-field> </v-flex> </v-layout> <v-card-actions> |
c35a8dafd
|
250 251 252 253 254 255 |
<v-btn @click="clear" round dark>clear</v-btn> <v-spacer></v-spacer> <v-btn @click="submit" round dark> Add </v-btn> </v-card-actions> </v-form> |
93a68cfa1
|
256 257 258 259 260 |
</v-flex> </v-layout> </v-container> </v-card> </v-flex> |
c35a8dafd
|
261 |
</v-tab-item> |
93a68cfa1
|
262 263 264 265 266 267 |
</v-tabs> </template> <script> |
c35a8dafd
|
268 |
import axios from 'axios'; |
93a68cfa1
|
269 |
export default { |
93a68cfa1
|
270 |
data: () => ({ |
c35a8dafd
|
271 272 |
No: '', Name: '', |
04e3fbc56
|
273 |
LName: '', |
c35a8dafd
|
274 |
Email: '', |
93a68cfa1
|
275 |
DOB: '', |
93a68cfa1
|
276 277 |
search: '', dialog: false, |
c35a8dafd
|
278 279 280 |
dialog1: false, dialog2: false, valid: true, |
ee83012b3
|
281 282 |
isActive: true, newActive: false, |
4413a8d93
|
283 284 285 |
// pagination: { // rowsPerPage: 5 // }, |
04e3fbc56
|
286 287 |
rules: { required: value => !!value || 'This field is Required.', |
ee83012b3
|
288 289 290 291 292 293 |
min: v => (/^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/.test( v ) && v.length > 0) || 'Please enter a date in the format dd/mm/yyyy' |
04e3fbc56
|
294 |
}, |
4413a8d93
|
295 |
nameRules: [v => !!v || ' First Name is required'], |
c35a8dafd
|
296 297 298 299 300 |
email: '', emailRules: [ v => !!v || 'E-mail is required', v => /.+@.+/.test(v) || 'E-mail must be valid' ], |
4413a8d93
|
301 |
lnameRules: [v => !!v || ' Last Name is required'], |
93a68cfa1
|
302 303 304 |
headers: [ { text: 'No', |
e2e46164f
|
305 |
align: 'center', |
93a68cfa1
|
306 |
sortable: false, |
c35a8dafd
|
307 |
value: 'No' |
93a68cfa1
|
308 |
}, |
e2e46164f
|
309 310 311 |
{ text: 'Name', value: 'Name', sortable: false, align: 'center' }, { text: 'Email', value: 'Email', sortable: false, align: 'center' }, { text: '', value: '', sortable: false, align: 'center' } |
c35a8dafd
|
312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 |
], desserts: [ { No: 1, Name: 'Amit', LName: 'goyal', Email: 'jsi@gmail.com', DOB: '22/09/1996' }, { No: 2, Name: 'Sumit', LName: 'kumar', Email: 'aasi@gmail.com', DOB: '16/09/1997' |
e2e46164f
|
327 |
} |
93a68cfa1
|
328 |
], |
93a68cfa1
|
329 330 331 332 |
editedIndex: -1, editedItem: { No: '', Name: '', |
c35a8dafd
|
333 |
LName: '', |
ee83012b3
|
334 |
Email: '' |
93a68cfa1
|
335 336 337 338 |
}, defaultItem: { No: '', Name: '', |
c35a8dafd
|
339 |
LName: '', |
ee83012b3
|
340 |
Email: '' |
c35a8dafd
|
341 |
} |
93a68cfa1
|
342 |
}), |
4413a8d93
|
343 344 345 346 347 348 349 350 |
// computed: { // pages () { // if (this.pagination.rowsPerPage == null || // this.pagination.totalItems == null // ) return 0; // return Math.ceil(this.pagination.totalItems / this.pagination.rowsPerPage); // } // }, |
93a68cfa1
|
351 |
methods: { |
93a68cfa1
|
352 353 354 355 356 |
editItem (item) { this.editedIndex = this.desserts.indexOf(item); this.editedItem = Object.assign({}, item); this.dialog = true; }, |
c35a8dafd
|
357 358 359 360 361 362 363 364 365 |
profile (item) { this.editedIndex = this.desserts.indexOf(item); this.editedItem = Object.assign({}, item); this.dialog1 = true; }, report (item) { this.editedIndex = this.desserts.indexOf(item); this.editedItem = Object.assign({}, item); this.dialog2 = true; |
a259e694f
|
366 |
}, |
93a68cfa1
|
367 368 369 370 371 372 |
deleteItem (item) { const index = this.desserts.indexOf(item); confirm('Are you sure you want to delete this item?') && this.desserts.splice(index, 1); }, |
ee83012b3
|
373 374 375 376 377 378 379 380 381 382 383 384 385 |
activeTab (type) { switch (type) { case 'existing': this.newActive = false; this.isActive = true; break; default: this.newActive = true; this.isActive = false; break; } }, |
93a68cfa1
|
386 387 388 389 390 391 392 393 |
close () { this.dialog = false; setTimeout(() => { this.editedItem = Object.assign({}, this.defaultItem); this.editedIndex = -1; }, 300); }, |
c35a8dafd
|
394 395 396 397 398 399 400 401 402 403 404 405 406 |
close1 () { this.dialog1 = false; }, close2 () { this.dialog2 = false; }, submit () { if (this.$refs.form.validate()) { // Native form submission is not yet supported axios.post('/api/submit', { Name: this.Name, LName: this.LName, Email: this.Email, |
ee83012b3
|
407 |
DOB: this.DOB |
c35a8dafd
|
408 409 410 |
}); } }, |
789f8298f
|
411 |
mail () { |
4413a8d93
|
412 |
// this.editedIndex = this.desserts.indexOf(); |
789f8298f
|
413 414 |
}, download () { |
4413a8d93
|
415 416 |
// this.editedIndex = this.desserts.indexOf(); |
789f8298f
|
417 |
}, |
ee83012b3
|
418 419 420 |
clear () { this.$refs.form.reset(); }, |
93a68cfa1
|
421 422 423 424 425 426 427 428 |
save () { if (this.editedIndex > -1) { Object.assign(this.desserts[this.editedIndex], this.editedItem); } else { this.desserts.push(this.editedItem); } this.close(); } |
4413a8d93
|
429 |
}, |
93a68cfa1
|
430 |
}; |
93a68cfa1
|
431 |
</script> |
04e3fbc56
|
432 |
<style scoped> |
ee83012b3
|
433 |
.v-card__actions .v-btn { |
04e3fbc56
|
434 435 436 |
margin: 0 15px; min-width: 120px; } |
8fc85e8ec
|
437 |
|
ee83012b3
|
438 439 440 441 442 |
h4 { background-repeat: no-repeat; padding: 8px; margin: auto; font-size: 25px; |
269061695
|
443 |
} |
ee83012b3
|
444 445 446 447 |
#name { position: absolute; left: 100px; top: 17px; |
269061695
|
448 |
} |
ee83012b3
|
449 |
#icon { |
269061695
|
450 451 452 453 |
position: absolute; right: 8px; top: 8px; } |
ee83012b3
|
454 |
#m { |
269061695
|
455 456 457 458 |
position: relative; left: 135px; top: -11px; } |
ee83012b3
|
459 460 461 |
#G { position: absolute; top: 38px; |
269061695
|
462 |
} |
ee83012b3
|
463 |
#bt { |
269061695
|
464 |
position: relative; |
ee83012b3
|
465 466 |
top: -20px; left: 115px; |
269061695
|
467 |
} |
ee83012b3
|
468 469 470 |
#e { position: relative; right: -110px; |
269061695
|
471 472 473 |
height: 17px; cursor: pointer; } |
ee83012b3
|
474 475 476 477 478 |
#d { position: relative; right: -150px; height: 17px; cursor: pointer; |
269061695
|
479 480 |
} #td { |
ee83012b3
|
481 482 483 |
border: 1px solid #dddddd; text-align: left; padding: 8px; |
269061695
|
484 |
} |
ee83012b3
|
485 486 487 488 489 490 |
#dialog { height: 550px; } .active { background-color: black; color: white !important; |
269061695
|
491 |
} |
e2e46164f
|
492 493 494 |
#flex{ height: 300px; } |
04e3fbc56
|
495 |
</style> |